Moni on varmasti ihmetellyt, miksi Kaaoksen uusi versio valmistuu näin tuskaisen hitaasti. Itse olen maininnut syyksi laiskuuden - tämä ei kuitenkaan pidä täysin paikkaansa, sillä olen kehittänyt Kaaoksen ominaisuuksia tuleviin versioihin. Kiinnostuin 3D:stä kunnolla noin pari kuukautta sitten ja päätin heti, että sellainen on ChaosBasiciinkin saatava. Valitettavasti 3D-moottorin integroiminen tulkkiin on yhtä tuskaa ja kasvattaa .EXE:n kokoa huimasti. Tämän vuoksi jouduin tyytymään kompromissiratkaisuun ja tein 3D-moottorista wrapattavan, kiitos toimivan DLL-tuen. Tämä tarkoittaa käytännössä sitä, jokainen voi wrapata oman haluamansa 3D-moottorin Kaaokseen kiinni, jos vain taidot piisaavat. Itse olen Ogre:n suuri ystävä, ja siksi olenkin tehnyt testejä kyseisellä enginellä.
Testitulokset ovat olleet lupaavia: olen saanut 3D-maailman pyörimään suhteellisen korkeilla FPS-lukemilla, ja vieläpä varsin näteillä grafiikoilla. Ja jotta saisitte hieman silmänkarkkia, tässäpä screenshotti aikaansaannoksistani:
Koodi samaan tuotokseen:
Code: Select all
// ogre grass demo with ChaosBasic 0.4.0.1
// Matti Lankinen
Include "OgreWrapper.chb"
Screen.Set 800,600,32
// rendersystemin valinta
Screen.Use RS_OGRE
// ladataan malli
Var head As Mesh = New Mesh
head.Load "media/OgreHead.mesh"
head.SetMaterial "media/materials/BumpMapping.mat"
// nostetaan hieman, että ei ole lattian keskellä
head.Translate 0,200,0
// luodaan lattia
Var floor As Floor = New Floor
floor.SetSize 5000,5000
floor.SetPosition 0,0,0
// näin helposti luodaan hieman ruohoa
// tekstuurin nimi, density (0-1) 0 = hyvin harva 1 = hyvin tiheä
floor.SetGrassLayer "media/example_grass.tga", 0.4
// skybox
// kyllä: jopa zipeistä voi ladata!
OgreWrapper.SetSkybox "media/space_sky.zip"
// lopuksi valo
Var l As Light = New Light
l.SetPosition 300,300,0
l.SetColor 238,188,17
l.SetRange 2500
// kameran movement
OgreWrapper.SetDefaultFPSCameraMovement OGRE_WASD
// päivitetään
Repeat
// 3D-objektit osaavat päivittää itse itsensä! :)
Screen.Draw
Forever