Hi Methulah – thanks for the comments. While I would very much like to add shader support my pre dx9 graphics card is something of a problem! My most immediate goal is to really polish and tidy a lot of the code up. Unfortunately the prototype depicted is built on top of a lot of legacy procedural code I wrote way before I even studied programming at uni, so in the way that a "true" independent 3D engine goes much of it relies on hard code. It can of course load x files and the tiling algorithm, particularly how it snaps edges together, is a work of art, but nothing like a level map editor is implemented yet. Basically I just feed the tiler some hard coded xyz points at random and the tiler slopes out around these points from the top to the ground. The effect is simple but surprisingly cool, as the tiler can smooth over hills that collide.
Varying LOD is of course a nice thing to implement for a game with maybe a few hundred or so objects in the background but I am really keen on having thousands of objects on screen, something that to this day has not been done in a commercial game. I think using billboards at distance is okay if you keep the true 3D zone fairly wide and you have a cool FPS interface that interacts nicely with high detail meshes.
As for the input I have paid special attention to the mouse. You can imagine that designing a FPS strategy hybrid game plays havoc with the controls. I recall this was done somewhat okay with the command aspect of Operation Flashpoint, so I have tried to capture this. The FPS control aspect works by holding the right mouse button for rotation and holding left moves forward. When you let go of all these buttons a 3D cursor pops up and you can move it to command while the camera stays still. The command 3D mouse function I have not put into my engine yet but I have successfully created and used this in a little demo I made ages ago.
Physics, AI and networking are not on the radar yet. Isaac Newton is not a part of my 3D world… yet. Basically now that I have developed a proof of concept prototype, which is what my engine is at the moment, my next task is rebuilding it from the ground up using a current c++ compiler, in OO, in dx9 and with as many optimisations as I can find. Frame rate is a problem, at my worst I am pushing only about 33000 textured-billboard triangles plus inner zone meshes (est. avg of 20000 triangles a frame) at 16 fps with mip mapping on. Removing overheads like cutting state changes should seriously help out. What can I say, rough code rough frame rate. I am still happy though, as all my concepts for the next engine have been proved.