Page 11 of 14

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 05, 2008 2:11 pm
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)

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 05, 2008 9:14 pm
by Dibalo
Koska merkkijonot ovat const char*, eikä std::string* kuten pitäisi. Dll-tukeen tarvitaan vielä dokumentaatiota. Kunhan jaksaisi tehdä sen manuaalin.... :cry:

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 05, 2008 10:27 pm
by tuhoojabotti
jos viimeksi oli 90% valmis? niin paljos mahtais nyt olla? (kieli pitkällä...)

Re: ChaosBasic [version 0.0.2.4]

Posted: Thu Mar 06, 2008 11:33 am
by Dibalo
Ei yhtään sen valmiimpi, koska en ole jaksanut/ehtinyt tehdä mitään.

Re: ChaosBasic [version 0.0.2.4]

Posted: Thu Mar 06, 2008 5:33 pm
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ä).

Re: ChaosBasic [version 0.0.2.4]

Posted: Fri Mar 07, 2008 1:04 pm
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:

Re: ChaosBasic [version 0.0.2.4]

Posted: Fri Mar 07, 2008 2:36 pm
by jannepelaa
Kuulostaa hyvältä :D , mutta harmi, että seuraava versio on vasta (allekirjoituksesi mukaan) 60% valmis.
EDIT: Eikös MessageBoxA palauta int:ä?

Re: ChaosBasic [version 0.0.2.4]

Posted: Fri Mar 07, 2008 6:35 pm
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ää ;)

Re: ChaosBasic [version 0.0.2.4]

Posted: Fri Mar 07, 2008 7:44 pm
by Dibalo
En käytä.

Re: ChaosBasic [version 0.0.2.4]

Posted: Sun Mar 23, 2008 4:09 pm
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?

Re: ChaosBasic [version 0.0.2.4]

Posted: Tue Mar 25, 2008 12:00 am
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

Re: ChaosBasic [version 0.0.2.4]

Posted: Tue Mar 25, 2008 12:34 pm
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.

Re: ChaosBasic [version 0.0.2.4]

Posted: Tue Mar 25, 2008 4:09 pm
by tuhoojabotti
voin auttaa manuaalien teossa jos tarvitset apua :D

Re: ChaosBasic [version 0.0.2.4]

Posted: Tue Mar 25, 2008 5:17 pm
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..

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 26, 2008 12:04 pm
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:

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 26, 2008 4:16 pm
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.

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 26, 2008 9:45 pm
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.

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 26, 2008 10:43 pm
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... ;)

Re: ChaosBasic [version 0.0.2.4]

Posted: Wed Mar 26, 2008 11:52 pm
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?

Re: ChaosBasic [version 0.0.2.4]

Posted: Thu Mar 27, 2008 11:26 am
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.