Page 1 of 30

CoolBasic V3: Esittely

Posted: Sun Jun 08, 2008 1:19 pm
by Zero
Päivitetty 4.5.2009
HUOM! Kaikki tässä ketjussa esitetty tieto voi muttua milloin tahansa.


Nykyinen CoolBasic on kieltämättä sekä tekniikaltaan että suunnittelultaan vanhentunut. Eikä sen bugeihinkaan ole liiemmin puututtu muutaman viime vuoden aikana (pitkälti johtuen siitä, että minä olin käytännössä pois kuvioista aika pitkään). Vuoden 2008 lopulla palasin takaisin, tuumasin että prkl ja ryhdistäydyin. Ilmoitin, että CoolBasic V3 on kehitteillä. Uuden kääntäjän kehittäminen on jatkunut vapaa-ajallani aina tuosta hetkestä lähtien lähes joka päivä. Olen myös töissä ohjelmisto-alalla, joten koodaaminen ei aina ole se ensimmäinen asia joka tulee mieleen kun kotiin pääsee... mutta kaikesta huolimatta CoolBasic V3 on edistynyt tasaisesti ja hyvin.

Oliopohjaisuus

CoolBasic V3 tulee muuttumaan hyvin paljon - parempaan suuntaan. Sovellusten koko tulee olemaan hieman pienempi, ja tähtäimessä on parempi suorituskyky ja laajennettavuus. Vaikka koodaustapa muuttuu perinteisistä funktiokutsuista olioihin (jotka ovat aluksi vaikeampia ymmärtää), pitää kuitenkin muistaa se, että CoolBasic tullaan edelleen suunnittelemaan mahdollisimman helposti omaksuttavaksi. Toki kuvioihin tulee paljon uusia termejä kuten kapsulointi, periytyvyys ja polymorfismi, mutta uusi manuaali ja uudet esimerkit selittävät ne kyllä kunnolla ja kattavasti.

Pähkinänkuoressa oliot voidaan ymmärtää näin:
Sen sijaan, että sanot jollekin yleiselle Liikuttajalle, että "liikuta tuota", käsket jotakin liikkumaan itse. Vertaa:

Code: Select all

MoveObject tankki, 0, 1 ' Nykyinen CoolBasic

tankki.Move(1) // CoolBasic V3
Eipä tuo niin vaikeata ollut.

Uusi teknologia: Ääni-engine

Nykyinen CoolBasic kun on rakennettu Blitzin päälle, löytyy siitä sisäänrakennettuna FMOD, joka vastaa kaikesta äänentuotosta. Hyvä kirjasto sinänsä, ei siinä mitään - paitsi että sen lisenssi on CoolBasicin kohdalla kyseenalainen: Käsittääkseni Blitzillä on erikoissopimus FMODin tekijöiden kanssa, joka mahdollistaa FMODin jakelun osana Blitziä niin, että loppukäyttäjät eivät kuitenkaan joudu maksamaan lisenssimaksuja vaikka tekisivätkin kaupallisia pelejä. Kellään kuitenkaan tuskin on suoraa vastausta siihen miten lisenssikiemurat menevät kun välissä on vielä CoolBasic. Niinpä ainakaan tulevaan CoolBasiciin ei FMODia tai BassMod-kirjastoa tungeta, vaan koko CoolBasic V3 pyritään pitämään täysin lisenssivapaana loppukäyttäjiä ajatellen. Joku voi halutessaan ottaa nämä kirjastot käyttöön, jos tarvitsee niiden ominaisuuksia ja on valmis lisenssihintoihin. Natiivisti äänentuottoon CoolBasic käyttänee ilmaista ja lisenssivapaata Audiere-kirjastoa.

Uusi teknologia: Grafiikka-engine

Nykyinen CoolBasic käyttää softapohjaista grafiikkamoottoria 2D-grafiikan esittämiseen. Ei siinä mitään, onhan se melko nopea 2D-blitteri. Mutta eipä sillä paljon reaaliajassa kuvia pyöritellä. Jotta objektit saataisiin käytännössä pyörimään, lasketaan nämä kuvat valmiiksi jo siinä vaiheessa kun objekti ladataan. Isoilla objekteilla latausaika ja muistinkäyttö voi nousta aika hirveisiin lukuihin. Lisäksi reaaliaikainen läpinäkyvyys, skaalaus, erilaiset blendaukset ja vääristykset ovat aivan liian hitaita. Niinpä CoolBasicin uusi grafiikkamoottori on täysin laitteistokiihdytetty - jopa ns. 2D-tilassa. Nyt voidaan tuhansia objekteja pyöritellä skaalattuna ja blendattuna koosta riippumatta täysin vapaasti ilman suorituskykyongelmia. Nyt päästään vihdoin myös vanhasta DirectX7-rajapinnasta eroon, joten ikkunoidut pelit toimivat täydellisesti myös Windows Vistassa ja tulevassa seiskassa ilman että Aeroglass dumppaa.

Tulevaisuudessa CoolBasic keskittyy huomattavasti enemmän 3D-peleihin. Grafiikkamoottori pohjautuu Irrlichtiin, joka sekin on täysin ilmainen ja lisenssivapaa myös kaupallisessa käytössä. Se tukee sekä DirectX- että OpenGL-rajapintoja, ja on ominaisuuksiltaan monien kaupallisten 3d-moottorien veroinen. Täydellisen listauksen sen monista ominaisuuksista voi halukkaat käydä lukemassa sen [url=http://irrlicht.sourceforge.net/features.html]kotisivuilta[url].

Projektin laajuus

CoolBasic V3 on kokonaisuutena paljon laajempi kuin moni käyttäjä ehkä ymmärtääkään. Tästä syystä sen kehitykseen menee todella paljon aikaa, ja siihen kuuluu pelkän kääntäjän lisäksi mm. runtime, enginet, editori, manuaali, tutoriaalit ja kotisivut. Ja tietysti koko hoidon päälle vielä täydellinen lokalisaatio kahdelle kielelle. Enkä aiokaan olla yksin vastuussa tästä kaikesta, vaan suunnitelmissa on ihan oikeasti perustaa jossain vaiheessa pieni tiimi CoolBasicin ylläpitoon ja kehitykseen. Tavoitteena on muodostaa kunnollinen pelintekoyhteisö sekä suomessa että kansainvälisesti.

Julkaisu

Luottavaisin mielin 2009 :)
(Huom, lue tämän postin ensimmäinen virke)

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 1:41 pm
by Mielipide:
Fail...

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 2:03 pm
by Koodiapina
Irrlichiä ja kaikkea :P~ Ennen kun rupeet tekemään maailman parasta kieltä, niin voisitko lisätä nykyiseen versioon monirivisen kommennoinnin ja loputtomat funktiot?

Niin ja päästä mut DevTeamiin plz..

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 2:07 pm
by MikkoK
Tulispa jo pian tuo uus versio :P

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 4:04 pm
by valscion
Grandi wrote:Irrlichiä ja kaikkea :P~ Ennen kun rupeet tekemään maailman parasta kieltä, niin voisitko lisätä nykyiseen versioon monirivisen kommennoinnin ja loputtomat funktiot?

Niin ja päästä mut DevTeamiin plz..
Monirivinen kommentointi on jo olemassa, katsoppas komentoja RemStart ja RemEnd ;)

Mahtavaa että Zero olet tullut takaisin! Harmittaa vain kun et aio (vai aiotko??) kehittää nykyistä CoolBasicia ollenkaan ja alat kehittämään uutta versiota kokonaan alusta, minkä valmistumisessa kestää sitten kauan.
Onnea ja kärsivällisyyttä koodaamiseen :)

Terv.
Uusi kasvo sinulle, vanha uuden foorumin porukoille :)

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 5:02 pm
by Dibalo
Zero wrote:
  • Implementoi Irrlicht 3D-engine. Kyseinen moottori tarjoaa niin onnettoman integrointirajapinnan, että siitä pitää tehdä wrapperi C++:lla. Tällä kertaa se noudattaa kuitenkin täysin Irrlichtin lisenssiehtoja; kyseinen 3D-moottori on täysin lisenssivapaa kaupallisiin ja ei-kaupallisiin käyttötarkoituksiin. (kielenä C++)
Itse suosittelen lämpimästi Kaaoksen käyttämää systeemiä: tee RenderSystem ja RenderWindow-luokat, jotka on abstraktoitu. Itselläni on tällä hetkellä Win32-implementaatio tekosessa, mutta jossain vaiheessa ajattelin tehdä implementaation OGRE:lle. Eli perit vain tämän abstaktin luokan ja välität luodun pointterin ajonaikasesti linkitettyä kirjastoa pitkin, joka samalla myös toteuttaa tuon OGRE-implementaation. Helppoa, nopeaa ja kaiken lisäksi yksinkertaista. :mrgreen:

Koodina kyseinen hoituisi Kaaoksessa tällä tavalla:

Code: Select all

Screen.Renderer "ChBOgre.dll"    // wrapper dll
Screen.Set 800, 600

// tämä käyttää jo ChBOgre.dll:n implementaatiota
Var i As Image = New Image
i.Load "guy.bmp"
Repeat
    i.Draw Mouse.X(), Mouse.Y()
Screen.Draw
Forever
EDIT: Jaan mielelläni ChaosBasic-projektin aikana kerättyjä kokemuksiani niin luokkien toteutuksessa, polymorfismissa kuin muissakin mieleen tulevissa asioissa. :)

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 5:23 pm
by Pettis
No mutta vois sitä tuolla irkissä idlailla, vaikka ei koodata jaksakkaan? Olis kiva vaihtaa kuulumisia tai vaikkapa pelata jotain yhdessä senkin tiedika.

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 5:27 pm
by vms100
Hieno juttu. Mutta miksi päivitysohjelman tulisi olla tehtynä PureBasicilla :shock: ?

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 5:44 pm
by Dibalo
Tuleeko uudesta CB:stä nyt tulkattava, binääri vai JIT?

Re: CoolBasic? kuollut? eheei ole...

Posted: Sun Jun 08, 2008 11:18 pm
by koodaaja
Köö, Zerokin uskaltautui postaamaan pitkästä aikaa. Jäähän nyt vähäksi aikaa tänne nuokkumaan, ei se viikottainen kurkkauskaan pahaa tee (: Kyllä vaikuttaisi CB:stä työtä löytyvän. Mitään ihmeitä tuskin kukaan odottaa, mutta hienoa jos jaksat hiljalleen, kaikessa rauhassa palailla projektin pariin.

Itse olen sitä mieltä että joka funktio jonka osaa kirjoittaa pitää kirjoittaa itse, joten en pitäisi OS-kehityksestä enkä valmiin grafiikkamoottorin käytöstä, mutta luonnollisesti koko homman yksin vääntäminen menee yli-inhimilliseksi. Ja täytyy myös tunnustaa, että pirun hieno saavutus tämä nykyinen CB.

Mutta hienoa että pistit taas vähän tietoa CB:n tulevaisuudesta ja omista ympyröistäsi.

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 9:10 am
by Zero
Mielipide: wrote:Fail...
Kyllä.
Grandi wrote:Irrlichiä ja kaikkea :P~ Ennen kun rupeet tekemään maailman parasta kieltä, niin voisitko lisätä nykyiseen versioon monirivisen kommennoinnin ja loputtomat funktiot?

Niin ja päästä mut DevTeamiin plz..
CoolBasic on nyt (kun kokemusta on kertynyt) sisäisesti aika sekaisin. En mielellään tekisi sinne hirveästi muutoksia. Se on tämä wtf-ilmiö, kun katsoo pitkän ajan kuluttua omaa koodiaan, niin tulee ajateltua että "Mitähän minä olen tuossakin ajatellut".
Dibalo wrote:Tuleeko uudesta CB:stä nyt tulkattava, binääri vai JIT?
Samoilla linjoilla mennään, joskin tulkki on nyt paljon nopeampi. Oikean binäärikääntäjän luomisessa menisi pelkästään asiaa opiskellessa jo ikä ja terveys.

-- -- -- -- --

OGRE ja Irrlich ovat kumpikin loistavia engineitä. Olen käyttänyt kumpaakin, ja OGRE on ehkä teknisesti vähän edistyksekkäämpi. Irrlicht tukee kuitenkin natiivisti enemmän tiedostoformaatteja, ja sen käyttäminen on aavistuksen simppelimpää. Lisäksi siinä on sisäänrakennettu törmäyksentunnistus.

Tämän topicin tarkoituksena ei ollut kertoa, että uusi CB on hyvällä mallillaan ja ilmestyy huomenna. Lähinnä vai sen, että en ole hylännyt projektia.

PS. Pitääpi tutustua tuohon Dibalon tekeleeseen ;)

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 4:17 pm
by Dibalo
Zero wrote:PS. Pitääpi tutustua tuohon Dibalon tekeleeseen ;)
Pstttt...
******** Mainos ********
Uusi ja uljas versio tulossa lähipäivinä...
  • luokat
  • perintä
  • polymorfismi
  • kaikkea kivaa...
;)

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 5:05 pm
by vms100
Toivottavasti jotain sitten saadaan aikaseksi :roll:

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 6:01 pm
by tuhoojabotti
voisitte Dibalo ja Zero yhdistää voimat niin vois tulla jotain käyttökelposta aikaan ilman, että joutuu valitsemaan kahden välillä... saati odottamaan kumpaakin miljoona vuotta ja hyppiän molempien betojen välillä jne. jne. ... ;)

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 8:06 pm
by Olwi
Ylläolevaan,en kannattaisi...





Jos olet kokoajan aikonut tehdä CB:tä eteenpäin,miten selität viikkojen/kuukausien poissaolot foorumeilta?
Mutta hieno juttu,yritä jaksaa;)

Re: CoolBasic? kuollut? eheei ole...

Posted: Mon Jun 09, 2008 11:54 pm
by Ilmuri
Olw1 wrote: Jos olet kokoajan aikonut tehdä CB:tä eteenpäin,miten selität viikkojen/kuukausien poissaolot foorumeilta?
Mutta hieno juttu,yritä jaksaa;)
Forumilla istuminen ei edistä koodaamista mitenkään merkittävästi.

Re: CoolBasic? kuollut? eheei ole...

Posted: Tue Jun 10, 2008 2:25 pm
by vms100
tuhoojabotti wrote:voisitte Dibalo ja Zero yhdistää voimat niin vois tulla jotain käyttökelposta aikaan ilman, että joutuu valitsemaan kahden välillä... saati odottamaan kumpaakin miljoona vuotta ja hyppiän molempien betojen välillä jne. jne. ... ;)
Itse Kannattaisin tuollaista ideaa ;)

Re: CoolBasic? kuollut? eheei ole...

Posted: Tue Jun 10, 2008 4:18 pm
by Dibalo
Tulevan CB:n ja ChB:n yhdistäminen kuulostaa kyllä helpolta, mutta käytännössä homma on hyvin monimutkainen. Tässä hieman syitä:
  • CB:n syntaksi tulee olemaan hieman erilainen kuin Kaaoksen.
  • Kaaos on puhtaasti C++ (tulkki ja kääntäjä), CB tulee olemaan PureBasic:lla tehty.
  • Käännösprosessi on aivan erilainen. CB tulee (tod. näköisesti) käyttämään "kaksivaiheista" käännöstä, jolloin koodista tehdään ASM-koodia muistuttava tekele, joka sitten käännetään tavukoodiksi. Kaaos ei tätä vaihetta tunne.. :D
  • Tulkki on hyvin vahvasti sidonnainen tavukoodin rakenteeseen, joten tulkki ja kääntäjä tulevat olla tiiviissä yhteiskehityksessä.
  • Zerolla ja minulla on erilaiset koodaustavat (olettaisin näin).

Re: CoolBasic? kuollut? eheei ole...

Posted: Wed Jun 11, 2008 8:42 am
by Zero
Syy PureBasicin valintaan on yksinkertainen: voin ujuttaa käsin optimoitua assembleriä ohjelman sekaan. Lisäksi tällaista koodia ei CoolBasicissa olisi ollenkaan:

Code: Select all

If FunctionID = 1 Then
    ' Tähän vaikkapa LoadObjectin toteutus
ElseIf FunctionID = 2 Then
    ' Tähän vaikkapa DrawImagen toteutus
ElseIf ...
...
EndIf
... vaan saan tehtyä suoraan esim. näin:

Code: Select all

a = PeekL(*ProgramPointerPar)
!JMP [v_a]
Kyllä, seuraava CoolBasic tulee murskaamaan bittejä paljon nykyistä nopeammin :)

CoolBasic ja ChaosBasic tukevat toistensa kehitystä lähinnä "kilpailuna paremmuudesta" - mikä tietysti auttaa jaksamaan kehitystyössä. Näin myös tavoitteet ja laatu pysyvät korkealla. Näiden kahden yhdistämisestä ei kuitenkaan tulisi kuin sanomista :)

-- -- --

Kun tutkiskelin ChaosBasicia, täytyy myöntää että olen aika yllättynyt (positiivisesti). Taulukko-osoittimet ja kaikki. Hienoa työtä! Tuo sen käyttämä oliomalli vaikuttaa aika lailla samanlaiselta mitä CoolBasicille kaavailin, joten ne jotka ovat jo ChB:hen tutustuneet, tietävät ehkä jo vähän mitä tuleman pitää. Maltan tuskin odottaa, että pääsen kokeilemaan kuinka Dibalo on saanut luokat toteutettua. Sitten päästäänkin leikkimään periytyvyydellä.

Re: CoolBasic? kuollut? eheei ole...

Posted: Wed Jun 11, 2008 11:48 am
by vilQuri
Ilmuri wrote:
Olw1 wrote: Jos olet kokoajan aikonut tehdä CB:tä eteenpäin,miten selität viikkojen/kuukausien poissaolot foorumeilta?
Mutta hieno juttu,yritä jaksaa;)
Forumilla istuminen ei edistä koodaamista mitenkään merkittävästi.
Niin eihän se edistä, mutta se voi kannustaa yhteisöä käyttämään CoolBasicia enemmän jos on jotain toivoa jatko kehityksestä.