aRQ-Lite A Small GLQuake Engine Project by Justin Thyme http://tremor.quakedev.com based on Clean source by Tomaz ----------------------------- Overview ----------------------------- I found out on the forums that Tomaz had a "Tomaz Quake 2" under development, for his internal use only. The description was that he took the Clean source, and stripped out all the old, unnecessary junk, and just did bug fixes. The ultimate goal was small and fast. That concept intrigued me, as I've always looked to minimized the footprint of apps. Have you ever worked to get WordStar to run from one 5 1/4" floppy!?:) With hardware prices dropping rapidly, coders no longer feel the need to make small or efficient code. Hey, most Quake engines of today still have modem or serial connection code in them that hasn't worked since DOS! At the same time, I was considering having the next phase of my Tremor engine project be one of just commenting out/documenting the code in order to assist others who are trying to learn about the GLQuake engine. So I decided to start a side project, creating a good "starter engine", for people new to the Quake engine, or for someone wanting to build their own, without the luggage involved in someone elses work. I plan to document the code as best I can, and include only the key improvements to make regular GLQuake better. There won't be any dramatic changes or graphics wizardry. One of the side benefits is that aRQ-Lite is a VERY fast engine, with extremely quick level load times. Check the ToDo list and Known Bugs below for a list of planned features/changes and known issues. ----------------------------- Contact Info ----------------------------- Justin Thyme (justinthyme AT quakedev DOT com) http://tremor.quakedev.com Development system: Athlon 2600+, nVidia FX5700LE w/128MB, 512MB RAM, WinXP, MSVC6 ----------------------------- Copyright ----------------------------- This program and its contents are copyright by Mike Melzer, 2005, with the exception of materials which are covered under applicable copyright of the original creator. This material may be modified and distributed under GPL with proper credit given to the creator. Proprietary content from id Software or other individuals is still protected under applicable law. Refer to the section below titled "Special Thanks/Credits" for information on individuals rights. Where ever possible, explicit permission has been obtained for use of materials which I did not personally create, and proper credit given. ----------------------------- Disclaimer ----------------------------- I accept no responsibility if this file or program in any way causes a cold, causes your wife/girlfriend to run off with your best friend, or blows up your computer. There is no warranty expressed or implied. This project requires the registered version of Quake. It can be found for under $15 in numerous places. Support the developers who have put their effort into this game you love so much. ----------------------------- Installation ----------------------------- Extract this archive to your Quake directory. Since this build still requires command line options to set video resolution, I also suggest using the minquake.bat file, and edit to your taste. ----------------------------- Features ----------------------------- - Streamlined version of the GLQuake Clean source by Tomaz - The only goals are small and fast! - All releases are full compiles, to ensure proper functionality - Easy to use Launcher frontend included ----------------------------- Controls/Configuration ----------------------------- There isn't much new here, and these only apply to the full game version. If you downloaded the engine only, these will not apply. All the old favorites are here, and everyone is likely very familiar with them. Below are the key additions/changes from vanilla Quake: - b = impulse 100 = add a bot - v = impulse 103 = view from botcam (fairly jumpy view) - Maps.cfg allows you to set cycling maps - Use launcher.exe for video and game configuration ----------------------------- Known Bugs/Issues ----------------------------- - Since you can run mods with the shareware version, if you try running mods that access data from the registered version, or try entering episodes 2, 3 or 4 without pak1.pak, game crashes. - Gamma slider does not work, but gamma can be set at the commandline with "-gamma 0.8" (select the value that works best for you). ----------------------------- Version History ----------------------------- aRQ-Lite version 0.9.3: - Made console transparent - Reset cl_maxfps to 72 due to locking with net protocol - Removed unused scitech dir of source files - Added Launcher.exe frontend app!! - Added item bobbing aRQ-Lite version 0.9.2: - Increased min memory to 16MB, max memory to 64MB - Removed #ifdef Quake2 code - Removed #ifdef IDGODS code - Removed #ifdef PARANOID code - Removed #ifdef __sun__ aRQ-Lite version 0.9.1: - Added EBFS (QSG extensions) (untested) - Demo code removed - Added standard glows and coronas - Adjusted glows and coronas - Added PCX support - Slowly removing CD audio stuff - Console background is plain black (disabled atm) - Removed chase cam aRQ-Lite version 0.9.0: - Made sbar transparent, and overlap screen - Made ibar transparent - Minimized waterwarp effect to basically nonexistant - Cleaned up waterwarp - Centered Paused and Loading screens - Renamed screenshots to "arqlite00.tga" aRQ-Lite version 0.8.1: - Added DarkPlaces version system (build.c) - Changed default maxfps to 900 - Modified registration check so maps/mods can be run with shareware Quake - Added BASE dir as secondary game dir, so ID1 can be kept clean - General code clean up - Slowly removing demo stuff aRQ-Lite version 0.8.0: - Got clean compile - Created project, renamed to aRQ-Lite - Removed Help menu - Removed qplaque from all menus - Started implementing m_print menus - Removed network protocol menu - Trimmed Options menu - Removed Video menu - Finished m_print menus ----------------------------- ToDo List ----------------------------- - Remove CD music - *cnx* - Remove demos - *done v0.9.1* - Remove video menu stuff from vid_wgl.c/gl_vidnt.c - Remove Hipnotic and Rogue maps from menus? - Add Map List to SP menu - Remove Loading plaque...happens too fast to see? - *cnx* - Use DarkPlaces code for removing registration check - *done v0.8.1* - Add DarkPlaces type versioning - *done v0.8.1* - Change console to use plain black (dark gray) background - *done v0.9.1* - Disable waterwarp - *done v0.9.0* - Change default maxfps to a high number like 600 - *done v0.8.1* - Add DarkPlaces menu based video res changes? - *cnx* - Remove requirement for stuff to be in pak file - Remove requirement for graphics to be in gfx.wad - Center menus with resolution related code - Add frame/model interpolation - *cnx* - Add TGA support (tutorial doesn't work) - Make sbar transparent (Tremor) - *done v0.9.0* - Reconfig config.cfg, only saving essential binds by default - Remove chase cam - *done v0.9.1* - Extend coordinates? - Properly remove waterwarp - *done v0.9.0* - Fix gamma slider - *cnx* (tutorial fix cuts max fps in half!) - Add HW Gamma adjustment - Keep sbar full size, not resolution scaled - Add glows and coronas? - *done v0.9.1* - Add tracers to nails? - Add version info to bottom right of console - Add QSG extensions - *done v0.9.1* - Add DarkPlaces extensions? - Fix shadows tumbling with lightning gun - Add BMP support? - Remove #ifdef QUAKE2 - *dove v0.9.2* - Remove #ifdef IDGODS - *done v0.9.2* - Remove #ifdef GLQUAKE - Remove #ifdef PARANOID - *done v0.9.2* - Remove #ifdef __sun__ - *done v0.9.2* - Remove similar #ifndef's - Add dynamic colored light support - Add .lit support - Add transparent console - *done v0.9.3* - Add subtle upgraded particles - Add ability to load pak files of any name - Add underwater fog? - Add lamescript support? ----------------------------- Special Thanks/Credits ----------------------------- id Software - For not only releasing such a cutting edge program (of it's day), but also for releasing the source code so that the community can continue to make it flourish, long after the core game has gone past its prime. Tomaz - Creator of the Clean source project. Great work on tutorials on his site (old site?). Spike, Echon, Entar, CheapHack and Tei - For patiently answering newbie programming questions on www.quakeworld.nu and QuakeSrc.org. Ryan "Frika C" Smith - Creator of FrikBot X, which I use with the aRQ-Lite engine, and for FrikQCC, the basis for VQCC. For reference, here is the readme from the engine base I'm using. from Clean source by Tomaz: Both: added cl_maxfps cvar added code to Cvar_Set to make sure coop and deathmatch cant both be true at once added in_use button and a -nouse switch added scr_showfps cvar changed fixed16_t to int changed NUM_SAFE_ARGVS from 7 to 4 changed td_starttime from float to double changed vec_t to float cleaned up mathlib cleaned up demo code fixed most warnings fixed & bug in Host_WriteConfiguration that should be && optimized ent->model->flags handling in CL_RelinkEntities recoded the function CenterWindow to take 3 params instead of 4 and optimized it recoded the function Com_Init to not take a param (it never used it) recoded the function Sbar_IntermissionOverlay to draw the scoreboard centered in the window removed all #if 0 code removed all #if 1 code removed all #ifdef FPS_20 code removed all #ifdef GLTEST code removed all #ifdef INCLUDELIBS code removed all #ifdef QUAKE2 code removed all #ifndef QUAKE_GAME code removed all dinput code removed all joystick code removed all null modem and ipx network code removed all vcr code removed the function IN_Commands removed the function SetPal removed the startup dialog window renamed progsdefs.h to progsdefs.q1 speed up lightning beam code WinQuake: changed fixed8_t to int recoded the function Draw_ConsoleBackground to not hack in the version number into the background image GLQuake: cleaned up the multitexture init mess made it use glBindTexture properly major cleaning of whole gl_vidnt.c (to much to list) recoded the function Draw_Init to not hack in the version number into the background image recoded the function GL_LoadTexture to take a 7:th param (int byteperpixel) removed 8bit texture path removed cvar gl_affinemodels removed cvar gl_keeptjunctions removed cvar gl_reporttjunctions removed cvar gl_smoothmodels removed cvar r_drawentities removed cvar r_drawworld removed cvar r_lightmap removed cvar r_fullbright removed envmap stuff removed mirrors removed scrap system removed the function Draw_DebugChar removed the making of .ms2