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] simple
+
** [http://tomaz.quakesrc.org/q/files/Clean.zip CleanSrc] Simple and most likely to fit with general information about the Quake engine.
** [[QMB]] [http://www.gluonporridge.net/QMB (web)] - another good start
+
** [[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).
** [[TomazQuake]] [http://tomaz.quakesrc.org/q/ (web)] - for TQ clones
+
** [[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)] - for level wizardry coders and huge enginemods
+
** [[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)] - great starting point for QuakeWorld
+
** [[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 proyect *.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 subst by c]
+
** 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 VC an GCC for example, but some others only compile for VC)
+
** 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://www.quakesrc.org QuakeSRC]
+
** 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)