There's nothing like practice. Theory is fine, but actually implementing something REALLY shows you where your knowledge level is, in theory I know a LOT of stuff (hell, doing games and 3D reading for long enough means you see a LOT of stuff).
Its one thing though, to know something in theory, its an entirely different matter to know something in practice.
I'd been implementing a brute force ROAM based landscape, did the lighting, texture synthesis etc, then I realised something quite profound. I didnt *LIKE* it :))
In theory it sounds like a great algorithm, and for a lot of uses it is, but in practice, for exacly the purpose I am designing for, its really NOT the best algorithm (or at least the vanilla version Ive implemented so far). Its only in practice I can see why (for those who are interested, I am trying to implement a landscape that is slightly less "rolling" than most look like).
The worst problem almost all coders have is to have a way of trying things out quickly and knowing if they are useful to the situation or not. I have implemented a bunch of utility classes over time, but its still really not enough.
In the end, I see a need to implement a "world editor" of sorts, not for creating content necassarily, but for actually placing the objects I create into the context they are intended for (i.e. a game world). The idea solution would be to create a devstudio plugin that created a "World" workspace, with all .h and .cpp utility classes included already (and a simple framework app that has all I need, things like keyboard mapping, mouse handling, etc etc. As it is, I guess I'll most likely make the skeleton app and save a copy of it as the base app.
I am NOT interested in "engine" as it is, but more about "game", and being able to test "engine" algorithms quickly, and in thier proper context is VASTLY superior to guessing whether something that works ok by itself will work when I have AI, explosions etc all taking place.
Its not an obvious point though, because most algorithms work fine in seperation, its only when you try and combine your choices into a coherent whole that the mistakes become apparent.
On another note, Ive been thinking about server scalability issues for a MMOG Ive been designing, and a friend an I came up with quite a nice design (its nice when you use the right language for the job). Its based on Java RMI (remote method invocation), and uses the "naming services" of Java and Corba (basically a network aware object that can publish its information to a naming service), the idea is to be able to dynamically scale ANY part of the system, and have multiple redundancy.
Hopefully I'll have a paper written on that subject in the next month or so (and perhaps a simple example system implemented to go along), might even try and get it published by gamasutra.
I am getting REALLY interested in online gaming again recently, especially RPG type stuff since I got everquest. Its pretty clear that the market is there to VASTLY improve gameplay issues, and even more to VASTLY improve engine and interface. I hope some of the better new RPG's coming (Anarchy Online, Neocron etc) are going to do well, its certainly something that is interesting me more and more.