My current videogame engine project, Drift, currently sports the following features:
- Parsing of id Software's Quake 1 .map format into dictionaries of key-value pairs, and models consisting of convex solids. However, I am not using the original entity class set.
- Decomposition of this graph into convex regions by way of BSP.
- Manual placement of portals carried out by a deigner prior to map parsing. I believe the method I use is simpler than that of the id Tech 5 editor, since all that is required here is a single point and an axis alignment. The engine works out what shape the portal should be.
- Grouping of BSP leaves into concave cells, with the ruling that a cell cannot include any space that crosses a portal. This enables high-level culling of the scene, performed at runtime.
- Limited collision detection and resolution.
- Designer-influenced BSP and collision complexity. A particular solid in the graph may be considered too small or subtle to have any effect on gameplay, so it can be labelled as detail.
- Object-oriented, serialised archiving system. As of this time, fully compatible with all previous versions of archived data structures. Some standard compression is performed at the common level (e.g. A string re-ocurrence table), and certain classes carry out particular actions to compress their on-disk representations.
- Realtime coloured, attenuated lighting. Scissor tests and BSP leaf AABB tests are used to optimise this. Nothing spectacular yet, but I have been working on separate programs that show normal mapping, shadow mapping, and extruded-volume shadowing. The latter of which I am thinking of not using at all.
- Destructable scenery. The engine has a powerful set of CSG tools which are used in this case to naively simulate the fracture of any solids labelled as destructable by a designer. Most obviously, this can be triggered by an explosion. Note that this kind of event will be orchestrated by the scripting system.
I've probably forgotten some finer points.
I will be detailing the progress of Drift's development