Since I've been on an enforced vacation from code in all its forms over the holidays, I've been doing quite a bit of background into engine design - more specifically scenegraph methods and abstracting low-level rendering whilst still getting good thoughput.
So, what would be on peoples list of important things to have in a scenegraph? I'm currently thinking of:
- Actual graph to define visible object hirarcy (ala j3d's shape3d's, transforms etc.
- Spacial data structure for the world
- Renderer for performing low-level details, batching etc.
Currently I'm favoring a portal system for the high-level representation (built into the scene graph) and with individual nodes having their own internal organisation (bsp, quadtree, kd-tree, etc.) with a set interface. With localised spacial structures i'm not even sure that a global one makes sense.
My thinking is that such a structure allows for good organisation, and flexibility to support many types of world - use lots of portals for indoor if wanted and brute force individual sectors, or few portals and do more intelligent work in a node (landscapes).
And sitting behind is a Renderer, which should intelligently allow geometry to be pushed to it (via the scenegraph nodes) and handle the interface to lwjgl.
Anyone have any suggestions/improvements/gross objections to the above general design? I'll likely sit on this for a while thinking about it, but i'm interested as to peoples idea of structuring things..