I'm really happy with what I can do so far:
Really simple syntax as far as I'm concerned.
Type Application Field W,H Field Title$ Field Windowed Field BPP Field Uses3D Field Camera Method Application(Width=800,Height=600,BPP=32,Windowed=0,Uses3D=0,Title$="My Application") \W = Width \H = Height \Title = Title \BPP = BPP \Uses3D = Uses3D \Windowed = Windowed If \Uses3D Then Graphics3D \W,\H,\BPP,1+\Windowed \Camera = CreateCamera() Else Graphics \W,\H,\BPP,1+\Windowed EndIf AppTitle Title$,"Close application?" End Method Method MainLoop() Repeat UpdateWorld RenderWorld Text 4,4,Millisecs() Flip Until KeyHit(1) End Method Method GetCamera() Return \Camera End Method Method Free() FreeEntity \Camera ClearWorld EndGraphics Delete this End Method End Type Type Entity Field X# Field Y# Field Z# Field Pitch# Field Yaw# Field Roll# Field ObjHandle End Type Type Mesh Extends Entity Method Mesh(Path$) \ObjHandle = LoadMesh(Path$) End MEthod End Type Type Sprite Extends Entity Field Width Field Height Field Alpha Method Sprite(Path$,Alpha=1) \ObjHandle = LoadSprite(Path$,1+2*Alpha) End Method End Type Type AnimSprite Extends Sprite Field Frames Field CurrentFrame Method Sprite(Path$,Frames,Alpha=1) \Frames = Frames \ObjHandle = LoadSprite(Path$,1+2*Alpha) End Method End Type Global A.Application = New Application(320,240,32,1,1,"Test") YourCam = A\GetCamera() A\MainLoop() A\Free()
Really simple syntax as far as I'm concerned.