May 11, 2009

NEW Milestones

Milestone I (updated):
Rewrite everything and add threading support, so it adds more speed to multicore systems.

So.. I had to do alot of rewriting to get this done. Currently, AGE uses one thread per node, so actions of nodes (cameras, entities, lights, yes even lights) have a thread if it has a action.

So in larger systems engine may use up to 12000 threads, if the designer hasn't thought of one little detail.

Scenes can have an action too. Scenes, in essence are just and simply containers for nodes. These nodes represent a scene, or level if you prefer, in the game world. Scene actions are used to control the global level events and nodes. You can disable, hide, show, move, whatever any node. This is impractal for some events, but helps alot to narrow down the number of threads running.

Currently this milestone is achieved, and I'm working on materials.

I would love to show you a screenshot, but I'm not home at the moment (and don't have my memory stick with me), so please cope with me for few more days and I'll update next week with a textured scene (or spheres + complex models if I'm lazy and won't work out the scene file format).

Milestone II:
Materials materials materials.

So, the materials pipeline, which means I will also have the need to write compatibilty system too.

Materials.. I will explain the pipeline when it's fully designed and tested to work. Now I will rant about some of the features in my compatibility system:

struct ageCompatibilty;
Compatibility is an important feature of any engine hoping to survive the PC. Even if a engine works in my computer, it doesn't mean it will work with the exact same setting on yours.

That's why ageCompatibility is an important feature. It lists all the features of target pc. OpenGL level, texel fillrate, max texture size... Name it, and it probably is in the compatibility system. This struct is mandatory for the material pipeline when choosing which shaders can be displayed (take an example of pc which does not support floating point 16 bit texture value. This means that this pc is unable to process HDR rendering).

struct ageLevels;
Levels. We all know the games that have the "settings" in their menu. This 'little' struct is used to determine WHAT and HOW things will be done in MAX settings. So even if you hit the Ultra-level for the texture size, it doesn't mean all textures are 2048x2048. No. It means that it's the max. The developer using the engine must provide the data supporting the settings. Some games never use higher than 512x512 textures. So the Ultra or High setting is useless.

For this, the developer may change the level descriptions and assigns. default values for texture size are:

none - 0x0
low - 256x256
med - 512x512
high 1024x1024
ultra 2048x2048

but the developer may find high/ultra useless, so he changes the values to:

none - 0x0
low - 64x64
med - 128x128
high - 256x256
ultra - 512x512

or just to

none - 0x0
low - 256x256
med - 512x512
high - 512x512
ultra - 512x512

which means, that 512x512 is the maximum texture size rendered regardless what setting is used.


Enough of ranting about useless features and back to dev ->