ChaosBasic [version 0.0.2.4]

Muu yhteisön välinen keskustelu.
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Re: ChaosBasic [version 0.0.2.4]

Post by jannepelaa »

Miksikäs tämä ei toimi?

Code: Select all

DllFunction "user32.dll" "MessageBoxA" MsgBox(Var f, Var msg As String, Var cap As String, Var mode) As Integer
LoadDll "user32.dll"
MsgBox(0, "Hei", "Viesti", 1)
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Koska merkkijonot ovat const char*, eikä std::string* kuten pitäisi. Dll-tukeen tarvitaan vielä dokumentaatiota. Kunhan jaksaisi tehdä sen manuaalin.... :cry:
The darkest spells can be found from
http://tunkkaus.blogspot.fi
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by tuhoojabotti »

jos viimeksi oli 90% valmis? niin paljos mahtais nyt olla? (kieli pitkällä...)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Ei yhtään sen valmiimpi, koska en ole jaksanut/ehtinyt tehdä mitään.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Re: ChaosBasic [version 0.0.2.4]

Post by jannepelaa »

Dibalo wrote:Koska merkkijonot ovat const char*, eikä std::string* kuten pitäisi. Dll-tukeen tarvitaan vielä dokumentaatiota. Kunhan jaksaisi tehdä sen manuaalin.... :cry:
Dll:n funktion määrittelyssä voisi sitten valita erilaisista vaihtoehdoista (kuten std::stringistä).
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Dll-tukea hiottu hieman. Nyt merkkijonot välitetään dll:iin AINA muodossa const char*. Lisäksi poistin sen typerän osoitin-jutun. Lisäksi poistin rajoitukset parametrien lukumäärästä ja muutin muutenkin dll-toimintaa varmemmaksi. Todennäköisesti lisään jossain vaiheessa myös tuen käyttäjän omien tyyppien välittämiseen dll:lle. ;) Lisäksi lisäsin kaksi eri kutsumistyyppiä: __stdcall (WINAPI käyttää) ja __cdecl.

Nyt esimerkiksi seuraava on mahdollista:

Code: Select all

DllFunction __stdcall "User32.dll" "MessageBoxA" Messagebox(Var hwnd, Var text As String, Var title As String, Var type) As String
Var MB_OK = 0

LoadDll "User32.dll"
Messagebox(0, "Moi maailmaaaaaa!!", "...", MB_OK)
EDIT: Lisäksi olen parantelemassa Kaaosta myös matalamman tason asioiden suhteen kuten muistinhallinnan ja operaattorien. Jos kaikki menee suunnitelmien mukaan, uuden version logiikka on entistä nopeampaa, exe:n koko on pienentynyt ja muistinkulutus on pienempi. Lisäksi uusi koodirakenne helpottaa minun työtäni päivittää ominaisuuksia ja korjailla mahdollisia bugeja. :mrgreen:
The darkest spells can be found from
http://tunkkaus.blogspot.fi
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Re: ChaosBasic [version 0.0.2.4]

Post by jannepelaa »

Kuulostaa hyvältä :D , mutta harmi, että seuraava versio on vasta (allekirjoituksesi mukaan) 60% valmis.
EDIT: Eikös MessageBoxA palauta int:ä?
_jabanii

Re: ChaosBasic [version 0.0.2.4]

Post by _jabanii »

Dibalo wrote:Dll-tukea hiottu hieman. Nyt merkkijonot välitetään dll:iin AINA muodossa const char*. Lisäksi poistin sen typerän osoitin-jutun. Lisäksi poistin rajoitukset parametrien lukumäärästä ja muutin muutenkin dll-toimintaa varmemmaksi. Todennäköisesti lisään jossain vaiheessa myös tuen käyttäjän omien tyyppien välittämiseen dll:lle. ;) Lisäksi lisäsin kaksi eri kutsumistyyppiä: __stdcall (WINAPI käyttää) ja __cdecl.

Nyt esimerkiksi seuraava on mahdollista:

Code: Select all

DllFunction __stdcall "User32.dll" "MessageBoxA" Messagebox(Var hwnd, Var text As String, Var title As String, Var type) As String
Var MB_OK = 0

LoadDll "User32.dll"
Messagebox(0, "Moi maailmaaaaaa!!", "...", MB_OK)
EDIT: Lisäksi olen parantelemassa Kaaosta myös matalamman tason asioiden suhteen kuten muistinhallinnan ja operaattorien. Jos kaikki menee suunnitelmien mukaan, uuden version logiikka on entistä nopeampaa, exe:n koko on pienentynyt ja muistinkulutus on pienempi. Lisäksi uusi koodirakenne helpottaa minun työtäni päivittää ominaisuuksia ja korjailla mahdollisia bugeja. :mrgreen:
Toteutettu inline assemblyllä? Käytitkös mahdollisesti esimerkkiäni PS.orgissa? Kiinostaa vain tietää ;)
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

En käytä.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Sami The Great »

Ajattelin tässä, että tuleeko kaaokseen oma 3D engine vai käytätkö jotain valmista esim. ogre tai irrlicht? Jos tulee oma niin tuleeko se olemaan pelkkä grafiikka engine niin kuin ogre, vai tuleeko siihen myös muita ominaisuksia kuten törmäys tunnistus?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Misthema »

Tein tässä pientä testailua CB:n ja ChB:n välillä.

Tein plasma-efektin ensin CB:llä, ja tuntui todella hitaalta...
Noh, ajattelin sitten että teenpä saman ChB:llä. Sehän saattaisi olla jopa nopeampi! ;o
Toisin kävi:

FPS....
- CB:llä => 15-20
- ChB:llä => 5

Tässä koodi CB:lle ja ChB:lle:

CB:

Code: Select all

Const sw = 200 //ikkunan leveys
Const sh = 150 //ikkunen korkeus

SCREEN sw,sh,32,2
SetWindow "Plasma effect by misthema"


Repeat

    t=timer()/50 //aikaluku

    For w=0 To sw
     For h=0 To sh
        
        c#=(Sin((w+h+t)*3)+Cos((w-t)*3)+Cos(h-t)*3)*100+t/2 //randomia sinikikkailua
        
        Lock
            PutPixel2 w,h, (Int(Sin(c)*64+128) Shl 16) + (Int(Cos(c)*64+128) Shl 8) + 0
        Unlock

     Next h
    Next w

    Text 0,0,FPS()
    
    DrawScreen

Forever
ChB:

Code: Select all

Var sw = 100
Var sh = 75
Var c
Var t

Screen.Set(sw, sh)

Repeat

    t=Timer()/50 //aikaluku

    For w=0 To sw
     For h=0 To sh
        
        c=(Sin((w+h+t)*3)+Cos((w-t)*3)+Cos(h-t)*3)*100+t/2 //randomia sinikikkailua
        
        	Screen.SetColor(Sin(c)*64+128, Cos(c)*64+128, 0)
            Screen.Dot(w,h)

     Next
    Next

	Screen.SetColor(255,255,255)
    Screen.Text(0,0, Screen.FPS())
    
    Screen.Draw

Forever
Syyhän nyt saattaa olla siinä, ettei ChB:ssä ole samanmoisia komentoja vielä, kuten PutPixel ja ruudun lukitus,
ja Dot -komento on AINA ollut hidas, oli kyseessä mikä tahansa kieli.
Mutta näin kävi. :P
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Mistehema. Olet oikeassa. Kaaoksessa pisteiden piirto on toistaiseksi todella hidasta, koska verteksipuskuri lukitaan ja avataan joka kerta piirron yhteydessä. Tämä syö tehoa todella paljon. Myöhemmin pyrin tekemään tälläiset kikkailut shadereillä (näytönohjain hoitaa siis kaiken), joten nopeutta saataneen lisää. Vielä olisi kuitenkin tekemistä tämän manuaalin kanssa.. Onneks Drath lupautui auttamaan minua. Lisäksi aikasemmin mainittu muutos kaaoksen low-level-komennoissa vie paljon aikaa. Ja jos totta vaan puhutaan niiin en ole jaksanut pariin viikkoon koodata ollenkaan, on ollut nuo kirjoitukset aika pahasti tiellä. Huomenna olisi viimeinen koe, jospa se into sieltä saataisiin taas takaisin. :mrgreen:
Sami The Great wrote:Ajattelin tässä, että tuleeko kaaokseen oma 3D engine vai käytätkö jotain valmista esim. ogre tai irrlicht? Jos tulee oma niin tuleeko se olemaan pelkkä grafiikka engine niin kuin ogre, vai tuleeko siihen myös muita ominaisuksia kuten törmäys tunnistus?
Käytän valmista engineä, en vain ole päättänyt vielä mitä. Todennäköisesti itse panostan aluksi kaaoksen muihin ominaisuuksiin ja annan halukkaiden koodarigurujen "bindata" jonkin moottorin kaaokselle, jos 3D:llä on kauhea kiire. Tietysti toimin tiivissä yhteistyössä, jotta 3D-ominaisuuksista saataisiin mahdollisimman hyvät.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by tuhoojabotti »

voin auttaa manuaalien teossa jos tarvitset apua :D
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Manuaali tehdään erillisellä manuaalinteko-ohjelmalla, jota Drath tällä hetkellä väsää. Tämän vuoksi asialle ei voi tehdä mitään muuta kuin vain odottaa..
The darkest spells can be found from
http://tunkkaus.blogspot.fi
Mysterius Coder
Active Member
Posts: 133
Joined: Mon Aug 27, 2007 8:13 pm

Re: ChaosBasic [version 0.0.2.4]

Post by Mysterius Coder »

Älkää sitten alkako kiirehtimään sen manuaalin kanssa ;) Olisi harmi saada hyvä CB:n haastaja jota ei opi käyttämään millään... Aikaahan tässä on vaikka jouluun. (vai onko teillä joku henkilökohtainen deadline?) Anivei tämän viestin tarkoitus oli alunperin kysäistä kuinka monipuoliseen kieleen tässä tähdätään? Tulemmeko näkemään yksinkertaisia valmis moottoreita (kuten cb:n objektit) Tai ehkä nettikomentoja? Luultavasti saisin jtn tietoa lukemalla nämä 11 sivua mutta jaah... Olisi kiva saada siis uutta tietoa, oletteko pohtineet asiaa :geek:
Kyllä minä osaan, mutta kun mieli on tällasen kaaoksen vallassa, niin ei siitä mitään tule.
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

Henkilökohtainen deadline on asetettu 7.7.2008, jolloin lähden suorittamaan varusmiespalvelustani Utin Jääkärirykmenttiin. Pyrin tekemään kielestä kaikillä osa-alueilla paremman kuin CB - objekteja vastaavat systeemit on tulossa, samoin nettikomennot. Myös low-level -taso on mahdollista Dll:ien avulla. Näiden avulla on myös mahdollista bindata eri engineitä kiinni kaaokseen. Tavoitteenani on pitää Kaaos mahdollisimman pienenä, joten eri ominaisuudet (esim. nettikomennot) liitetään mukaan erinäisten rajapintojen avulla. Esimerkiksi nettikomennot voisi olla mahdollista vetää tällä tavalla:

Code: Select all

StdInclude "ChBNet.cif" // ChaosBasic Interface file tjsp..
Var connect As NetConnection = New NetConnection
connect.StartLoading "http://www.lollol.com/kuva.gif"

Repeat
    If connect.IsLoaded() Then
        connect.GetData().SaveToFile "imgs/kuva.gif"   // GetData() palauttaa MemoryBlock-instanssin
        End
    EndIf
Screen.Draw
Forever
Huom! Tämä on siis vasta visio.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Misthema »

No huhhuh... Tuon yksinkertaisempaa tuosta ei voikaan enää saada. :P
Nettikomennoista puheenollen (vaikkei todellakaan ole ajankohtainen aihe), ajattelin että voisitte tehdä liukulukujen, kokonaislukujen (yms.) ja merkkijonojen nettisiirrot siten, että jokaiselle olisi oma komentonsa. Eli siis ei tarvitsisi luoda erillisiä muistipaloja tai muita vastaavia.

Esimerkkiä:

Code: Select all

    StdInclude "ChBNet.cif" // ChaosBasic Interface file tjsp..
    Var connect As NetConnection = New NetConnection
    Var _integer = 1 As Integer
    Var _float = 2 As Integer
    Var _string = 3 As Integer
    connect.JoinServer("127.0.0.1") //tai jotain muuta sellaista

    Repeat
        If connect.IsConnected Then
            connect.SendDataInt(12837, _integer) //Lähetetään kokonaisluku omassa palassaan...
            connect.SendDataFloat(0,21252, _float) //Liukuluku...
            connect.SendDataString("merkkijono lol", _string) //Ja merkkijono.
            End
        EndIf
    Screen.Draw
    Forever
Jotain tuollaista hain. Ja "muistipalat" joissa nuo paikat on, voisivat olla itsestään venyviä, eli niitä venytetään tulkkaus vaiheessa tai muussa sopivan kokosiksi tai jotain.

Ja tuosta tietenkin päinvastaiset komennot:

Code: Select all

connect.GetDataInt(12837, _integer) //Vastaanotetaan kokonaisluku...
connect.GetDataFloat(0,21252, _float) //Liukuluku...
connect.GetDataString("merkkijono lol", _string) //Ja merkkijono.
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by tuhoojabotti »

Misthema wrote: Ja tuosta tietenkin päinvastaiset komennot:

Code: Select all

connect.GetDataInt(12837, _integer) //Vastaanotetaan kokonaisluku...
connect.GetDataFloat(0,21252, _float) //Liukuluku...
connect.GetDataString("merkkijono lol", _string) //Ja merkkijono.
tarkoitit varmaan
connect.GetDataFloat(0.21252, _float) //Liukuluku...
:D oli vaan pakko sanoo... ;)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by SPuntte »

No jopas. Tuo Dibalon esimerkki tosiaan näyttää yksinkertaiselta. Ainakin pitäisi tulla aloittelijaystävällinen.

Onko sinulla muuten jotakin "tiekarttaa" tämän projektin suhteen, siis oletko ajatellut, mihin tällä pyrit ja mikä on kielen kohderyhmä? Ihan mielenkiinnosta vaan kyselen.
Misthema wrote:*klips*
Ja tuosta tietenkin päinvastaiset komennot:

Code: Select all

connect.GetDataInt(12837, _integer) //Vastaanotetaan kokonaisluku...
connect.GetDataFloat(0,21252, _float) //Liukuluku...
connect.GetDataString("merkkijono lol", _string) //Ja merkkijono.
Täh? Mitä nuo sitten palauttaisivat? Joko ymmärrän ihan väärin tai sitten sinulla on paste&ajatusvirheenä jäänyt tuonne nuo dataparametrit, siis 12837, 0.21252 ja "merkkijono lol". Mihin niitä tarvitaan funktioissa, jotka vastaanottavat dataa?
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic [version 0.0.2.4]

Post by Dibalo »

SPuntte wrote:Onko sinulla muuten jotakin "tiekarttaa" tämän projektin suhteen, siis oletko ajatellut, mihin tällä pyrit ja mikä on kielen kohderyhmä? Ihan mielenkiinnosta vaan kyselen.
Eipä ole kirjallisena. Päästä kyllä löytyy... :P
Pitäisi kyllä hieman enemmän dokumentaatiota kirjoittaa, ei vaan jaksa... :|
Kohderyhmäksi olen suunnitellut erityisesti pelien teosta kiinnostuneet, aloittelevat ohjelmoijat.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
Post Reply