Monday, 18 January 2010

Engine Status - 19/01/10

Hello readers,

After a long and tiring day with shadows i've finally decided that it's time for a break. So here I am, and today I will talk a little bit about the progress of the game engine. Before I start, I realise that some people are curious (well at least one) about the Goa thing in the blog title. I think it's too early to tell people what that means; it might be fun to see what you think we mean.

At the moment the engine's functionalities are:

- renders .fbx, .x and custom models,
- renders everything through Deferred shading,
- screen Space Ambient Occlusion,
- spatial partitioning tree,
- portal System,
- key framed animation system,
- half a collision engine,
- menus and state machine,
- networking with Live and Lidgren,
- and multiple shadow casting lights.

The shaders have been written as micro shaders. I am particularly happy with this small and simple thing as it has made material management and rendering very simple and tidy.

Currently the game runs at an average of 55 fps, but there's still a lot more to be done so hopefully we'll be able to optimise the engine for a smooth and uninterrupted gaming experience.

Currently the future plans for the engine are :

- Scene graph (probably should've done this first)
- AI
- Event Management
- Particles (this shouldn't take too long since Yorrick is a pro with particle systems)
- Audio

Things that I would like to do but aren't important:
- Global illumination/colour bleeding (nearly done :P)
- Volumetric lights/god rays
- Rim light
- Anti-aliasing

Hope it was an intersting read. Would be nice to get some feedback on the blog and possibly any suggestions on what you would like us to divulge.


  1. Which spatial partionning method are you using? How do you position your portals in the scene? Automatic computation?
    I did a area/portal graph on day and it worked very well. At this time I had full control on the data because we add our own level editor but now I use Maya and I still search for a good method...
    Thank you.

  2. We're using a ND tree to split the scene into the spaces. We came up with our own solution, basically we split the scene into 4 parts and then sort out which part goes where. We do this recursively until all the objects in the scene are in their own part. The is first checked to see if it is in view, then we check each of the terrain pieces individually (engine splits the heightmap terrain into 20x20 pieces).

    Unfortunately we have to add the portals in manually through an editor (that part has yet to be implemented in the editor). We also have to manually tell the system which objects are in which room. Hmmm, might need to come up with a solution for that.