Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!

Editing Engines

From Quake Wiki

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
==Overview==
 
 
The '''game engine''' (a.k.a. '''Quake engine''' or just '''engine''') is the 'executable' program you run to actually play Quake. It loads the game's maps/models/skins/etc., figures out what to draw on the screen, responds to your keyboard/mouse input, sends sounds to your sound device, and communicates over the network. The game engine normally resides in the root Quake folder and expects to have access to the ID1 subfolder which contains, at the very least, the files needed to play Episode 1 (normally ''pak0.pak'').
 
The '''game engine''' (a.k.a. '''Quake engine''' or just '''engine''') is the 'executable' program you run to actually play Quake. It loads the game's maps/models/skins/etc., figures out what to draw on the screen, responds to your keyboard/mouse input, sends sounds to your sound device, and communicates over the network. The game engine normally resides in the root Quake folder and expects to have access to the ID1 subfolder which contains, at the very least, the files needed to play Episode 1 (normally ''pak0.pak'').
  
Other common names are "client" or "source port". "Client" is a correct yet overly technical title unless you are talking about a [[QuakeWorld]] client. A "source port" would technically be a port of a Quake engine to another architecture like Linux or a console.
+
Quake engines operate on a client-server model. The client and server are normally both in the same file. When you run the engine, the server always runs. The client normally runs, too, unless you did something special to launch the engine in a server-only mode (e.g., for other people to connect to for playing over a network). So when you play a single-player game of Quake, the client portion of your engine communicates with the server portion. When you play a multiplayer game over a network, the client portion of your engine instead communicates with a remote server, which naturally will be subject to speed limits and delays inherent in the network.
  
===Client-server model===
+
Wikipedia has a [http://en.wikipedia.org/wiki/Quake_engine Quake engine article] containing more technical info about Quake engines, and nice diagrams showing all the engines and how they're related.
Quake engines operate on a client-server model. Depending on the engine, the client and server can be in the same file, or can be separate.
+
 
 +
==Official engines==
 +
''Instead of messing with these engines, most new Quake users, unless running on very old hardware (pre-1997), should probably start with one of the unofficial engines.''
 +
 
 +
===QUAKE.EXE===
 +
The first official engine is ''QUAKE.EXE'', sometimes informally referred to as DOS Quake. It is found on the official Quake CD-ROM (for the PC) and in the official shareware distribution. If your computer was built after 1997, you probably have no need for ''QUAKE.EXE''.
 +
 
 +
This engine is designed to only run from MS-DOS, because it expects to have direct access to your computer's hardware, which is something modern operating systems like Windows and Linux don't allow. So, to run the official engine, your computer must boot from the Quake CD, or you must boot into DOS or one of the DOS-based versions of Windows (Windows 95/98/Me) and then run ''QUAKE.EXE'' from the command line. The DOS-like command console in Windows NT/2000/XP/2003/Vista won't work for this, even in Win95 compatibility mode. ''QUAKE.EXE'' is able to run within [http://www.dosbox.com/ DOSBox], the free DOS-like emulator which runs on pretty much any OS, but its performance there is much worse than running in actual DOS — so much worse that it may be unplayable at all but the lowest resolutions, even on relatively fast, modern systems. Reportedly the engine does somewhat better under [http://en.wikipedia.org/wiki/Microsoft_Virtual_PC Microsoft Virtual PC].
 +
 
 +
''QUAKE.EXE'' provides software-based graphics rendering only; the graphics hardware will not provide accelerated rendering (using its own CPU), or any texture or lighting features. It's all done in the software. It's still fast, but slows down noticeably at higher resolutions and when there's a lot of action.
  
If they're in the same file, then when you run the engine, the server always runs. The client normally runs, too, unless you did something special to launch the engine in a server-only mode (e.g., for other people to connect to for playing over a network). So when you play a single-player game of Quake, the client portion of your engine communicates with the server portion. When you play a multiplayer game over a network, the client portion of your engine instead communicates with a remote server, which naturally will be subject to speed limits and delays inherent in the network.
+
This engine's multiplayer networking capabilities are limited to serial cable (direct), modem-to-modem (direct), or on a LAN via TCP/IP or IPX (Novell NetWare protocol). LAN play is highly affected by ping & latency between the clients and server. This was greatly improved in the QuakeWorld engine.
  
If they're separate programs, then you only run the client, and you tell it where a server is running that you want to connect to. A [[server browser]] can help you locate servers where you can join a game and play with other people.
+
Official distributions:
 +
* v1.06 of ''QUAKE.EXE'' (Oct. 1996) is contained in a [ftp://ftp.idsoftware.com/idstuff/quake/quake106.zip ''quake106.zip''], which contains an installer that unpacks all the files from an lh5 LZH-encoded archive. This is the full shareware distribution of Quake, including documentation and all the Episode 1 files (''ID1\pak0.pak''), not just the engine.
 +
* v1.08 of ''QUAKE.EXE'' (Oct. 1997) fixes some minor bugs in 1.06, and is in [ftp://ftp.idsoftware.com/idstuff/quake/quake108.zip ''quake108.zip'']. This zip contains the updated QUAKE.EXE engine only.
  
===Networking and graphics===
+
===WinQuake===
Engines generally fall into two categories:
+
id Software released a replacement for QUAKE.EXE called WinQuake (''WINQUAKE.EXE''). Instead of being for DOS, it is for any version of Windows (95/98/Me/NT/XP/2003/Vista). It's the first, most basic and most widely compatible Quake engine for Windows.
* "[[NetQuake]]" engines: engines with networking code compatible with that of the original Quake engine.
 
* "[[QuakeWorld]]" engines: engines with networking code compatible with that of the original QuakeWorld engine.
 
  
Additionally, all engines use one of two graphics rendering technologies:
+
WinQuake accesses your computer's hardware through Windows APIs. It includes support for DirectX 3.0 and up, and VESA VBE video modes, if available. It looks and runs just like the DOS engine but has more video modes which you can access via the Options menu in the game. It also lets you choose between running full-screen or in a window. It removes support for serial and modem-to-modem networking.
* Software rendering: rendering is done entirely in software, without the help of graphics hardware, as in the original Quake and QuakeWorld engines.
 
* OpenGL rendering: rendering is done with the help of graphics hardware, as in the original GLQuake and GLQuakeWorld engines.
 
  
QuakeWorld-style networking code and OpenGL-style rendering are standard nowadays in pretty much every first-person shooter, but at the time Quake was released in 1996, both were new technologies.
+
Official distribution:
 +
* v1.00 of WinQuake (Quake 1.09; March 1997) is contained, along with support files, in [ftp://ftp.idsoftware.com/idstuff/quake/wq100.zip ''wq100.zip''].
  
You will probably want to use an engine with OpenGL support, if your hardware is compatible (pretty much any computer built after 1997 will be). And you will probably want to use a QuakeWorld engine for playing over the Internet. However, for single-player games, especially when you're just getting started, a NetQuake engine may be ideal, for the simple reason that QuakeWorld engines often don't support single-player games.
+
===GLQuake===
 +
One of Quake's original developers created GLQuake, which provides hardware-accelerated graphics using OpenGL APIs. It's known to be buggy.
  
===More information===
+
GLQuake has one big usability problem: The game's built-in brightness/gamma setting doesn't do anything, and the visuals tend to be way too dark unless you first run a program to increase your display adapter's gamma setting (which then makes everything else appear too bright). This isn't a showstopper, but it can be inconvenient. Also, the video mode can only be changed at the command line, not in-game.
Wikipedia has a [http://en.wikipedia.org/wiki/Quake_engine Quake engine article] containing more technical info about Quake engines, and nice diagrams showing all the engines and how they're related.
 
  
==Official engines==
+
GLQuake is official, but is not supported by id Software. It runs any version of Windows (Win95 and up), or Linux. It is said to require the 'registered' Quake (that is, with ''ID1\pak1.pak'' present), but it will actually run on the shareware version, possibly with quirky startup behavior.
''Instead of messing with these engines, most new Quake users, unless running on very old hardware (pre-1997), should probably start with one of the unofficial engines.''
 
  
These three are NetQuake engines:
+
Official distributions:
* ''[[QUAKE.EXE]]'' aka DOS Quake — for DOS or Win95/98/Me only; software rendering
+
* v0.97 of GLQuake (Quake 1.09; November 1997) is in [ftp://ftp.idsoftware.com/idstuff/unsup/glq1114.exe ''glq1114.exe'']. This is an installer app for DOS or Windows. It will prompt you whether to install a 3dfx driver; don't do this unless you want the engine to be dependent on having a 3dfx-based graphics card's Glide drivers already installed.
* [[WinQuake]] — Win32 (Win95 through 11) version of ''QUAKE.EXE''; software rendering
+
* There is also an official distribution for Linux 2.0; see below.
* [[GLQuake]] — Win32 (Win95 through 11) and Linux 2.0 version of ''QUAKE.EXE''; OpenGL rendering
 
* [[Nightdive remaster]] - Win32/64, ''KEX'' Engine version of Quake, comes with enhanced models, enhanced lighting (both of these you can toggle off), and other QOL improvements.
 
And then there's the original QuakeWorld engine:
 
* [[QuakeWorld]] — Win32 (Win95 through Vista), Linux 2.0, BSDI 3.0, Solaris 2.5.1; software or OpenGL rendering (clients for both are distributed together)
 
  
 
===Mac OS engines===
 
===Mac OS engines===
Line 47: Line 49:
 
There were a few official, unsupported distributions released around the same time as GLQuake in late 1997:
 
There were a few official, unsupported distributions released around the same time as GLQuake in late 1997:
 
* Quake & QuakeWorld 1.09 for Solaris 2.5.2 is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/quake1.09-sparc-sun-solaris2.5.1.tar.Z ''quake1.09-sparc-sun-solaris2.5.1.tar.Z''].
 
* Quake & QuakeWorld 1.09 for Solaris 2.5.2 is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/quake1.09-sparc-sun-solaris2.5.1.tar.Z ''quake1.09-sparc-sun-solaris2.5.1.tar.Z''].
* SVGALib Quake for GNU/Linux is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/quake.x11-1.0-i386-unknown-linux2.0.tar.gz ''quake.x11-1.0-i386-unknown-linux2.0.tar.gz'']. It runs in an X11 window and requires libc 5.2.18, X11R5, and kernel 2.0.24 or later.
+
* SVGALib Quake for Linux is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/quake.x11-1.0-i386-unknown-linux2.0.tar.gz ''quake.x11-1.0-i386-unknown-linux2.0.tar.gz'']. It runs in an X11 window and requires libc 5.2.18, X11R5, and kernel 2.0.24 or later.
* GLQuake 0.97 for GNU/Linux is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/glquake-0.97-i386-unknown-linux2.0.tar.gz ''glquake-0.97-i386-unknown-linux2.0.tar.gz''].
+
* GLQuake 0.97 for Linux 2.0 is in [ftp://ftp.idsoftware.com/idstuff/unsup/unix/glquake-0.97-i386-unknown-linux2.0.tar.gz ''glquake-0.97-i386-unknown-linux2.0.tar.gz''].
* SDLQuake 1.0.9 is in [http://www.libsdl.org/projects/quake/ ''libsdl.org/projects/'']. Software-rendering port. Requires libSDL 1.0.1.
 
  
 
You probably don't want any of these old distributions; your OS's current package or port archive is the place to look for an unofficial engine that will work with a modern system.
 
You probably don't want any of these old distributions; your OS's current package or port archive is the place to look for an unofficial engine that will work with a modern system.
%%%
 
  
 
==Unofficial engines==
 
==Unofficial engines==
 +
Other engine mods are made by customizing the original id Quake source code. Nearly all of them are based on GLQuake. There quite a few and each one has there different features, fixes, additions, and changes to the original source. Some require very little to do on your part to make them work with Quake. Some of them may not work with your hardware, even if your hardware is very new.
  
Other engine mods are made by customizing the original id Quake source code. Nearly all of them are based on GLQuake. There quite a few and each one has their different features, fixes, additions, and changes to the original source. Some require very little to do on your part to make them work with Quake. Some of them may not work with your hardware, even if your hardware is very new.
+
''TODO: This section will help people step by step to get, install, and run these Quake engine replacements.''
 
 
Typically all that is needed to run a modern unofficial port is downloading it and copying id1 folder from an official installation of Quake. Each port should come with a readme detailing the installation process, which may be more complicated if, for example, you want to use the original soundtrack ripped to OGG and engine supports that.
 
  
 
===Unofficial engine list===
 
===Unofficial engine list===
 
Many engines were worked on since the original source release and development of many of them since ceased. For this reason there are typically five semi-active engines used today (most of which are [[FitzQuake]] descendants): [[QuakeSpasm]] (QS), [[QuakeSpasm-Spiked]] (QSS), [[FTE]]QW, [[DarkPlaces]] and [[Mark V]]. Feature comparison of the first four is available in the [[FTEQW File Formats]] article. Please note that more doesn't necessarily mean better as DarkPlaces is typically recognized as more buggy than alternatives.
 
 
 
* [http://user.tninet.se/xir870k/ Enhanced Winquake/glQuake/NehQuake (BJP)]
 
* [http://user.tninet.se/xir870k/ Enhanced Winquake/glQuake/NehQuake (BJP)]
* '''[[DarkPlaces]]''' ([http://icculus.org/twilight/darkplaces/ website])
+
* [http://icculus.org/twilight/darkplaces/ DarkPlaces]
* '''[[DirectQ]]''' ([http://mhquake.blogspot.com/ website]) - Direct3D port
 
 
* [http://ezquake.sourceforge.net/ ezQuake] - a QuakeWorld engine with limited single-player support.
 
* [http://ezquake.sourceforge.net/ ezQuake] - a QuakeWorld engine with limited single-player support.
* '''[[FitzQuake]]''' - probably the most widely compatible OpenGL NetQuake engine for Windows; SDL port available for Linux & Mac OS X.
+
* [http://www.celephais.net/fitzquake/ FitzQuake] - probably the most widely compatible OpenGL engine for Windows.
* '''[[FTE]]''' ([http://fte.triptohell.info/ website] - Advanced features engine
 
* '''[[Ironwail]]''' ([https://github.com/andrei-drexler/ironwail/releases GitHub])
 
 
* [http://joequake.runecentral.com/ JoeQuake]
 
* [http://joequake.runecentral.com/ JoeQuake]
* [http://code.google.com/p/makaqu/ Makaqu] - software-rendered NetQuake engine with advanced features.
+
* [http://www.dcemu.co.uk/vbulletin/showthread.php?t=100308 Makaqu]
*[[Mark V]] ([https://quakeone.com/Markv website])
+
* [http://mhquake.blogspot.com/ MHQuake]
* [http://www.nquake.com/ nQuake] (f.k.a. eQuake and fQuake) - a preconfigured distribution of ezQuake + bots, demos, & minor enhancements
+
* [http://quakeone.com/proquake/ Proquake]
* '''[[ProQuake 4]]''' ([http://quakeone.com/proquake/ website])
 
 
* [http://fragmachine.quakedev.com/ Q2K4]
 
* [http://fragmachine.quakedev.com/ Q2K4]
* [http://www.gluonporridge.net/QMB/ QMB]
+
* [http://www.flyingsaucepan.com/QMB/ QMB]
 
* [http://www.quakeone.com/qrack/ Qrack]
 
* [http://www.quakeone.com/qrack/ Qrack]
* '''[[QuakeSpasm]]''' [http://quakespasm.sourceforge.net/ QuakeSpasm]
 
* [http://triptohell.info/moodles/qss/ Quakespasm-Spiked (aka: QSS)]
 
* '''[[Quore]]''' ([http://quore.free.fr/ website])
 
 
* [http://telejano.berlios.de/ Telejano]
 
* [http://telejano.berlios.de/ Telejano]
 
* [http://tenebrae.sourceforge.net/ Tenebrae]
 
* [http://tenebrae.sourceforge.net/ Tenebrae]
 
* [http://planetquake.gamespy.com/View.php?view=Quake.Detail&id=184 TomazQuake]
 
* [http://planetquake.gamespy.com/View.php?view=Quake.Detail&id=184 TomazQuake]
* [http://disenchant.net TyrQuake]
+
* [http://tyrann.planetquake.gamespy.com/ Tyr-glquake]
 
* [http://entar.quakedev.com/ Vengeance r2]
 
* [http://entar.quakedev.com/ Vengeance r2]
* '''[[vkQuake]]''' ([https://github.com/Novum/vkQuake GitHub])
 
* [https://www.moddb.com/games/quake-wrapper Xash3D (Quake Wrapper)]
 
* [http://quakeone.com/mh/ Direct3D 8 ports of several engines]
 
* Quake for Apple Watch port [https://github.com/MyOwnClone/quake_watch]
 
  
 
A comprehensive overview of unofficial engines for Linux can be found in the [http://tldp.org/HOWTO/Quake-HOWTO-3.html Game Engines section] of the [http://tldp.org/HOWTO/ Linux Quake HOWTO] by Stevenaaus.
 
A comprehensive overview of unofficial engines for Linux can be found in the [http://tldp.org/HOWTO/Quake-HOWTO-3.html Game Engines section] of the [http://tldp.org/HOWTO/ Linux Quake HOWTO] by Stevenaaus.
 
{{Engines}}
 

Please note that all contributions to Quake Wiki are considered to be released under the GNU Free Documentation License 1.3 or later (see Quake Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)

Template used on this page: