This page is quite technical. You can see groups of the engine, game and tools derived by the id Tech 3 GPL source.
Contents
Engine
- derived from the IOQuake3 engine
General
- console provides a backbone for game management, and allows in-game console variables and commands
Renderer
General
access to the OpenGL driver through a new interface designed like OpenGL ES 2.0 with additional support for OpenGL 3.0
- removed OpenGL calls that are marked as deprecated in the OpenGL 3.0 specification
- all rendering is handled by GLSL shaders
- avoids bottlenecks in the OpenGL driver by avoiding state changes
makes usage of the latest OpenGL extensions
- hidden surface removal algorithm using the Q3A BSP and PVS
- arbitrary resolution support (including widescreen)
clever usage of vertex buffer objects (VBO) to speed up rendering of everything
- avoids geometry processing at render time using the CPU (worst bottleneck with the Q3A engine)
- memory efficient implementation with static VBOs for BSP models and static/dynamic IBOs for BSP clusters
- static game models like powerups use static VBOs as well
- renders up to 500 000 - 700 000 polygons at 50-60 fps on current hardware
anisotropic texture filtering
optional uniform lighting and shadowing model like in Doom 3
usage of frame buffer objects (FBO) to perform offscreen rendering effects
reactivated and extended TrueType font support using FreeType
optional deferred shading with r_deferredShading 1
Supported Image Formats
- Truevision Targa (.tga)
- JPEG File Interchange Format (.jpg)
Portable Network Graphics (.png)
DirectX .dds image file format support
Supported Model Formats
- Quake 3 .bsp
- Quake 3 .md3
Doom 3 .md5mesh
Doom 3 .md5anim
Lighting
dynamic and static realtime lights that can use Doom 3 style boxed lighting attenuation also known as globe mapping
lights can have .mtr shaders like surface materials
1 lightFallOff image for Z attenuation
up to 15 shader stages for XY attenuation
RoQ videos can be used for light attenuation
omni-directional lighting (point lights)
projective lighting (spot lights)
hardware occlusion culling removes light volumes behind opaque geometry
- precomputed lighting
- lightgrid lighting for entities
- simple light mapping for world geometry
directional 'deluxe' light mapping for world geometry
- can be used with Doom 3 materials without the need to change them
Shadowing
- [cg/r]_shadows
- 1 = blob
- 2 = planar projection
3 = stencil shadow volumes (Doom 3 style)
4 = variance shadow mapping (16 bit float precision)
5 = variance shadow mapping (32 bit float precision)
6 = exponential shadow mapping (32 bit float precision)
soft shadows (only available for shadow mapping techniques)
dynamic LOD for shadow mapping
many new cvars to make shadow mapping very scaleable on future GPU hardware
Materials and Shaders
- simple scriptable material shader language support
supports almost all Doom 3 .mtr keywords
XreaL specific extensions to make development easier
- translucence
- two-sided polygons
- arbitrary polygon offset
- dynamic transformations of UV coordinates
- alpha testing
- glow textures
- normal mapping
- specular maps
- different blending functions
- texture compression parameters
- dynamic color generation
- game entity associated behavior
different textures can be combined to new ones at load time
Special effects
heat haze post process effect
- you can render many different distorsion effects with this:
- heat shimmer
- water
- glass
- you can render many different distorsion effects with this:
light bloom post process effects
- r_bloom cvar determines bloom mode
- 0 = no bloom
- 1 = simple bloom with diamond filter only
- 2 = strong bloom with combined gauss and diamond filters
rotoscope cell shading post process effect (just for fun)
global fog post process effects
depth of field post process effect
Skeletal Animation
new interface exposed from the renderer to handle model and animation files
renderer interface abstracts file formats like (.md5mesh/.md5anim)
animations can be handled seperately
animation frame interpolation
animation blending
up to 120 bones for each refEntity_t that can be modified outside the renderer
basic support for inverse kinematics like head/torso/legs player angles
bones can be used as joints to attach other refEntities
CPU vertex skinning
ultra fast GPU vertex skinning on DX10 hardware where 32 visible high polycount characters are no problem
Networking
- Multiplayer over LAN and Internet via a Client and Server architecture
- Up to 64 players
- low-bandwidth efficient
- packet fragmentation
- packet compression and encryption
IPv6 support with multicasting abilities
extended protocol to support accelerating trajectories
Client
.avi video and audio recording
libcURL http-download redirection support for fast downloads of referenced server .pk3 files
Server
TODO add information
Physics
- Continues Collision Detection
- AABB tracing against brushes, bezier curves and other primitives
- Sphere tracing
- Capsule tracing
optional per triangle collision detection for world surfaces
improved collision detection speed using early-out AABB tests
AI
replaced Gladiator bot by the Quake2 ACEBot
- very basic and extensible AI code
- uses waypoints that are set automatically by running through a map
- does not require to build AAS files
- can even work with maps that don't feature collision brushes
Sound
- streamed sounds
- entirely loadable sounds
- 3D sound
- Doppler effect
- Different sound API support:
- Software backend
OpenAL backend
Supported Audio Formats
- RIFF WAVE (.wav)
OGG Vorbis audio file format support (.ogg)
Platforms
The XreaL engine is platform independent. Which means in this case it will run on more than one platform, which are currently:
- Windows 2000, XP, XP64, Vista
- Linux
Mac OS X (Universal, PPC & x86)
Game
Client Game
Tenebrae style player teleporter effect
rotating gibs
Unlagged Code
improved status bar
improved particle engine
experimental Lua 5.1 layer for particle creation and other special effects
robust skeletal player animation code
robust skeletal view weapon animation code
Server Game
matrix math
quaternion math
improved tokenizer
handy string utilities like Q_strreplace
experimental Lua 5.1 layer for level entity scripting allowing map designers to control entities like in Doom3
Unlagged Code
accelerating rockets
true quad damage
User Interface
bloom rendering game option
anisotropic filter value slider in the graphics options
lighting and shadowing options
scrolling credits
XMap2
derived from the popular Q3Map2 compiler by Randy ydnar Reddig
Doom 3 .map file support Version 2
Quake 4 .map file support Version 3
support for new entity epairs like the "rotation" matrix
Doom 3 .mtr shader support
can be run by GtkRadiant and communicates with it using a XML based network protocol
can be run by several Q3Map2 frontends like Q3Map2Tools or Q3MapGUI
supports -game xreal option for best usage with XreaL
GtkRadiant
- lite version based on Zerowing code
- modified for XreaL mapping
- realtime lighting preview with F3
