EGL

A Quake2 compatible engine modification.

Requirements

Minimum:

  • 500mhz Processor
  • 128MB RAM
  • 25MB HD space
  • GeForce2 or ATi equivalent

Recommended:

  • 800mhz Processor
  • 256MB RAM
  • 100MB HD space
  • GeForce4 or ATi equivalent

Development Environment

These are the machines I develop EGL on, since I have been asked what I use a lot I will put it here:

Main machine (desktop):

  • Windows 2000 Professional
  • Athlon 64 3000+
  • 512MB Corsair PC3200
  • GeForce 6800GT 256MB AGP

Secondary machine (laptop):

  • Kubuntu
  • Celeron 1.8ghz
  • 256MB RAM
  • GeForce 420 Go! 16MB

As you can tell, my video card is a small bottleneck on both machines. This usually results in me designing the code around using a bit more CPU power to pump out a few more FPS.

NOTE: Linux support is experimental right now.

Features

Below is a list of some of the features in EGL. Note that not all of the features I have added are here, as I don't constantly update this file, and this is all off of the top of my head.
Last update: 2006-03-03

General

Network

  • R1Q2 Protocol 35 supported on the client-side
  • Framerate decoupling, your video framerate can be infinite while your net framerate is 30.

Client/Server

  • Quake3 BSP support*
  • Various security fixes (q2msg, buffer overflows, etc)
  • Quake3-like debug/dedicated console*
  • Mouse accel control (m_accel)

Display

Console

  • Case insensitive
  • Better tab autocompletion
  • In-line input modificaton (left/right arrow to move cursor, insert toggles override)
  • Customizable drop height, transparency, font scale, font image, and optional clock
  • Optional notify line fading
  • Font ^2color strings^r -- Quake3 in style but changed to my liking*
  • Able to use *wil*dcards* in aliaslist, cmdlist, cvarlist, and shaderlist console commands
  • Chat hud

Crosshair

  • Customizable color, scale, and transparency (with a transparency pulse option with controllable speed)
  • Supports an infinite amount of crosshair images, not just three anymore

HUD

  • Customizable HUD scale and transparency
  • Ping, map time, framerate -- all optionally displayed

Effects

Particles and Decals

  • Completely new particle rendering and handling system. All effects were written from scratch
  • Customizable railtrail and spiral colors
  • Tons of optional particle effect changes for Gloom
  • Clipped decals!
  • Decal LOD (level of detail) control
  • Per-frame particle 'intelligence' -- think functions that can handle physics, animation, rotation, etc
  • Frustum culled decals and particles
  • Controllable particle smoke linger, blood gore, and overall effect quality
  • Optional particle lighting (like on smoke)
  • Vis culled decals
  • Optional screen rattling when close to an explosion

File System

Features

  • Hash table/link-list hybrid file lookup optimization
  • Completely internally managed memory system with integrity checking
  • Media precaching, optimized load times on internally/commonly used images, models, and sounds using pointers
  • Supports up to 9 character long file extensions
  • PKZ support, which is basically just a renamed zip file
  • Pak loading, loads pak0-9.pak first, then all other pak files after if fs_defaultPaks is 0
    NOTE: Files loaded last are used, if you have any stray pak files in your modification directories you might notice that they'll load up now. If you don't like them you can remove them or disable *.pak loading by disabling the cvar (sv_defaultpaks, as mentioned in the documentation packed with every release)

New supported formats

  • PKZ -- Zip file package format
  • PNG (can also optionally save to as screenshot)
  • TGA (can also optionally save to as screenshot)
  • JPG (can also optionally save to as screenshot)
  • MD3 -- Quake3 Model Format*
  • Quake3 BSP*
  • MD5 -- Doom3 Model Format (not done yet! coming soon!)

Modular

CGame DLL

  • Able to customize any effect for different modifications
  • Complete scene handling and some packet handling
  • Create your own hud/inventory for your modification!
  • Modification specific map loading screen
  • Third person camera
  • Gloom flashlight prediction
  • Displays download screen
  • Create your own menu for your modification!
  • Menu uses mouse
  • Menu cales to your resolution from 640x480 in real-time
  • Menu filled with tons more options
  • Menu mouse movement filtering (ui_filterMouse)

Renderer

Features

  • OpenGL Only!
  • Customizable pixel format, resolution and refresh rate
  • Optimized rendering backend
  • Optional texture compression
  • Support for drawRangeElements, 3D textures, hardware mipmap generation, and anisotropic texture filtering
  • Texture sizes only limited by what your card supports (scaled downward if too large)
  • Loads TGA, PNG, JPG, and Quake2 PCX/WAL (in that order) images
  • Mesh lists for shader-based sorting (via sort keys)
  • Polygon 'backend' which all particles and decals are sent to for rendering
  • Registration system that removes untouched media (models, shaders, textures) on map change
  • Controllable maximum texture size (otherwise it clamps to the video card maximum)
  • Optional hardware gamma
  • Quake3 BSP lightmap packing
  • Optionally use gamma on 2D textures

Shaders

  • Quake3-compatible shader language*
  • Support for cubemaps
  • Vertex and fragment programs
  • Dot3 bump mapping on alias models (coming soon!)
  • Texture matrix optimized
  • Optional detail shader passes (r_detailTextures)

Misc

* This feature was not taken from (nor was it based on) any Quake3 code.