Thursday, January 31, 2008

4E6 Engine First Alpha Build, Feature Test : January Progress Log

Since my last update on the Destinatum Engine project I was recently given an assignment at uni to do pretty much what i was working on but using the Open Source Graphics Rendering Engine (Ogre : http://www.Ogre3d.org). in summary it is basically a scene graph for graphics rendering. fortunately the way it works is not too different to that of Destinatum Engine so porting the functionality across has been fairly painless, it was very easy to reintegrate all the work i did with the Newton game dynamics physics api ( http://newtondynamics.com ) through the use of Walaber’s wrapper for it ( http://walaber.com/ ), meaning i didn’t have to reinvent the wheel so to speak.

in addition to this i have added a number of new features:

Scenes are now fully editable in 3D studio Max, where as previously the objects needed to be exported seperately before positioning them in the scene via editable text files. this is carried out using an exporter called “OgreMax” which exports to Ogres native mesh format with a lot of scene specific stuff saved into XML format, particularly scene animations, transformations and lighting. making it very easy for me to manage different in game levels. physics data is still edited via text file, but this is flexible enough to group similar objects with similar characteristics.

I’ve been experimenting quite a lot with shading languages looking at different rendering techniques, particularly the use of bump maps, normal maps, and a similar but relatively unheard of technique called parallax mapping, which are all very nice ways to get high quality detail on low polygon meshes using the programmable pipeline of all modern shader capable graphics cards. also demoed in the above video is a demonstration of the use of shaders for applying post effects to the rendering in order to give different looks for different situations i.e under water, behind glass, watching something on a old movie tape. the transition of these is controlled by the scripting system i developed (which i will get to in a minute). a list of the effects demoed in this are listed below, and have been implemented using Ogres materials / compositor framework.
Old Tv, Bloom, Glass, Black & White, Embossed, Sharpen edges, Posterize, Laplace, Invert, Tiling, Old Movie, and HDR. these are all really place holders for final effects as im still undecided about a lot of specific elements and reasons for using certain post effects.

when eventually starting to bring a lot of elements together such as sound, post effects, video playback, scene animation, various game play tasks i realised that it would be much easier if a lot of the logic was separate from the Engine / Framework. and would allow for easy modification of game play. so i started off writing an event handler which receives input in the form of a string of a commands, this is then processed and passes all its messages to the appropriate game object managers. this has allowed me to develop a very flexible scripting system whereby it is possible to type commands into a console window and execute them, but also assign commands to Newtons material callbacks in order to allow triggers to execute various game play elements such as changing level, playing video / sound, spawning objects etc etc etc.  i eventually found i could flexibly execute timed sequences in this way by creating a Script class, that reads in a list of set commands each with a time to execute in the sequence so a trigger can execute a script file and effectively allow for a multitude of game play elements to be triggered from this.

Using the scripting system i devised, I’ve made it possible to attach objects to various nodes of a character, as shown in the video it is possible to pick up an object and throw it (the artwork doesn’t really do it any justice), and also attach the camera in order to track the thrown object and move the camera back to the player when it lands

In the next update I should hopefully be bringing a lot of this together into some basic game play scenarios in order to test that everything works well together and iron out any glaring bugs.

Posted by Mike on 01/31 at 05:55 PM
4ESix • (94) CommentsPermalink
Page 1 of 1 pages