Elflight Engine
Features
Display Modes
- Web Browser (resizable)
- Application Window
- Full Screen
Overall Architecture
- Optimised for high frame rates
- Works well on modest hardware
- Object-oriented, robust and highly extendable
- Tested on Windows, Linux and Mac OS X
Scene Graph
- Object-oriented 3D Scene Graph, nested transforms
- Bounding-volume based camera frustum culling
- Discrete LOD (Level of Detail) support
- State management (eg. lights, fog, materials)
- Support for controllers (eg. joint controllers, node controllers)
- Scene Queue for thread-safe real-time updates (such as background model loading)
Camera
- Standard Camera
- First Person Perspective Camera (mouse & keyboard)
- Third Person Perspective Camera (mouse & keyboard)
- Above-View Camera (mouse & keyboard)
Texturing
- Supports BMP, TGA, JPG, PNG, GIF
- Mip mapping (hardware or software generated)
- Multitexturing
- Dot3 Bump mapping (fixed function pipeline or shader)
- Specular mapping (fixed function pipeline or shader)
Geometry
- Triangle Meshes
- Quad Meshes
Bounding Volumes
- Bounding Spheres
- Bounding Ellipsoids
- Bounding AABBs
- Bounding OBBs
- Bounding Models
Picking
- Bounding Volume Picking
- Triangle Picking
- Edge Picking
- Vertex Picking
- Mouse Support
Collision Detection
- Static Collision Detection
- Bounding Volume to/from Bounding Volume
- Bounding Volume to/from Geometry
- Geometry to/from Geometry
- Dynamic (Swept) Collision Detection
- Bounding Volume to/from Bounding Volume
- Bounding Volume to/from Geometry
- Geometry to/from Geometry
Collision Response
- Sliding player to geometry collision response w/ gravity
- Flexible API for adding custom collision responses
Terrain
- Optimised for high frame rates
- Quad-tree based
- Streamable over the Internet, virtually any size
- Sun and Moon, Clouds, Sunset, Dawn
- LoD Support
- Base texture + N detail textures
- Light map support
Animation
- Jointed skeletal animation
- Rigid skin binding
- Smooth skin binding
- Fixed function pipeline or shader
Import
- Wavefront OBJ (for static geometry)
- Milkshape MS3D (supports skeletal animation)
- Autodesk Maya (bespoke pipeline, supports skeletal animation)
- Elflight Binary Format (supports skeletal animation)
- Custom Imports
Export
- Wavefront OBJ (for static geometry)
- Elflight Binary Format (supports skeletal animation)
- Custom Exports
Resource Handling
- Streaming support
- Local disc or remote server
- VFS - 'Virtual Filing System'
- Provides a unified mechanism for requesting game file regardless of physical location
- Automatic caching of data with versioning support
- EFS - 'Elflight Filing System'
- A virtual hard disc for securely reading and writing game files
- Storage is one or more '.efs' files
Resource Server
- Stores game files for remote retrieval by clients
- Support for multiple resource servers
Game Server / Simulation Framework
- Object-oriented simulation framework
- Virtual clock and automatic synchronisation of clock between server and client
- Automatic synchronisation of game objects between client and server
- Player interaction, movement (with dead reckoning support)
- Game object persistence
- Support for multiple game servers
Networking
- Non-blocking IO-based framework
- Efficient and scalable
- Automatic message assembly
- Message tampering detection
GUI
- Object oriented 2D framework
- Support for TrueType fonts
- Anti-aliasing support
- Images, Buttons, Labels, Text Boxes, Text Areas etc.
- Suuport for custom controls
Special Effects
- Vertex shader support
- Fragment shader support
Sound Effects / Music