CoolBasic Classic: Kehitysuutisten kommentit

CoolBasiciin yleisesti liittyvä keskustelu.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by axu »

Näin ollen taulukoiden sisältöä ei kopioida sijoituksessa, mutta tähän on kuitenkin tulossa kätevä komento.
Jees, kauan kaipaamani toiminto(muitakin taulukkoihin liittyviä käteviä komentoja sais tulla) :P
Saa kai tuohon funktioon määrittää taulukon koon kuinka ison se voi vastaanottaa(en kyllä tällä hetkellä keksi kummempaa syytä siihen, mutta) esim.:

Code: Select all

Function Ratkaise_Sudoku(Taulukko(9, 9)) //Hyväksytään vain 9x9 kokoiset taulukot : )
...(Tähän joku hieno algoritmi)...
    Return Taulukko
End Function
Tuli vaan noista esimerkeistä mieleen, että kai cbc:hen on tulossa funktio, joka kertoo taulukon koon(Esim. ArraySize(Array(), Dimension=0), Dimension kertoo mistä ulottuvuudesta halutaan koko, jos 0, palautetaan ulottuvuuksien määrä)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Misthema »

En tiedä miksi, mutta hämmästelen taulukoiden käyttöä (siis näissä mitä on kerrottu/ehdotettu).
Ne kuitenkin toimivat selkeästi niinkin, ettei niitä tarvitse syöttää funktiolle mitenkään:

Code: Select all

Const dime1 = 10
Const dime2 = 2
Global taulu(dime1 , dime2)

Function PlaraaTaulu()
For i=0 To dime1
    For k=0 To dime2
        taulu(i , k) = Rand(0 , 100)
    Next
Next
// Tätä ei tarvitse edes palauttaa, koska taulu on globaali
EndFunction
Tai

Code: Select all

Global taulu() //Tyhjä taulukko(?)

Function PlaraaTaulu(x , y)
Redim taulu(x , y)
For e=0 To x
    For f=0 To y
        taulu(e , f) = Rand(0 , 100)
    Next
Next
// Tätäkään ei tarvitse palauttaa
EndFunction
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Dibalo »

Itselleni heräsi muutama kysymys taulukoista. Nämä ovat varmasti jo tarkoin suunniteltuja, mutta tiedote jätti paljon epäselvää.

Ensimmäinen kysymys on ehkä kaikkein vähäisin. Tiedotteessa mainitaan kyllä taulukon palauttaminen funktiosta, mutta esimerkeistä ei käy selväksi funktion allekirjoitus kyseisissä tapauksissa. Esimerkin koodeissa funktiolle ei ole määritettynä paluuarvoa, joka lienee oletuksena integer. Vai onko tämä harkittu ominaisuus? Entäpä, mistä kääntäjä tietää, pitääkö sen palauttaa taulukoita vai kokonaislukuja? Entäpä funktioita kutsuva osa ohjelmasta? Kokonaisluvun käyttäminen taulukkona tai toisinpäin ei ole varmaankaan kovin hyväksi ohjelman suorituksen kannalta.

Toinen kysymys koskee sijoitusoperaattoreita. Tiedotteessa kuvattu toiminnallisuus antaa vahvasti viitteitä automaattisesta roskien keruusta (garbage collector). Miksei tätä ominaisuutta voisi käyttää hyväksi myös taulukoiden palauttamiseksi funktioista? Entä miten "älykäs" tästä sijoitusoperaattoreiden automatiikasta on tulossa? Jos taulukon sijoittaa dynaamisesti luodun olion (tyypin?) sisään funktion sisällä, onko taulukko mahdollista palauttaa tämän avulla kutsuvaan funktioon (viittaus säilyy)?

Sitten viimeiseksi ehkä merkittävin simiin pistävä kohta. Tiedotteessa lukee seuraavasti: "//B:n sisältö menetetään? kyllä, CBC ei tarkista B:n ja Z:n "yhteensopivuutta" nyt B:ssä onkin Integer tyyppinen taulukko!" Tämä laitto ainakin itselläni hälytyskellot soimaan. Jos tyyppitarkistusta ei käytetä, niin kääntäjällä ei ole mitään mahdollisuutta pitää kirjaa, minkä tyyppinen taulukko muuttujanimen taakse on sijoitettu. Miten tämä muuttuja käyttäytyy ajonaikana kyseisessä tilanteessa. Esimerkki:

Code: Select all

Dim i(10)  As Integer
Dim f(10) As Float
i(1) = 3
f(1) = 3.5
...
If KEY_DOWN_F Then i = f      // sisältää nyt Float-taulukon
Print 2 * i(1)     // tulostaako nyt 6 vai 7.0??? ;)
Tästä käyttäytymisestä voimmekin helposti esittää jatkokysymyksen: jos vastaus olisi "7.0" niin tarkoitaako tämä sitä, että CBC osaa päätellä ajonaikana taulukkoihin sijoitetut tyypit? Miten nopeaa CBC:n logiikasta on tulossa, mikäli moinen olisi mahdollista? Oman käsitykseni mukaan tällainen ajonaikainen operaattoreiden päätteleminen on hieman hitaahkoa verrattuna esimerkiksi siihen, että operaattorikutsut on käännetty suoraan tavukoodiin. :)
The darkest spells can be found from
http://tunkkaus.blogspot.fi
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by JATothrim »

Dibalo wrote:Sitten viimeiseksi ehkä merkittävin simiin pistävä kohta. Tiedotteessa lukee seuraavasti: "//B:n sisältö menetetään? kyllä, CBC ei tarkista B:n ja Z:n "yhteensopivuutta" nyt B:ssä onkin Integer tyyppinen taulukko!" Tämä laitto ainakin itselläni hälytyskellot soimaan. Jos tyyppitarkistusta ei käytetä, niin kääntäjällä ei ole mitään mahdollisuutta pitää kirjaa, minkä tyyppinen taulukko muuttujanimen taakse on sijoitettu. Miten tämä muuttuja käyttäytyy ajonaikana kyseisessä tilanteessa. Esimerkki:

Code: Select all

Dim i(10)  As Integer
Dim f(10) As Float
i(1) = 3
f(1) = 3.5
...
If KEY_DOWN_F Then i = f      // sisältää nyt Float-taulukon
Print 2 * i(1)     // tulostaako nyt 6 vai 7.0??? ;)
Tästä käyttäytymisestä voimmekin helposti esittää jatkokysymyksen: jos vastaus olisi "7.0" niin tarkoitaako tämä sitä, että CBC osaa päätellä ajonaikana taulukkoihin sijoitetut tyypit? Miten nopeaa CBC:n logiikasta on tulossa, mikäli moinen olisi mahdollista? Oman käsitykseni mukaan tällainen ajonaikainen operaattoreiden päätteleminen on hieman hitaahkoa verrattuna esimerkiksi siihen, että operaattorikutsut on käännetty suoraan tavukoodiin. :)
Dibalo: CBC:n ajonaikainen toiminta tulee olemaan iihmeellistä. ;) Koodinpätkä taitaisi printata luultavasti "7.0" Itse vertaisin CBC:n taulukoita
Wahan CB:n muistipaloihin, mikä selittää aika paljon niiden toimintalogiikasta. Enempää en sano, mutta Zero osaa varmaankin selittää asian paremmin. (PLus. sijoitusoperaattorin toiminta oli "ylimääräistä tietoa", joka ei varsinaisesti liittynyt tiedotteeseen. Saatoin hyvin keksiä suuren osan sen toimintalogiikasta omasta päästäni. :mrgreen: )
EDIT:

Zero: "Arvon 3.5 lukeminen siis palauttaa luvun 1 080 033 280. Tämä on tietysti puhtaasti ohjelmoijan oma virhe."
Ohops, tietysti: ohjelma on käännetty käyttäämään integer operaatioita Dim i(10) As Integer taulukolle koko suorituksen ajan, eli se yrittää lukea floatteja integer tyyppisinä. (Floatit taas on tallennettu aivan eritavalla muistiin kuin kokonais luvut, mistä seuraa tuo outo arvo!) :)

Last edited by JATothrim on Sun Feb 28, 2010 7:15 pm, edited 1 time in total.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

Ensinäkään CoolBasic Classic ei ole vahvasti tyypitetty kieli vaan se on remake nykyisestä CoolBasicista. CoolBasic Classic on siksi täysin proseduraalinen kieli, joka asettaa tiettyjä vaatimuksia kielen suunnittelulle. Kaikki osoittimet esimerkiksi tallennetaan normaaliin kokonaislukumuuttujaan. Kääntäjä varmistaa kyllä tyyppiturvallisuuden niin pitkälle kuin mahdollista, mutta luonnollisesti osa näistä tarkastuksista joudutaan tekemään ajon aikana (tämä on toki pyritty minimoimaan). Raaka laskennallinen suorituskyky pystytään kuitenkin jo optimoimaan käännösvaiheessa, joten Classic:n ajonaikainen suorituskyky on yleisesti ottaen hyvä.

Silloin kun halutaan palauttaa taulukko funktiosta, kyseessä on aina osoitin, ja funktion pitää olla tyyppiä Integer (oletus). Mikään ei tietysti estä palauttamasta osoitinta paikallisesta taulukosta, mutta tämä kahva on invalidi heti kun sitä yritetään käyttää funktion ulkopuolelta.

Käyttäjä voi periaatteessa sijoittaa liukulukutyyppisen taulukon osoittimen kokonaislukutaulukkoon. Tällainen sijoitus on normaali osoitin->osoitin, eli kokonaisluku->kokonaisluku, ja koska kyseessä ei ole vahvasti tyypitetty kieli, kääntäjä päästää tämän läpi, ja tämä on tietoinen valinta. Dibalon esimerkkikoodissa tehdään sijoitus liukulukutaululukosta kokonaislukutaulukkoon. Arvon 3.5 lukeminen siis palauttaa luvun 1 080 033 280. Tämä on tietysti puhtaasti ohjelmoijan oma virhe.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Dibalo »

Zero wrote:Arvon 3.5 lukeminen siis palauttaa luvun 1 080 033 280. Tämä on tietysti puhtaasti ohjelmoijan oma virhe.
Hienoa, että CBC saa näinkin C:mäisiä ominaisuuksia! Voin vain kuvitella aloittelevien ohjelmoijien tuskalliset kommentit foorumille, kun mikään ei toimi niinkuin pitäisi. :mrgreen: Entä kuinka varmasti ajonaikainen kirjasto pystyy esimerkiksi estämään puskurin yli- tai alivuodot ja antamaan luotettavia virheraportteja, kun ohjelmoijille annetaan näin paljon vapauksia sörkkiä muistia? Mutta eikö tämä käyttäjän "vapaus" sodi alkuperäisen ("klassisen") CB:n ideaa vastaan? :?
The darkest spells can be found from
http://tunkkaus.blogspot.fi
Utelias

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Utelias »

Onks tää edennyt yhtää? Olisi kiva saada lisää tietoa :D
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by temu92 »

Joo kehitys on kokoajan käynnissä vaikka mitään ei aina postatakkaan. Joku joka tietää enemmän tekniikkapuolesta (ja luvan kanssa) voi kertoa varmaan enemmän.
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MrMonday »

Utelias wrote:Onks tää edennyt yhtää? Olisi kiva saada lisää tietoa :D
Ihan samaa olen itsekkin miettinyt, kun pitänyt hiljaista, mutta aikataulussa on pysytty, eli näillä näkymin tulee vielä tämän vuoden alkupuoliskolla?
Ja nyt vaikenen tässä ketjussa siksi kunnes on jotain uutta kommentoitavaa, ettei vallan offtopiciksi mene tämäkään ketju..
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Pettis »

MrMonday wrote:
Utelias wrote:Onks tää edennyt yhtää? Olisi kiva saada lisää tietoa :D
Ihan samaa olen itsekkin miettinyt, kun pitänyt hiljaista, mutta aikataulussa on pysytty, eli näillä näkymin tulee vielä tämän vuoden alkupuoliskolla?
Ja nyt vaikenen tässä ketjussa siksi kunnes on jotain uutta kommentoitavaa, ettei vallan offtopiciksi mene tämäkään ketju..
Mistähän aikatauluista sinä puhut? Hienoja arvioita, kun edes minulla devteamilaisena ei ole tietoa että milloin on valmista.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MrMonday »

Pettis wrote:
MrMonday wrote:
Utelias wrote:Onks tää edennyt yhtää? Olisi kiva saada lisää tietoa :D
Ihan samaa olen itsekkin miettinyt, kun pitänyt hiljaista, mutta aikataulussa on pysytty, eli näillä näkymin tulee vielä tämän vuoden alkupuoliskolla?
Ja nyt vaikenen tässä ketjussa siksi kunnes on jotain uutta kommentoitavaa, ettei vallan offtopiciksi mene tämäkään ketju..
Mistähän aikatauluista sinä puhut? Hienoja arvioita, kun edes minulla devteamilaisena ei ole tietoa että milloin on valmista.
Siinähän se taitaa etusivulla lukea, Coolbasic Classicin esittelyteksteissä..
EDIT:

"Classic on tällä hetkellä kehityksessä ja se julkaistaan vuoden 2010 alkupuoliskolla." Esittelytekstin viimeinen virke..

Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Pate5 »

Itse olen saanut Zeron puheista sellaisen käsityksen, että vuoden 2010 puolella olisi tarkoitus julkaista.
CoolBasic henkilökuntaa
Graafikko
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

Selvitetään sekaannus. On totta, että kotisivujen suomenkielisessä selostuksessa käytettiin ilmaisua "2010 alkupuolella". Tämä arvio on peräisin viime vuoden lopulta eli ajalta ennen kuin DevTeam oli kasassa. Tässä vaiheessa on liian optimistista sanoa, että CoolBasic Classic:sta 100% varmuudella saadaan julkinen versio kesäkuun loppuun mennessä, joten korjasin ilmaisun yhdenmukaiseksi englanninkielisen selosteen kanssa. Nyt kummassakin lähteessä lukee "2010 aikana". Tiedän, että tämä arvio on erittän karkea ja varmasti osalle teistä jokseenkin masentava. Mutta hyvää kannattaa odottaa.

Kannattaa muistaa, että CoolBasic projektina on todella, todella iso. Pelkkä editori on niin iso kokonaisuus, että joku saisi siitä korkeamman asteen ammatillisen tutkinnon lopputyön. Manuaaliprojekti, kääntäjä, kotisivu ja pelimoottori ovat myös vähintäänkin yhtä isoja projekteja. 17-henkinen tiimi ei mitenkään ole "liian iso" tälle projektille.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by phons »

ezbe wrote:Hyviä uutisia!
\../. Vaikuttaa erittäin hyvältä, tuollaisilla tehoilla pääsee tekemään todella hienoja pelejä. Lisähyötyä hyvistä graffakorteista. Objektin skaalaus onkin ollut välillä tarpeessa ja lennossa se on nykyiseltään hidasta. Tämä on ehkä vähän aikaista, mutta: Millainen fysiikkapuoli on? Entä millaiset törmäys tunnisteet?

Edit:
DSG, siksi sanoinkin etää: ..tämä on ehkä vähän aikaista, mutta..
temu92, kiva kuulla.
Last edited by phons on Thu Mar 25, 2010 5:26 pm, edited 2 times in total.
Image
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

phons wrote: Millainen fysiikkapuoli on? Entä millaiset törmäys tunnisteet?
Phons, kaikki aikanaan, kaikki aikanaan. ;)

Eikös tulevalla CoolBasicilla voida ladata kuvia, joilla on alphakanava, ja piirtää niitä alphan kanssa jos halutaan?

Code: Select all

DrawImage jokupic, x, y, rotaatio, skaalaus, alpha, alphakanava, frame
:)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by temu92 »

phons wrote:Millainen fysiikkapuoli on? Entä millaiset törmäys tunnisteet?
Kaikki on mallillaan, mutta enpäs kerro enempää :)
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by koodaaja »

Grafiikan toteutus kuulosti olevan hyvällä mallilla ja tällä kertaa laitteistokiihdytettynä, kuten kuuluukin. Ainakin objektit vaikuttavat olevan kunnossa, ja se on loistavaa - ne ovat nyky-CB:n vankan lokalisaation ohella suurin valttikortti peliohjelmointikielenä. Näin ainakin omasta näkökulmastani, kun beta#10 julkaistiin.

Piirtokomennoista ei näkynyt kuitenkaan mitään mainintaa. Saammeko kenties piirtää suoraan mielivaltaisia kolmioita, ehkä jopa teksturoituja sellaisia ja onko näille z-bufferi käytössä, vai toimiiko piirtojärjestys kuten ennenkin? Lisäksi kiinnostaisi tietää, miten paljon systeemin sisäisiin arvoihin ja muuttujiin pääsee käsiksi, voiko esimerkiksi tekstuurifilttereitä tai systeemin sisäisiä matriiseja säätää?

Maininnan puute tosin johtui todennäköisesti siitä, että asiaa ei ole lyöty vielä lukkoon, mutta jotain yleiskuvaa asiasta olisi kiva saada.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

koodaaja wrote:Piirtokomennoista ei näkynyt kuitenkaan mitään mainintaa. Saammeko kenties piirtää suoraan mielivaltaisia kolmioita, ehkä jopa teksturoituja sellaisia ja onko näille z-bufferi käytössä, vai toimiiko piirtojärjestys kuten ennenkin? Lisäksi kiinnostaisi tietää, miten paljon systeemin sisäisiin arvoihin ja muuttujiin pääsee käsiksi, voiko esimerkiksi tekstuurifilttereitä tai systeemin sisäisiä matriiseja säätää?
Peruspiirtokomennot ovat kyllä tulossa, mutta erikoisempiin sellaisiin (kuten mainitsemasi teksturoidun kolmion piirtäminen) emme ota vielä kantaa. Piirtojärjestys toiminee samalla tavalla kuin nykyisessäkin CoolBasic:ssa.

Moottorin sisäiseen dataan pääsy on aina hieman kyseenalaista, koska siellä on oikeasti mahdollista rikkoa jotain jos ei tiedä mitä tekee. Pyrimme tietysti ensisijaisesti tarjoamaan jonkun korkeantason komennon, jolla saadaan vastaavia kikkoja turvallisesti aikaiseksi.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

Zero wrote: Piirtojärjestys toiminee samalla tavalla kuin nykyisessäkin CoolBasic:ssa.
That's too bad, olishan se Z bufferi ollut kiva, mutta aksonometrisenä, niin ei tarvitsisi aina pähkäillä objectorderin kanssa. ;) Paitsi en kyllä tule käyttämään Classicissa objekteja, kun teen siihenkin omaa objektimoottoriani. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by DJ-Filbe »

Onko CB Classicissa paremmat mahdollisuudet käsitellä esim. palvelimella sijaitsevia tiedostoja? Ja millaiset?
Post Reply