CoolBasic V3: Esittely

CoolBasiciin yleisesti liittyvä keskustelu.
Locked
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

CoolBasic V3: Esittely

Post 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)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Mielipide:

Re: CoolBasic? kuollut? eheei ole...

Post by Mielipide: »

Fail...
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic? kuollut? eheei ole...

Post 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..
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: CoolBasic? kuollut? eheei ole...

Post by MikkoK »

Tulispa jo pian tuo uus versio :P

Code: Select all

#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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 :)
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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. :)
The darkest spells can be found from
http://tunkkaus.blogspot.fi
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Pettis »

No mutta vois sitä tuolla irkissä idlailla, vaikka ei koodata jaksakkaan? Olis kiva vaihtaa kuulumisia tai vaikkapa pelata jotain yhdessä senkin tiedika.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
vms100
Member
Posts: 81
Joined: Tue Aug 28, 2007 4:47 pm

Re: CoolBasic? kuollut? eheei ole...

Post by vms100 »

Hieno juttu. Mutta miksi päivitysohjelman tulisi olla tehtynä PureBasicilla :shock: ?
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Dibalo »

Tuleeko uudesta CB:stä nyt tulkattava, binääri vai JIT?
The darkest spells can be found from
http://tunkkaus.blogspot.fi
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: CoolBasic? kuollut? eheei ole...

Post 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.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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 ;)
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? kuollut? eheei ole...

Post 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...
;)
The darkest spells can be found from
http://tunkkaus.blogspot.fi
vms100
Member
Posts: 81
Joined: Tue Aug 28, 2007 4:47 pm

Re: CoolBasic? kuollut? eheei ole...

Post by vms100 »

Toivottavasti jotain sitten saadaan aikaseksi :roll:
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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. ... ;)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: CoolBasic? kuollut? eheei ole...

Post 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;)
Huuda mun ip:tä!
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: CoolBasic? kuollut? eheei ole...

Post 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.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
vms100
Member
Posts: 81
Joined: Tue Aug 28, 2007 4:47 pm

Re: CoolBasic? kuollut? eheei ole...

Post 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 ;)
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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).
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post 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ä.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: CoolBasic? kuollut? eheei ole...

Post 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ä.
Locked