Features

Engine:
- Tile based map system
- Memory-saving object/scene management
- Integrated GUI
   (Pages, text, buttons, edit boxes and images)
- Integrated 2d map editor
- Integrated 3d WYSIWYG map editor
- Basic physics engine
   (Collision detection and response, force/gravity)
- REVERT3D API
   (Safe and easy to use programming API for MS Visual C++)
- LUA Scripting interface
   (REVERT3D API for LUA scripting. Including integrated script editing tools)


Renderer:
- OpenGL based rendering engine
   (Max resolution and color depth depends on video hardware)
- 32bit 2d textures (bmp, jpeg, tga)
- 2d/2.5d/3d objects
   (Billboard, flat, 3ds models. Animations and user defined object states)
- Own per-vertex lighting/shading system
- Raycaster inspired culling system
- Optional quadtree/frustum culling
- Simple effects
   (Alpha masking, blending/transparency)
- Camera system

Level structure:
Much like in old raycaster games like Wolf3d or Blake Stone, the entire level structure in REVERT3D is based on a two-dimensional square grid. A bunch of standard elements is used to assemble the level (Solid blocks, open blocks, diagonals or the "void" / free space) To create more sophisticated environments, REVERT3D is able to handle tiles with different floor and ceiling height, sloped floors and ceilings and diagonal walls.
Use the tile system to create the basic outline of a map. To add more detail, textures and objects can be added to the scene. REVERT3D supports both 2D and "real" 3D objects. This combination very closely resembles the engine used for System Shock back in 1994.

Hidden surface removal approach:
To maintain a steady smooth gameplay, every 3d engine needs to remove "invisible" geometry from the rendering process - That means, structures the camera cannot see in the moment of rendering. To achieve this, REVERT3D acts like a classic raycaster. Although it's not a raycaster, this is possible because of the square-grid-map system and other limitations which are typical and sometimes necessary for a raycaster to work. From the player/camera position a bunch of rays is "casted" along the viewing direction - One ray per horizontal pixel on the screen. Each tile the ray passes on its way into the screen is added to the PVS - A collection of visible tiles, which is then passed to the renderer and drawn to the screen using the OpenGL API. The system produces a minimum amount of overdraw and can be utilized to keep the tile-rendering ordered properly by their depth / z order. This system works perfect for enclosed areas. For wide open spaces, an optional quadtree/frustum culling system can be activated as well.

Target platform & performance:
First of all, don't worry about performance. This thing runs at an average of 60 FPS on a SiS 661 graphics card. That's pretty fast, knowing that this is one piece of the crappiest graphics hardware around :) On an Intel GMA 4500 onboard card, it runs about 1500 FPS (!) (And that's still far from being state of the art hardware) We limit the framerate to 60 FPS by default. Redundant computing time is given back to the system. This results in just ~30% CPU load on an average system. REVERT3D is designed to run on all Windows desktop versions >= Windows 98. Minimum requirements should be OpenGL support and CPU/RAM at around 500mhz / 64 MB.