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
(Fixed QMB link) |
(Some updates, more needed) |
||
Line 3: | Line 3: | ||
* Dowload whatever you want engine sources | * Dowload whatever you want engine sources | ||
* '''Suggestion''': | * '''Suggestion''': | ||
− | ** [http://tomaz.quakesrc.org/q/files/Clean.zip CleanSrc] | + | ** [http://tomaz.quakesrc.org/q/files/Clean.zip CleanSrc] Simple and most likely to fit with general information about the Quake engine. |
− | ** [[ | + | ** [[TomazQuake]] [http://tomaz.quakesrc.org/q/ (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]] [http://www.gluonporridge.net/QMB (web)] [//https://github.com/DrLabman/QMB (git)] - Moving away from the standard source layout, originally based on CleanSrc. Will build on Unix and Windows (GMingW). |
− | ** [[DarkPlaces]] [http://www.icculus.org/twilight/darkplaces/ (web)] - | + | ** [[DarkPlaces]] [http://www.icculus.org/twilight/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]] [http://www.fuhquake.net/ (web)] - | + | ** [[FuhQuake]] [http://www.fuhquake.net/ (web)] - Great starting point for QuakeWorld |
* Unzip | * Unzip | ||
* Open the *.dsw file (VC++) or the makefile (gcc/[http://www.mingw.org/ MinGW]) | * Open the *.dsw file (VC++) or the makefile (gcc/[http://www.mingw.org/ MinGW]) | ||
Line 13: | Line 13: | ||
* Recompile ( VC: build button, "make" command for gcc/mingw) | * Recompile ( VC: build button, "make" command for gcc/mingw) | ||
* If the build failed... | * If the build failed... | ||
− | ** Use your | + | ** Use your project *.s files? -> then you have to build these with Gas, also included often. Or [http://www.quakesrc.org/forum/viewtopic.php?t=148&highlight=assembler+quake+build remove these and substitute by c] |
− | ** Is your project for another compiler? (Darkplaces compiles on both | + | ** 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 [http:// | + | ** Ask at [http://forums.inside3d.com Inside3D] |
* [[Test Engine]] | * [[Test Engine]] | ||
Revision as of 19:45, 9 April 2013
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)