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)