PÄIVITYS 28.1.2010:
DevTeamin on kasassa ja kehitys on meneillään!
CoolBasic Classic on kehitteillä. Se on proseduraalinen kieli nykyisen CoolBasic:n tapaan ja se tulee ilmestyessään korvaamaan sen. CoolBasic Classic julkaistaan lisäksi ennen CoolBasic V3:sta.
Huhuja nykyisen CoolBasic:n jatkokehityksestä on liikkunut niin kauan kuin sitä on minulta pyydettykin. Erityisenä huolenaiheena on ollut nykyisen CoolBasic:n katoaminen CoolBasic V3:n tieltä. Joitakin käyttäjiä ajatus oliopohjaisuudesta pelottaa. Eikä ihme, sillä onhan siirtyminen proseduraalisesta kielestä olioihin valtava. Samalla alkuperäisen CoolBasic:n perusajatus, eli ”helppo ohjelmointikieli pelintekoon”, vaarantuu. Oppimiskäyrä oliokielissä on huomattavasti jyrkempi, joten olen päättänyt että tästä eteenpäin tarjolla on sekä proseduraalinen (CoolBasic Classic) että oliopohjainen vaihtoehto (CoolBasic V3). Kumpaakin ylläpidetään ja kehitetään säännöllisesti. Näin ollen ei ole väliä pitääkö enemmän tästä klassisesta ohjelmoinnista vai oliokielien herkuista. Olio-ohjelmoijat eivät ole sen parempia kuin proseduraalisten kielien ohjelmoijat – eivät välttämättä edes taitavampia. Ohjelmointitaitoa ei kasvata se, että osaa kirjoittaa ”Class”. En voi pakottaa ketään muuttamaan ohjelmointitottumuksiaan tappamalla edellisen työkalun uuden tieltä, joten nyt käyttäjillä on valinta. Tämän päätöksen takana on paljon muitakin syitä, mutta ne varmaankin valkenevat lopulta itse kullekin.
Nykyinen CoolBasic (Beta 10.x) kokee siis täydellisen uudelleentoteutuksen. Koodieditori menee uusiksi. Kääntäjä menee uusiksi. Virtuaalikone menee uusiksi. Manuaali menee uusiksi. Lisäksi coolbasic.com:sta tehdään oikea portaali ja foorumi kokee rakenteellisia uudistuksia. Tästä eteenpäin kaikki sisältö joka paikassa on saatavilla sekä englanniksi että suomeksi (esimerkiksi kansainvälinen foorumi tulee olemaan erillään suomenkielisestä yhteisöstä). Kaikkeen tähän menee kuitenkin niin tajuttomasti työtä, että minulla ei millään riitä siihen rahkeet yksinään. Senpä vuoksi kokoan DevTeamin, jonka jäsenille jaetaan omat tehtävät ja vastuualueet. Alempana on kerrottu tarkemmin eri uudistuksista.
Kieli ja syntaksi
Pähkinänkuoressa CoolBasic Classic pysyy kielellisestä lähes ennallaan. Joitakin ominaisuuksia poistetaan käytöstä, toisia viritellään ja parannetaan. Käyttäjien pitäisi kuitenkin pystyä uudelleenkirjoittamaan vanhalla versiolla tehdyt pelit melko vähällä vaivalla. Uudelleensuunnittelu vaikuttaa kuitenkin jonkin verran syntaksiin ja komentoihin. Tämä on kuitenkin välttämätöntä, jotta suunnitellut uudet ominaisuudet ja komennot saataisiin mukaan mahdollisimman järkevästi ja yhtenäisellä tavalla. Juuri tällaisten muutosten suunnitteluun tarvitsen muidenkin mielipiteitä, ja siksi haluan DevTeamiin suunnittelijoita. Yhden miehen mielipide ei välttämättä ole se loppujen lopuksi paras päätös.
Sisäänrakennetut tietotyypit pysyvät aika lailla samoina, mutta liukuluvut ovat nyt 64-bittisiä. Suunnittelussa on lisäksi otettu huomioon myös 64-bittisten kokonaislukujen mahdollinen lisääminen myöhemmin. Lisäksi tyypitys on nyt hieman vahvempi, ja on mahdollista esitellä omantyyppisiä taulukoita ja funktioita. Funktiot voivat ottaa tyypitettyjä parametreja ja taulukoita. Käytännössä rajoitukset tyyppien käytön suhteen katoavat. Nyt on myös mahdollista ylikuormittaa funktioita. Jatkossa kieleen voidaan lisätä helposti uusia rakenteita, esimerkiksi numeraatiot ja ylikuormitetut operaattorit.
Kääntäjä
Uusi kääntäjä on jo reippaasti yli puolen välin valmis. Se myös lainaa teknologiaa V3-kääntäjästä, ja nyt onkin jännittävää seurata miten V3-kääntäjään lupaamani muutokset toimivat käytännössä. Classic toimii loistavasti testimielessä kun kokonaisuus ei ole ihan yhtä monimutkainen kuin V3. Koska CoolBasic Classic on proseduraalinen kieli, käännösprosessi on huomattavasti yksinkertaisempi ja siten nopeampi. Uusi Classic-kääntäjä on satoja kertoja nopeampi nykyiseen verrattuna! Muutama kymmenen tuhatta koodiriviä kääntyy niin sukkelasti, ettei sitä ehdi huomaamaan.
Uusi kääntäjä on yksinkertaisesti parempi kaikilla osa-alueilla. Siinä on mm. paljon kehittyneempi jäsennysmekaniikka, joten oudot jäsennysvirheet (joista ei välttämättä tule edes virheilmoitusta) tietynlaisilla lausekerakenteilla ovat historiaa. Esimerkiksi nyt on mahdollista määritellä Dim-, Global- ja Const-lausekkeille useita uusia tunnisteita, ja ne voidaan jopa alustaa samassa lausekkeessa. Muutkin rajoitukset ovat poistuneet, niistä luultavasti kuuluisampana legendaarinen funktioraja (nyt ei tarvitse enää haxxata *köh*). V3-kääntäjän tapaan Unicode-merkitsöt on nyt täysin tuettu, ja kääntäjän arkkitehtuuri tukee periaatteessa 64-bittistä alustaa. CoolBasic V3:n tavoin tämä uusi Classic-kääntäjä on konsolisovellus, ja sitä on helppo kutsua muualtakin kuin CoolBasic:n omasta editorista.
Virtuaalinen ajoympäristö
CoolBasic pysyy tulkattuna kielenä, joskin uusi virtuaalikone on monta kertaa nopeampi. Uutta virtuaaliympäristöä kutsutaan termillä CoolVES (Cool Virtual Execution System). Se on valmis pelimoottori, joka tarjoaa mm. grafiikka-, ääni-, syöte-, ja nettipalvelut. Näiden lisäksi se tarjoaa valmiit palvelut kehittyneemmille pelimekaniikkaominaisuuksille (kuten fysiikkakirjasto, ehkä). CoolVES on täysin Windows Vista/7-yhteensopiva eikä se aiheuta enää AeroGlass:n alustusta. Grafiikkamoottori pohjautuu DirectX 9:ään, mutta tulee todennäköisesti olemaan vaihdettavissa OpenGL:ään. Lisäksi nyt päästään eroon FMOD-äänikirjastosta ja sen lisenssisotkuista. Sovellusten koko todennäköisesti pienenee ja niiden kuvakkeita voi vaihtaa ilman UPX-kikkailua siinä välissä.
Ajoympäristön tulkkaaman tavukoodin rakenne dokumentoidaan julkisesti (tämäkin voi sitten muuttua tulevaisuudessa). Periaatteessa kuka tahansa voi silloin kirjoittaa sille oman kääntäjän. Olisi hienoa jos joskus nähtäisiin CoolC#, CoolJavaScript, CoolPython tai vaikkapa CoolPHP. Kielestä riippumatta ne voivat kaikki hyödyntää CoolVES:n tarjoamat pelimoottorin palvelut.
Manuaali
Uudessa käyttöoppaassa on panostettu ulkonäköön, luettavuuteen, selaamisen helppouteen ja tiedon etsinnän tehokkuuteen. Siinä tulee lisäksi olemaan enemmän sisältöä (ja tähänkin tarvitsen DevTeamin apua). Nykyisen manuaalin ulkonäkö on liian ”ysäriä”, sen kaikki tieto on käsin html-koodiin väännetty eikä siinä muutenkaan ole ylläpidettävyyden häivääkään. Uusi manuaali pohjautuu tietokantaan, jolle olen jo suunnitellut rakenteen. Lisäksi siihen voi liittää vuorovaikutteista sisältöä. Rakenne ei ole sama mitä CoolBasic V3:n manuaalissa (niille, jotka ovat blogiani seuranneet), mutta manuaalin täydellinen uudelleenjärjestäminen on väistämättä edessä. Toivon saavani DevTeamilta näkemyksiä manuaalin suunnitteluun ja kehittämiseen.
Koodieditori
Tavoitteena on luoda yhtenäinen kehitysympäristö kaikille CoolVES:iä tukeville kielille ja CoolBasiciin liittyville kehitystyökaluille (mukaan lukien V3). Käyttäjä luo uuden projektin valitsemalla halutun kielen tai työkalun. Kaikki pelit perustuvat projektitiedostoihin, joihin kuuluu lähdekoodin lisäksi mm. pelin lataamat mediatiedostot (kuvat, äänet jne.) Toki CoolBasic Classicin tapauksessa tiedostot pitää sisällyttää IncludeFile-komennolla, mutta projektilähtöisyydessä on paljon etuja kokonaisuuden hallintaan liittyen. Tässä vaiheessa en ota projektinhallintaan sen enempää kantaa, koska tarvitsen tähänkin asiaan DevTeamilaisten mielipiteitä.
Periaate on se, että kaikki työkalut ja asennetut ohjelmointikielet toimivat kehitysympäristössä moduuleina, joita voidaan asentaa, poistaa ja päivittää yksitellen ja täysin automaattisesti. Kuvitelkaa esimerkiksi pelivelho-työkalu, joka joko generoi pelin lähdekoodin halutulla kielellä valmiiksi tai rakentaa lopullisen pelin perustuen käyttäjän valintoihin ilman että tarvitsee kirjoittaa riviäkään koodia.
Koodin editointikomponentti vaihdetaan myös hieman modernimpaan. Nykyiseen verrattuna kaivatuimpia ominaisuuksia ovat esimerkiksi parempi koodinvärjäys, refaktorointi ja Intellisense. Mitä miellyttävämpää koodin kirjoittaminen on, sen tuottavampi on itse koodaaja.
DevTeam
Kokonaisuus on niin laaja, etten selviä siitä yksin (ainakaan käytettävissä olevan ajan puolesta). Niinpä vielä tämän vuoden aikana laitetaan pystyyn CoolBasic-organisaatio, jolla on selkeä hierarkia ja jonka jäsenillä on selkeät tehtävät ja vastuualueet. Etsin vapaahehtoisia, jotka ovat valmiita kantamaan vastuuta. Paikkoja on auki mm. suunnittelijoille, kehittäjille ja web-ohjelmoijille. DevTeam pääsee käsiksi luottamukselliseen materiaaliin, esimerkiksi lähdekoodeihin, kantadumppeihin ja teknisiin dokumentaatioihin. Kaikkien oletetaan kantavansa vastuuta tekemisistään ja hoitavansa heille annetut tehtävät. Heillä tulee olla kiinnostusta CoolBasiciin ja tuoteperheen kehittämiseen. DevTeamilaisen ei tarvitse olla mestarikoodaaja - tarvetta on yhtälailla myös suunnittelijoille ja sisällöntuottajille. Jos haluat tähdätä korkealle (sarjassa The Game Creators, GameMaker, jne) niin silloin olet hakemamme henkilö. DevTeamista, sen tehtävistä ja siihen hakemisesta tulee erikseen lisätietoa myöhemmin tälle foorumille.
Dokumenttihallinta
Viime viikot olen kehittänyt nettipohjaista dokumentinhallintajärjestelmää. Vieraat pääsevät käsiksi julkiseksi luokiteltuihin dokumentteihin, mutta DevTeamilainen voi logata sisään, ja päästä käsiksi luottamukselliseen materiaaliin: lähdekoodeihin, tietokantoihin, työkaluihin ja tiettyihin dokumentteihin. Sivuston toteutus on jo lähes valmis.
TLDR: Nykyinen CoolBasic tehdään uudestaan - kokonaan. Se ilmestyy ennen V3:sta. Lisätietoa DevTeamista tulee myöhemmin.