Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!
Engine getting started
From Quake Wiki
Editing your own Quake engine
- Get MinGW or buy Visual C++
- Dowload whatever you want engine sources
- Suggestion:
- CleanSrc Simple and most likely to fit with general information about the Quake engine.
- TomazQuake (web) - Like CleanSrc it will fit with general information about engine development but with enhancements and extra features already added. Will build on Windows (Visual Studio).
- QMB (web) (git) - Moving away from the standard source layout, originally based on CleanSrc. Will build on Unix and Windows (GMingW).
- DarkPlaces (web) - One of the most comprehensive feature sets. Unlikely to fit with general information about Quake engines. Better suited to experienced programers who want the features it offers.
- FuhQuake (web) - Great starting point for QuakeWorld
- Unzip
- Open the *.dsw file (VC++) or the makefile (gcc/MinGW)
- Edit some files (VC IDE, Dev-C++ ide, SciTE, notepad,...)
- Recompile ( VC: build button, "make" command for gcc/mingw)
- If the build failed...
- Use your project *.s files? -> then you have to build these with Gas, also included often. Or remove these and substitute by c
- Is your project for another compiler? (Darkplaces compiles on both Visual C and GCC for example, but some others only compile for Visual C)
- Ask at Inside3D
- Test Engine
Understanding the code structure
This is a list of source files and a list of some of the things done in them.
- cl_ - client files (demo playback, input, temp entities)
- _demo - demo playback
- _input - keyboard input (higher level)
- _main - assorted client functions
- _parse - server command parsing
- _tent - temp entitie parsing and beam parsing
- sv_ - server files (physics, collision detection, movement)
- _main - general server functions
- _move - movement related functions like movestep and moretogoal
- _phys - physics functions, gravity etc
- _user - user/client related functions
- net_ - network files
- basicly convert quake client/server packets to be sent over a transport protocal like tcp or ipx, as well as network server/client stuff
- pr_ - qc virtual machine (runs progs.dat)
- _cmds - builtin commands
- _exec - qc executing
- _edict - loading progs.dat and other edict functions
- gl_ - opengl drawing files
- _rsurf - map and brush drawing
- _warp - sky, water etc drawing
- _mesh - alias model drawing
- _model - map and model loading
- _rlight - dynamic lights
- _screen - statis bar, console etc drawing
- _sprite - sprite drawing
- _vidnt - video init functions, and other startup functions
- _rmain, _rmisc - general draw stuff, cvar registering
- _draw - texture loading
- _rpart (for engines that dont use qmb partices its r_part.c or something) - Particle system, physics and drawing
- snd_ and cd_ - sound files
- and the rest are just bits and pieces, such as zone does memory managment
- menu - drawing menu and stuff
- sbar - sbar higher level drawing (calls functions from screen to do the actual drawing)
- mathlib - assorted maths functions
- wad - wad file loading
- world - map stuff
- console - console text control (calls functions from gl_screen to draw)
- cvar - cvar functions
- common - common low level functons (string compairs, file stuff)