Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!
Difference between revisions of "Engine getting started"
From Quake Wiki
m (→Editing your own Quake engine) |
(Fixed QMB link) |
||
Line 4: | Line 4: | ||
* '''Suggestion''': | * '''Suggestion''': | ||
** [http://tomaz.quakesrc.org/q/files/Clean.zip CleanSrc] simple | ** [http://tomaz.quakesrc.org/q/files/Clean.zip CleanSrc] simple | ||
− | ** [[QMB]] [http://www. | + | ** [[QMB]] [http://www.gluonporridge.net/QMB (web)] - another good start |
** [[TomazQuake]] [http://tomaz.quakesrc.org/q/ (web)] - for TQ clones | ** [[TomazQuake]] [http://tomaz.quakesrc.org/q/ (web)] - for TQ clones | ||
** [[DarkPlaces]] [http://www.icculus.org/twilight/darkplaces/ (web)] - for level wizardry coders and huge enginemods | ** [[DarkPlaces]] [http://www.icculus.org/twilight/darkplaces/ (web)] - for level wizardry coders and huge enginemods |
Revision as of 20:30, 9 April 2013
Editing your own Quake engine
- Get MinGW or buy Visual C++
- Dowload whatever you want engine sources
- Suggestion:
- CleanSrc simple
- QMB (web) - another good start
- TomazQuake (web) - for TQ clones
- DarkPlaces (web) - for level wizardry coders and huge enginemods
- 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 proyect *.s files? -> then you have to build these with gas, also included often. Or remove these and subst by c
- Is your project for another compiler? (Darkplaces compiles on both VC an GCC for example, but some others only compile for VC)
- Ask at QuakeSRC
- 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)