CoolBasic Classic: Kehitysuutiset

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 Classic: Kehitysuutiset

Post by Zero »

Attention:

Nyt kun CoolBasic Classic on kehitteillä, kehitystiimi on päättänyt julkistaa lyhyitä uutisia sen kehityksestä silloin tällöin. Näin te yhteisön jäsenet pysytte ajan tasalla tulevista ominaisuuksista.

Tämä ketju on tarkoitettu vain virallisille uutisille, ja se on siksi lukittu. Rohkaisemme teitä kuitenkin kommentoimaan ilmoituksia omassa ketjussaan.

Kaikki mitä tähän ketjuun postitetaan, voi muuttua jälkikäteen.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Astigma »

Tiedotus Sub...EndSub -rakenteesta. CoolBasic Classicissa tulee olemaan aliohjelmia (Sub), jotka toteutetaan seuraavalla rakenteella:

Code: Select all

Sub nimi(parametrit)
    Subin koodi
EndSub
Aliohjelmat siis voivat nykyisestä poiketen ottaa parametreja, mutta ne eivät voi palauttaa mitään (toisin kuin funktiot). Aliohjelmasta voidaan poistua myös Return -lausekkeella. Aliohjelmia voidaan kutsua sekä sulkujen kanssa että ilman:

Code: Select all

S parametri1, parametri2
S(parametri1, parametri2)
Aliohjelmien tarkoitus on tuottaa siis ns. komentoja, joilta ei odoteta mitään paluuarvoja. Esimerkiksi tyyliin RotateObject object, 90 tai vastaavaa. Koska aliohjelma ei palauta mitään, sitä ei voida kutsua lausekkeessa.
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Astigma »

Elikkäs tässä olisi tiedotus "Funktioiden paikalliset taulukot, taulukkoparametrit ja taulukon palauttaminen" Lisänä taulukkoiden käyttäytyminen sijoituksessa. Nauttikaa informaatiosta:

CoolBasic Classicissa voidaan funktioille välittää taulukkoja parametreina. Taulukkoparametri ei voi olla valinnainen ja taulukkomuuttujan perään ei kirjoiteta sulkeita kun se välitetään parametrina. Jos muutat funktiossa funktioon taulukkoparametrina välitettyä taulukkoa muuttuu myös alkuperäisen taulukon sisältö. (Koodiesimerkit ovat aikalailla pseudo-koodia, mutta tarkasti suuntaa antavia!) Taulukko välitetään siis funktioon seuraavalla tavalla:

Code: Select all

Dim taulukko(10) //paikallinen taulukko joka ei näy funktioiden sisällä.
sotke(taulukko, 10) //viedään taulukko funktioon
End
Function  sotke(q(), koko) //q on siis taulukko parametri
	For i = 0 To koko
		q(i) = Rand(1, 39) // sotketaan taulukon sisältö :)
	Next i
Endfunction
Taulukkoja voidaan myös palauttaa funktioista Return-lausekkeella. Myös tällöin sulkeet jätetään pois muutujan perästä. Taulukon palauttaminen tapahtuu siis seuraavalla tavalla:

Code: Select all

Dim taulukkoA(10) //paikallinen taulukko joka ei näy funktioiden sisällä.
Dim taulukkoB(10) //toinen taulukko johon sotke2() funktion palauttama taulukko sijoitetaan.
taulukkoB = sotke2(taulukkoA, 10) /* viedään taulukko sotke2() funktioon ja otetaan palautettu taulukko talteen taulukkoB:hen. TaulukkoB:n aikaisempi sisältö menetetään täysin, eli oikeastaan taulukkoB on nyt taulukkoA. (eli taulukkoA "kulkeutuu funktion läpi" tässä tapauksessa.) */
End
Function  sotke2(q(), koko) //q on siis taulukko parametri
	For i = 0 To koko
		q(i) = Rand(1, 39)
	Next i
	Return q //palautetaan funktioon viety taulukko takaisin kutsujalle.
Endfunction
Funktiolla voi olla myös omia taulukoita, jotka eivät näy funktiosta ulos. Funktion sisällä määriteltyä taulukkoa ei missään tapauksessa saa palauttaa funktiosta, koska ko. taulukko tuhoutuu kun funktiosta poistutaan. Jos joku kuitenkin uskaltaa tehdä näin, ohjelma todennäköisesti kaatuu. Funktioden lokaalit taukot:

Code: Select all

Dim taulukkoX(10) //paikallinen taulukko joka ei näy funktioiden sisällä.
Dim tulos(1)
tulos = sotke3(taulukkoX, tulos, 10) /* viedään taulukkot funktioon, tällä kertaa sotke3() funktio ei muokkaa taulukkoX:n sisältöä. */
End
Function  sotke3(q(), t(), koko) //q ja t ovat siis taulukko parametrejä
	Dim ptaulukko(100) //Funktion oma taulukko joka ei näy ulos funktiosta.
	
	For i = 0 to koko
		ptaulukko(i) = q(i) * Rand(1, 3)
	Next i

	//return ptaulukko //EHDOTTOMASTI kielletty menettely tapa!
	//q = ptaulukko
	//return q /* myös kielletty menettely tapa, koska q sisältää nyt viitteen funktion paikalliseen taulukkoon! */
	For i = 0 to koko
		t(i) = ptaulukko(i)
	Next i
	return t //ok!
Endfunction
(thänx Zero!) Taulukoiden toiminta = operaattorin kanssa. Kun taulukkoA muuttuja sijoitetaan taulukkoB muuttujaan, viite taulukkoB:hen häviää, eikä ohjelmoijalla voi enää käsitellä sitä. CoolBasic Classic kuitenkin vapauttaa menetetyn taulukkoB:n muistin. Sijoituksen jälkeen siis taulukkoA ja taulukkoB viittaavat SAMAAN taulukoon. Näin ollen taulukoiden sisältöä ei kopioida sijoituksessa, mutta tähän on kuitenkin tulossa kätevä komento. Esimerkki:

Code: Select all

Dim A(1000) As Integer
Dim B(50) As Float
Dim Z(10) As Integer
Dim S(20) As String

//hävitetään taulukkomme pöhkösti:
Z = A //Z:n sisältö menetetään. (eli viite Z-taulukkoon!)
B = Z //B:n sisältö menetetään? kyllä, CBC ei tarkista B:n ja Z:n "yhteensopivuutta" nyt B:ssä onkin Integer tyyppinen taulukko!
Z = S //Z:n sisältö menetetään? Nope. Hävitimme jo kaksi viitettä: Z:n ja B:n joten Z ja B viittasivat samaan taulukkoon. :)
Tiedotteen laatija: JATothrim
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

ezbe wrote:CoolBasic Classic grafiikkamoottori

Grafiikkamoottorista on rakenneltu jonkinnäköistä
"proof-of-concept"-versiota. CoolBasic Classicin grafiikka hyödyntää
näytönohjainten kiihdytysominaisuuksia, eli käytännössä kaikki
piirretään laitteistokiihdytettynä 3D-grafiikkana. Itse CBC:llä ei voi
3D-pelejä tehdä, vaan grafiikka käyttää nk. ortogonaalista
projektiota, jossa syvyysvaikutelma katoaa (tämä on tarpeen, jotta
voidaan piirtää pikselintarkkaa 2d-grafiikkaa). "Oikeaa" 3D-grafiikkaa
(perspektiiviprojektio ja 3-ulotteiset mallit) ei näillä näkymin tulla
tukemaan. Rajapintana moottori käyttää OpenGL:ää.

Laitteistokiihdytys tarjoaa huomattavia etuja "perinteiseen"
2d-grafiikkaan verraten, kuten reaaliaikainen rotaatio, eli
objekteille ei tarvitse määritellä kuinka monessa eri kulmassa niitä
voidaan piirtää, vaan niitä voidaan rotatoida hyvinkin tarkasti
(esimerkiksi 0.01 astetta), liukulukujen tarkkuuden puitteissa. Tämän
lisäksi, objekteja on mahdollista skaalata reaaliaikaisesti, eli
yksittäisen objektin kokoa voidaan pienentää tai kasvattaa lennossa.
Samoin mahdollistuu objektien läpinäkyvyys (ei siis pelkkä maskaus),
värisävy- ja läpinäkyvyysmuutokset sekä erilaiset blendaukset (ainakin
additiivinen ja modulaatio).

Suorituskyvyltään grafiikkamoottori tulee moninkertaistumaan nykyiseen
CoolBasiciin nähden. Moottori osaa tutkia käytettävän näytönohjaimen
ominaisuuksia, ja valitsee automaattisesti parhaat mahdolliset tavat
piirtää grafiikkaprimitiivejä ja erilaisia efektejä ajurin
ilmoittamien tuettujen ominaisuuksien mukaan. Näin pystytään tukemaan
mahdollisimman laajaa skaalaa eri näytönohjaimia, emolevyille
integroiduista hitaammista, kannettavien tietokoneiden kautta
pöytäkoneiden erillisnäytönohjaimiin, ja hyödyntämään kunkin alustan
ominaisuuksia ja laskutehoa mahdollisimman hyvin.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

ezbe wrote:CoolBasic Classic pelimaailman parannuksia

Tässä pikaisesti kasattua selitystä kuvan pohjalta ja
scenegraph/monikamera-systeemeistä yleisesti:

Renderöintimoottoria on taas puskettu jonkun matkaa eteenpäin.
Kuvakaappaus on useampaa kameraa käyttävästä testiohjelmasta, jossa on
myös käytössä nk. "scene graph", eli hierarkinen malli. Yksi
tyypillisimmistä esimerkeistä hierarkisesta mallista on
tähtijärjestelmä, joka siis tässäkin kuvassa näkyy. Tämä postaus ei
selitä juurta jaksain hierarkisen mallin yksityiskohtia, mikäli aihe
kiinnostaa, googlella löytynee läjittäin tarkempia kuvauksia ja
esimerkkejä.

Vasemman yläkulman kamera on kiinnitetty pelaajan alukseen, jolloin se
kääntyy aluksen mukana ja seuraa sitä automaattisesti. Vasemman
alakulman kameran kiinnitystä vaihdetaan aluksen liikkuessa aina
alusta lähimpään planeettaan. Oikean alakulman kamera näyttää kauas
zoomattua kameraa, joka on sijoitettu tähtijärjestelmän keskelle.
Oikean yläkulman kamera käyttää samanlaista näkymää, mutta sen päälle
on vielä piirretty viivoilla tähtijärjestelmän hierarkia (scenegraph).
Lyhyesti ja osittain puutteellisesti selitettynä, keskustähti on
hierarkiassa ylimpänä, johon planeetat on kytketty, ja planeettoihin
taas on liitetty kuita. Näiden välissä on vielä näkymättömiä
objekteja, jotta kuita ja planeettoja voidaan pyörittää paikallisen
akselin ympäri eri nopeuksilla.

Scene graph / objektihierarkia
Objekteja voidaan liittää ("parentoida") toisiinsa niin, että objektin
"lapset" liikkuvat "vanhemman" mukana. Käytännössä objektien
liittämisestä seuraa se, että lapsiobjektin sijainti ja rotaatio
ilmoitetaan sekä asetetaan suhteessa vanhempaan, eikä
"maailmankoordinaateissa", kuten "orvoilla" (ei vanhempaa)
objekteilla. Hierarkiaketju toimii "alaspäin", eli vanhemman
siirtäminen tai kääntäminen vaikuttaa kaikkiin sen lapsiin,
lastenlapsiin ja niin edelleen. Lapsiobjektin siirto tai rotatointi
kuitenkaan ei vaikuta vanhempaan, mutta jälleen kaikkiin kyseisen
objektin lapsiin. Esimerkkinä voitaisiin ottaa panssarivaunu, joka
koostuu kahdesta eri osasta: runko ja torni. Torni on rungon lapsi,
jolloin runkoa liikutettaessa ja käännettäessä torni liikkuu ja
kääntyy mukana. Tornia voidaan kuitenkin pyörittää riippumatta
rungosta, eli se a) liikkuu automaattisesti runkoa liikutettaessa, b)
kääntyy automaattisesti rungon kääntyessä ja c) sitä voidaan kääntää
(tai vaikka liikuttaa) itsenäisesti. Käännöissä on syytä ottaa
huomioon, että kääntö on suhteessa rungon asentoon, jolloin saattaa
olla tarpeen ottaa koordinaatistomuutokset huomioon
(tykki->runko->maailma). Joitakin apukomentoja esimerkiksi objektin
suunnan ja sijainnin määrittämiseen suhteessa maailmankoordinaatiston
akseleihin ja origoon tullaan hyvin todennäköisesti tarvitsemaan,
joten sellaisetkin toki tarjotaan. Mikään pakko hierarkista
järjestelmää ei ole käyttää, vaan halutessa objektit voidaan aina
sijoittaa yksinkertaisti suhteessa maailmankoordinaatistoon ja ilman
hierarkiasuhteita.

Monen kameran tuki
Testiohjelmassa ruutu on jaettu neljälle eri kameralle. Kameroille
määritellään alue, eli viewport, johon ne näytöllä piirtävät (alueet
voivat olla eri kokoisia, ruutua ei ole pakko jakaa saman kokoisiin
alueisiin tai edes käyttää kokonaan). Kamerat ovat "objekteja"
(peliobjekteja) siinä missä kaikki muutkin, joskaan tietyt komennot
(kuten ObjectOrder, tai mikä sitä tuleekaan vastaamaan) eivät ole
järkeviä kameran tapauksessa, eivätkä täten tule siihen vaikuttamaan.

Suurin osa (ellei kaikki) ruutukoordinaattien mukaan toimivista
piirtokomennoista tulevat olemaan "kamerakohtaisia". Tämä tarkoittaa,
että esimerkiksi viiva pisteestä 0,0 pisteeseen 100,100 piirretään
kameran viewportin mukaan, ei suoraan näytön koordinaatiston mukaan.
Tietysti jos käytössä on koko näytön alueen käyttävä kamera, vastaavat
kamerakoordinaatit näyttökoordinaatteja.

Kameroiden näkemää aluetta voidaan piirtää näytölle yksi ("nykyinen")
kamera kerrallaan, asettamalla halutut kamerat "aktiivisiksi" ja
käskemällä runtime-moottoria piirtämään kaikki aktiiviset kamerat, tai
näitä yhdistelemällä: esim. piirrä kaikki aktiiviset kamerat (jos
vaikkapa kamerat 1 ja 3 olisi asetettu aktiivisiksi), tee jotain muuta
välissä ja piirrä kamera 2 jne. Kameroiden yksittäispiirrosta
hyödytään myös siinä tapauksessa, että käyttäjä haluaisi useampia
täyden ruudun kameroita, joiden välillä voidaan vaihdella. Näin
ohjelmassa voisi olla vaikkapa kaksi eri täyden ruudun kameraa, mutta
vain jompaa kumpaa piirrettäisiin kerrallaan, ja kameroiden välillä
voisi vaihtaa tuhoamatta toista välissä.

Kamerajärjestelmästä olisi mukava kuulla kommentteja, tätä(kään) osaa
moottorista ei ole vielä lyöty täysin lukkoon, joten mikäli tunnet
keksineesi jonkin hyvän ominaisuuden (tai paremman tavan kontrolloida
kameroita ylipäätään), kerro toki meille.

Image
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

Tämänkertainen info kertoo lyhyesti suomeksi ne asiat, jotka kirjoitin taannoin blogiini. Kyseinen blogiposti on yli 2 200 sanan romaani, joten asioiden tiivistäminen lienee paikallaan.

Koko CoolBasic-projekti jakautuu useaan pienempään aliprojektiin, jotka etenevät lähes itsenäisesti. Olemme siis allokoineet tiimin miehityksen näihin pienempiin projekteihin niin, että jokaisen tiedot ja taidot pääsisivät hyötykäyttöön. Yleisesti ottaen nämä kaikki ovat edenneet hyvin, ja puolessa vuodessa ollaan saatu konkreettista jälkeäkin aikaan (touko-kesäkuun vaihteen mökkimiitissä meillä oli mm. videotykkiesitys uudesta editorista ja pelimoottorista, jossa ne nähtiin toiminnassa livenä). Ihan vielä ei olla kuitenkaan Beta-asteen lähettyvillä, ja todennäköisesti kasvatamme testiryhmää portaittain sisäisestä Betasta rajoitettuun Betaan ja lopuksi julkiseen Betaan. Tämänkertainen info on yleinen yhteenveto näistä aliprojekteista, joita koko CoolBasic Classic -kehitykseen tällä hetkellä liittyy - yksityiskohtiin palataan sitten myöhemmin.

Editori
Niin kuin foorumilla on juteltu jo useamman kerran, koodieditori kokee massiivisen muodonmuutoksen. Se arkkitehtuurisesti jo nyt on sillä tasolla, että yksikään kilpaileva tuote (pelinteko-ohjelmointikielet) ei samaan näillä näkymin yllä. Sen käyttöliittymä muistuttaa muita moderneja editoreita, kuten Visual Studiota ja Eclipseä, ja se tukee yhtälailla käyttöliittymään pultattavia moduuleita ja liitännäisiä. Tämä tarkoittaa mm. sitä, että editoria voi jatkossa laajentaa helposti, ja se tuleekin palvelemaan kehitysympäristönä mahdollisesti muillekin tuotteille kuin CoolBasic Classicille. Jos joku haluaa kirjottaa sille esim. oman ohjelmointikielen tai muun pelintekotyökalun, se on täysin mahdollista. Kaikki asennetut tuotteet (esim. CoolBasic Classic ja CoolBasic V3) pidetään lisäksi ajantasalla automaattisten päivityksien kautta.

Modernit kehitysympäristöt lähtevät siitä oletuksesta, että kaikki koodi kuuluu aina johonkin projektiin ja projektiin voidaan siis luoda lähdekooditiedostoja. Lisäksi samaan projektiin voi kuulua mm. pelimediaa (kuvat, objektit, äänet jne.) ja muita tiedostoja. Kaikkia peliprojekteja käytetään siis yhtenä kokonaisuutena - jopa silloin kun haluatte nopeasti demota jotain, pitää luoda uusi nimetty projekti (meillä on kuitenkin suunnitelmia helpottaa nopeiden ja nimettömien demoiluprojektien tekemistä). Projektipohjainen lähtökohta on varmasti kuitenkin loppupeleissä järkevämpi ja lisäksi se avaa uusia ovia mielenkiintoisemmille mahdollisuuksille (joista kerrotaan myöhemmin lisää).

Kuvitelkaa esimerkiksi, että teillä on editorissa auki parikin projektia yhtäaikaa: toinen on CoolBasic Classic -projekti, joka sisältää pelikoodin ja toinen on Tilester-projekti, joka sisältää sen pelin käyttämät kartat. Jos koko peli kaikkine projekteineen halutaan siirtää vaikkapa muistitikulla toiseen tietokoneeseen, onnistuu se silti vain yhden hakemiston kopioimisella. Lisäksi kun jokainen peliprojekti on itsenäinen pakettinsa, ei konflikteja muiden projektien ja tiedostojen kanssa tule.

Editori pystyy hallitsemaan syntaksivärjätyn tekstin lisäksi paljon muunlaistakin sisältöä. Välilehtiin voidaan avata mm. webbisivuja (esim. manuaali), aloitussivu, asetusikkunoita ja jopa visuaalisia editoreja (esim. Tilester-karttaeditori voi hyvinkin tulla kiinteäksi osaksi editoria). Välilehtien sisältöä ei oikeastaan rajoita mikään.

Syntaksinvärjäyskomponentti parantuu huomattavasti (tukee mm. Intellisenseä), mutta lisäksi vähintäänkin yhtä tärkeä ominaisuus on editorin sisäänrakennettu ikkunointijärjestelmä, jolla teemme parhaillaan kokeita. Sen avulla voi mm. vaihtaa välilehtien paikkaa, irrottaa välilehtiä uusiksi ikkunoiksi (joita voi sitten vaikkapa raahailla toiseen näyttöön) ja telakoida välilehtiä mihin tahansa reunaan. Koko editorin asettelu on täten täysin muokattavissa ja on hyvin lähellä sitä mitä Visual Studio 2010 mahdollistaa tällä hetkellä. Myös muita käyttliittymäkohtaisia kokeiluita on meneillään, mm. mahdollinen Ribbon (Office 2007 & 2010 ulkonäkö), ja jotain varsin tuoretta perinteisen puunäkymän ja asetusikkunan yhdistelmään.

Muita mielenkiintoisia ominaisuuksia ovat mm. editorin "Aloitussivu" (joka tarjoaa viimeisimpien projektien lisäksi mm. kuulumisia nettiyhteisöstä tai jopa interaktiivista sisältöä) sekä melkeinpä rajaton skinnaustuki, jossa pelkkien editorin värien lisäksi voidaan rakentaa jopa käyttöliittymän animointeja ja erikoisefektejä.

Paljastamme kuvia editorista tulevina viikkoina.

CoolBasic Classic
Toki yritämme pitää CoolBasic Classicin mahdollisimman samanlaisena kuin mitä nykyinen CoolBasic on, mutta teemme silti pieniä muutoksia yleiseen syntaksiin. Esimerkiksi jäsenoperaattori "\" vaihtuu "tavallisemmaksi" pisteeksi. Linkitettyjä listoja voi nyt luoda vapaasti (ja voivat olla mitä tyyppiä tahansa) ja taulukoita voi nyt palauttaa funktioista ja välittää niille argumentteina. Taulukot voivat myös olla mitä tahansa (itsemääritelyäkin) tyyppiä. Vakioiden nimeämiset ja ON/OFF korvaaminen True/False:lla ovat pienempia muutoksia, mutta tavoitteena on se, että vanhoja CoolBasic-pelejä voitaisiin melko vähällä vaivalla kirjoittaa uudelleen uudelle alustalle. Tiettyjen käytäntöjen yhdenmukaistamien tässä vaiheessa kehitystä on äärimmäisen tärkeää.

CoolBasic Classic sinällään on pelkkä ohjelmointikieli, ja se käyttää ihan omaa pelimoottoria, CoolVES:iä. Periaatteessa pelejä CoolVES:lle voidaan kirjoittaa muillakin kielillä, koska sen tulkkaaman tavukoodin rakenne määritellään julkisesti. Kenties teille C-syntaksin ystäville tarjotaan joskus vaihtoehtoinen kieli (joka pulttautuu tietysti osaksi editoria), joka silti käyttää täsmälleen samoja komentosettejä kuin että peli kirjoitettaisiin CoolBasic Classicilla.

Kääntäjä on tällä hetkellä vielä vaiheessa, mutta kokeiluluontoinen koodi, mikä otettiin uudesta V3-kääntäjästä, näyttäisi toimivan hyvin ja odotetun vikkelästi. Uusi kääntäjä tulee olemaan siis tuhansia prosentteja nopeampi kuin nykyinsessä CoolBasic:ssa.

CoolVES-pelimoottori
Editorin ohella pelimoottori on edistynyt todella huimasti 6kk aikana. Se sisätää jo samat asiat kuin nykyinen CoolBasic, ja lisäksi paljon enemmän! Kaikki grafiikka on nyt laitteistokiihdytettyä (OpenGL ja crossplatform), ja erilaiset sekoitukset (läpinäkyvyydet eri intensiteeteillä), suodatukset ja monimutkaiset materiaalit (varjostimet) toimivat jo! Objektien lataaminen on siksi nykyisellään todella nopeaa ja niitä voidaan pyöritellä, skaalata ja transformoida ruudulla ihan vapaasti ja ilman suorituskykyongelmia). Tavoitteena on, että esim. tilekartoille pätee samat vapaudet. Uusia ominaisuuksia ovat mm. objektien parent-child-suhteet sekä kameran zoomaus ja pyöritys.

Yksi jännimmistä uusista ominaisuuksista on kuitenkin sisäänrakennettu fysiikkamoottori: mille tahansa objektille voidaan asettaa mm. massa ja muoto, ja CoolVES hoitaa loput. Objektit kimpoavat seinistä ja toisistaan ja koko törmäysjärjestelmä rakennettaneen tämän ympärille. Pelihahmon hyppääminen ei ole sen monimutkaisempaa kuin impulssin antaminen ylöspäin silloin kun jotakin näppäintä painetaan. Jos pää kolahtaa kattoon, tippuu pelihahmo automaattisesti takaisin alas (ja voi siinä välissä soittaa vaikkapa kyykistymisanimaation, koska törmäystapahtumiin päästään ohjelmallisesti käsiksi). Fysiikkamoottori on jo toteutettu ja toimii meidän sisäisissä testeissä mainiosti (ja sitä mm. demottiin mökkimiitissä).

Pelimoottorista julkaistaneen kuvia seuraavien viikkojen aikana.

Manuaali
Tästä on jo olemassa graafinen alustava suunnitelma, mutta manuaaliprojekti pysyy todennäköisesti pysäytetyssä tilassa kunnes kääntäjä tuottaa kunnollista tavukoodia ja CoolVES:n tulkkia päästään rakentamaan (ja komentosettejä kunnolla suunnittelemaan). Ihan MSDN:n kaltaiseen puuviidakkoon ei tässä todennäköisesti lähdetä, mutta manuaalin navigointi ja käytettävyys saavat jättiparannuksen - ja modernimman ulkoasun ja kunnon CSS-tyylityksen. Tällä kertaa manuaalisivuja voi ehkä tulevaisuudessa kommentoida ja sisältöä on meidän puolelta huomattavasti parempi ylläpitää. Suunnitteilla on lisäksi mm. integraatiopalveluiden tarjoamista ja rajapinnan paljastamista osittain ulospäin.

Kotisivu
Tavoitteena on luoda portaali, jonka sisältö on tarpeeksi houkuttelevaa, että CoolBasic-käyttäjät kävisivät aktiivisesti sielläkin (pelkkien foorumien ja latauslinkin lisäksi). tarkoitusta varten olemme rakentamassa omaa sisällönhallintajärjestelmää (CMS), jonka avulla sivujen jäsentäminen ja järjesteleminen, ja tietysti sisällön muokkaaminen olisi helppoa.

Lopuksi
Toivottavasti tämä antoi jonkinlaisen kuva siitä kuinka laaja tämä koko projekti on. Huomatkaa, että kaikki mitä tässä kerrottiin, voi vielä muuttua. Kuvakaappauksia editorista on tulossa tulevina viikkoina, ja seuraava blogipostini käsittelee todennäköisesti juuri editoria.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

Uusi blogiposti on ilmestynyt.

Tässä kirjoituksessa käsitellään Cool VES:n (eli CoolBasic Classicin käyttämää pelimoottoria) graafisia ominaisuuksia, ja nyt mukana on muutama kuvakaappaus. En aio suomentaa koko tekstiä, mutta tiivistettynä siinä kerrotaan, että Cool VES:n grafiikkamoottori on jo ylittänyt nykyisen CoolBasicin toiminnallisuuden, ja että mukana on niiden lisäksi liuta uusia leluja. Huomattavin uusista ominaisuuksista on tuki varjostimille, joiden avulla objektien ulkonäköä voidaan muokata hyvin monipuolisesti. Perusobjekteja voi renderöidä läpinäkyvinä erilaisilla sekoitusmenetelmillä, mutta varjostimilla efektitykitys voidaan viedä paljon pitemmälle: objekteihin saa mm. pinnan 3-ulotteisuutta, kimaltelua, värien vääristämistä ja erilaisia sumennusefektejä. Varjostimia voidaan käyttää paikallisesti tai koko ruudulla (esimerkiksi koko pelimaailman sävyttäminen mustavalkoiseksi). CoolBasic-peleihin saadaan jatkossa mm. realistisen näköisiä vesiefektejä, yksityiskohtien keinotekoista rikastamista ja muita pinnoitetehosteita.

Toinen kirjoituksen pääaiheista on uusi fysiikkamoottori, jonka kuvakaappaukset lienevät mielenkiintoisia. Koko törmäyssysteemi rakennetaan nyt fysiikan päälle, joten mikä tahansa peliobjekti saadaan kimpoilemaan ja törmäämään pelimaailman ja muiden objektien kanssa. Uusi mekaniikka mahdollistaa kaikenmuotoisten kappaleiden vuorovaikutuksen. Kaikki artikkelissa esitetyt kuvat ovat live-demoista, joita esittelin yleisölle Assembly 2010:ssä.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

*Tämä posti on siirretty toisesta paikasta*

Tällä kertaa ajattelin julkaista blogissani jotain ihan uudenlaista. Tein elämäni ensimmäisen videon ja tungin sen YouTubeen. 15 minuutin pätkässä demoan DevTeamin sisäisessä käytössä olevaa työkalua - harvinaista materiaalia siis. Sönkötin esityksen englanniksi eikä minulla ollut yhtään kokemusta videoiden nauhottamisesta tai editoinnista tai enkoodauksesta. Eikä suullinen englantini ole edes kovin selkeää. Olosuhteet huomioon ottaen olen ihan tyytyväinen lopputulokseen :)

Opin zoomaamaan vasta sen jälkeen kun video oli jo YouTubessa. Mutta ensi kerralla paremmin sitten.

Blogiviestin tiivistelmä menee jotenkin tähän suuntaan:
Osana strategiaamme pyrimme eriyttämään kielet (CoolBasic Classic) ja pelimoottorit (Cool VES) niin, että ne eivät suoraan riipu toisistaan. CB Classic on vain kieli, jolla voidaan kirjoittaa ohjelmia eikä se tiedä lähtökohtaisesti edes niitä funktioita ja vakioita, jotka Cool VES tarjoaa. Lista näistä funktioista välitetään Classicin kääntäjälle erillisen määritystiedoston avulla, se välitetään kääntäjälle komentorivin kautta. Funktio- ja vakiolistausten koostamiseen tehtiin erillinen apuohjelma, Cool Framework Definition Editor, jonka käyttöä demoan videossa.

Määritystiedostoja on kahdenlaisia: XML- ja binääriformaatissa olevia. Ne sisältävät saman datan, mutta ne on tarkoitettu eri tyyppisten sovellusten käyttöön: XML-versiota käyttää mm. Cool Developer editori (jotta se osaa värjätä kaikki tarjolla olevat funktiot), ja binääriformaattia käyttävät kääntäjät, koska niiden lukeminen on nopeaa. Kummankin version formaatti on julkinen ja binäärin speksidokumentti tulee julkiseen jakoon sitten omana aikanaan.
Ja uusi CB-sarjis on myös julkaistu :)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

Cool Developer koodieditorista on nyt esittelyvideo blogissani.

Se demoaa mm. sen edistyksellistä asettelu/ikkunointi-moottoria ja projektirakennetta. Video kannattaa katsoa HDna.

Videon teki ja koosti DevTeamin caje.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

Päätimme siirtää sekä CoolBasic Classic kääntäjän että Cool VES pelimoottorin toiseen ohjelmointiympäristöön:

- Cool VES siirtyy C++:lle
- CoolBasic Classic kääntäjä siirtyy C#:lle

Kummatkin portataan silti sekä Windowsille että Linuxille. Vain meidän kehityskielet ja -ympäristöt vaihtuivat tehokkaampiin. Paremmilla työkaluilla on aina mukavampi (ja tuottavampi) tehdä töitä ;)

Alkuperäinen artikkeli löytyy täältä.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutiset

Post by Zero »

Kirjoitin uuden blogipostin. Sen sanoma tiivistettynä:
CoolBasic Classic kääntäjä saavutti ensimmäisen virstanpylvään kun sen lekseri valmistui. Lisäksi se osaa nyt lukea Cool VES:n symbolimääritykset (kääntäjä tunnistaa siten funktiot kuten LoadObject tai DrawScreen).

Lisäksi postissa selitettiin mitä tapahtuu silloin kun käyttäjä määrittelee samannimisen symbolin kuin mitä Cool VES jo tarjoaa.

Postissa on myös havainnollinen kuva siitä kuinka paljon kääntäjästä on valmiina (huomatkaa, että sen kirjoittaminen aloitettiin parisen viikkoa sitten alusta C#:lla). Kaiken kaikkiaan kääntäjä on siis edistynyt vahdilla, mutta onhan siihen käytettykin 4-6 tuntia päivässä (täyden työpäivän jälkeen, huom).
Alkuperäinen artikkeli löytyy täältä.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

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