Engine getting started

From Quake Wiki

Revision as of 04:01, 3 April 2013 by Necros (talk | contribs) (Editing your own Quake engine)

Editing your own Quake engine

  • Get MinGW or buy Visual C++
  • Dowload whatever you want engine sources
  • Suggestion:
  • 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)