1. Physics:

There still are some issues - maybe a leak?

The gameengine breaks encapsulation of the physics engine. This means you can't switch physics engines. This is just straight coding grunt work: remove KX_IPhysicsController, KX_SumoPhysicsController etc from Ketsji, and put the necessary parts in PHY_IPhysicsController. Remove all SM_Scene & SM_Object references from Ketsji, and design a PHY_ interface to abstract them.

2. Rewrite the Mesh Data Structure:

Currently it uses multiple vertex arrays (1 per material per object.) It should use one vertex array and multiple index arrays - the physics should use an index array for mesh objects too.

It also needs edge information for shadow volumes.

3. Scene Culling:

We could get a big speed boost by doing a visibility test on each object, ie only render what is visible - this is what saluk was doing. He did his own code, but I think it would be easier to use the physics system to attach a cone to the camera. This assumes frame coherence, ie the visible set doesn't change much between frames. Solid apparently won't perform so well as this, because a view cone is long and thin and moves too much when rotating. See #7

4. Fix the Alpha Bug:

The rasterizer doesn't do depth sorting, so it is possible for a distant transparent object to be drawn over a close transparent object. This would work best with #4, i.e. use a tree to store the visible set.

5. Sound System:

Needs Ogg Vorbis (codecs) support, separate cd & audio into different classes. Make it so loop points work with OpenAL.

6. Scene Graph:

Change to a tree instead of a list.

 

<dl>

<dt>Tree Builder idea:</dt>

<dd>merge the two bounding boxes that will yield the smallest resulting box. Can either use volume (x*y*z) or radius (x^2 + y^2 + z^2) to identify 'smallest'.</dd>

 

Camera can use this to do fast scene culling. Lamps will need locality for casting shadows.

 

7. Rasterizer Improvements:

Blender's material system (Texture/Map Input/Map Output panels) match very closely to OpenGL. (Except for ray tracer stuff)