Iortcw
Merge of ioquake3 features and fixes into RTCW code bases
Install / Use
/learn @iortcw/IortcwREADME

iortcw
The intent of this project is to provide a baseline RTCW which may be used for further development and fun. Some of the major features currently implemented are:
- SDL backend
- OpenAL sound API support (multiple speaker support and better sound quality)
- Full x86_64 support
- VoIP support, both in-game and external support through Mumble.
- MinGW compilation support on Windows and cross compilation support on Linux
- AVI video capture of demos
- Much improved console autocompletion
- Persistent console history
- Colorized terminal output
- Optional Ogg Vorbis support
- Much improved QVM tools
- Support for various esoteric operating systems
- cl_guid support
- HTTP/FTP download redirection (using cURL)
- Multiuser support on Windows systems (user specific game data is stored in "My Documents\RTCW")
- PNG support
- Many, many bug fixes
The map editor and associated compiling tools are not included. We suggest you use a modern copy from http://icculus.org/gtkradiant/.
The original id software readme that accompanied the RTCW source release is named README.txt and is contained within the source tree of both MP and SP games.
Quick Start Guide
- If you have not already done so, install Return to Castle Wolfenstein and remember the target installation directory.
- Browse to the iortcw project release folder: https://github.com/iortcw/iortcw/releases.
- Download the latest release file for your operating system, as well as patch-data-141.zip. As of this writing, the latest version of the iortcw release file is v1.51c.
- Extract the latest release zip into a location where you would like to have your installation going forward (For example: c:\Games\iortcw\ in Windows or /home/joe/Games/iortcw/ in Linux).
- Go to the location of your original existing installation, open the “Main” folder, and copy the following files over to your iortcw's “Main” folder for the single player campaign: pak0.pk3, sp_pak1.pk3, sp_pak2.pk3, and sp_pak3.pk3. For multiplayer, copy the following files to your iortcw's “Main” folder: mp_bin.pk3, mp_pak0.pk3, mp_pak1.pk3, mp_pak2.pk3, mp_pak3.pk3, mp_pak4.pk3, mp_pak5.pk3, mp_pakmaps0.pk3, mp_pakmaps1.pk3, mp_pakmaps2.pk3, mp_pakmaps3.pk3, mp_pakmaps4.pk3, mp_pakmaps5.pk3, and mp_pakmaps6.pk3.
- Extract the contents of patch-data-141.zip (or a newer version in the meantime) into your iortcw folder and merge patch-data-141's content into your iortcw folder. For German, Spanish, French or Italian language support in-game, also extract the contents of one of the respective "patch-data-SP-language" zip files into your iortcw's "Main" folder.
- Go to your iortcw installation folder and start either the “iowolfsp*” file for single player or “iowolfmp*” for multiplayer. If your system uses a 64-bit processor, run the single player or multiplayer file that ends with x64.
Compilation and installation
For *nix
- Change to the directory containing this readme.
- Run 'make'.
For Windows,
- Please refer to the HOWTO-Build.txt file contained within this repository.
For Mac OS X, building a Universal Binary
- Install MacOSX SDK packages from XCode. For maximum compatibility, use XCode 3.2.6 on 10.6 Snow Leopard with MacOSX10.5sdk.
- Change to the directory containing the game source you wish to build.
- Run './make-macosx-ub.sh'
- Copy the resulting iowolfmp.app or iowolfsp.app in /build/release-darwin-ub to your /Applications/iortcw folder.
Installation, for *nix
- Set the COPYDIR variable in the shell to be where you installed RTCW to. By default it will be /usr/local/games/wolf if you haven't set it. This is the path as used by the original Linux RTCW installer and subsequent point releases.
- Run 'make copyfiles'.
It is also possible to cross compile for Windows under *nix and Cygwin using MinGW. Your distribution may have mingw32 packages available. You will need to install 'mingw-w64'.
Thereafter, cross compiling is simply a case running:
'PLATFORM=mingw32 ARCH=x86 make' in place of 'make'.
(ARCH may also be set to x86_64.)
The following variables may be set, either on the command line or in Makefile.local:
- CFLAGS - use this for custom CFLAGS
- V - set to show cc command line when building
- DEFAULT_BASEDIR - extra path to search for main and such
- BUILD_SERVER - build the 'iowolfded' server binary
- BUILD_CLIENT - build the 'iowolfmp' or 'iowolfsp' client binary
- BUILD_BASEGAME - build the 'main' binaries
- BUILD_GAME_SO - build the game shared libraries
- BUILD_GAME_QVM - build the game qvms
- BUILD_STANDALONE - build binaries suited for stand-alone games
- SERVERBIN - rename 'iowolfded' server binary
- CLIENTBIN - rename 'iowolfmp' or 'iowolfsp' client binary
- USE_RENDERER_DLOPEN - build and use the renderer in a library
- USE_YACC - use yacc to update code/tools/lcc/lburg/gram.c
- BASEGAME - rename 'main'
- BASEGAME_CFLAGS - custom CFLAGS for basegame
- USE_OPENAL - use OpenAL where available
- USE_OPENAL_DLOPEN - link with OpenAL at runtime
- USE_CURL - use libcurl for http/ftp download support
- USE_CURL_DLOPEN - link with libcurl at runtime
- USE_CODEC_VORBIS - enable Ogg Vorbis support
- USE_CODEC_OPUS - enable Ogg Opus support
- USE_MUMBLE - enable Mumble support
- USE_VOIP - enable built-in VoIP support
- USE_INTERNAL_LIBS - build internal libraries instead of dynamically linking against system libraries; this just sets the default for USE_INTERNAL_OPUS etc. and USE_LOCAL_HEADERS
- USE_FREETYPE - enable FreeType support for rendering fonts
- USE_INTERNAL_ZLIB - build and link against internal zlib
- USE_INTERNAL_JPEG - build and link against internal JPEG library
- USE_INTERNAL_OGG - build and link against internal ogg library
- USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
- USE_INTERNAL_VORBIS - build and link against internal Vorbis library
- USE_LOCAL_HEADERS - use headers contained within this source tree instead of system ones
- DEBUG_CFLAGS - C compiler flags to use for building debug version
- COPYDIR - the target installation directory
- TEMPDIR - specify user defined directory for temp files
The defaults for these variables differ depending on the target platform.
Console
New cvars
-
cg_fixedAspect ( 0 ) - Use aspect corrected HUD/UI ( 0 = Off, 1 = 4:3 style, 2 = Widescreen style )
-
cg_fixedAspectFOV ( 1 ) - Use aspect correct FOV when using cg_fixedAspect cvar ( 0 = Off - Use cg_fov, 1 = Automatic FOV based on resolution )
-
cl_autoRecordDemo ( 0 ) - record a new demo on each map change
-
cl_aviFrameRate ( 25 )- the framerate to use when capturing video
-
cl_aviMotionJpeg ( 1 ) - use the mjpeg codec when capturing video
-
cl_guidServerUniq ( 1 ) - makes cl_guid unique for each server
-
cl_cURLLib - filename of cURL library to load
-
cl_consoleKeys - space delimited list of key names or characters that toggle the console
-
cl_mouseAccelStyle ( 0 )- Set to 1 for QuakeLive mouse acceleration behaviour, 0 for standard
-
cl_mouseAccelOffset ( 5 ) - Tuning the acceleration curve, see below
-
con_autochat ( 1 ) - Set to 0 to disable sending console input text as chat when there is not a slash at the beginning
-
con_autoclear ( 1 ) - Set to 0 to disable clearing console input text when console is closed
-
in_availableJoysticks - list of available Joysticks
-
in_keyboardDebug - print keyboard debug info
-
j_forward - Joystick analogue to m_forward, for forward movement speed/direction.
-
j_side - Joystick analogue to m_side, for side movement speed/direction.
-
j_up - Joystick up movement speed/direction.
-
j_pitch - Joystick analogue to m_pitch, for pitch rotation speed/direction.
-
j_yaw - Joystick analogue to m_yaw, for yaw rotation speed/direction.
-
j_forward_axis - Selects which joystick axis controls forward/back.
-
j_side_axis - Selects which joystick axis controls left/right.
-
j_up_axis - Selects which joystick axis controls up/down.
-
j_pitch_axis - Selects which joystick axis controls pitch.
-
j_yaw_axis - Selects which joystick axis controls yaw.
-
s_useOpenAL ( 1 ) - use the OpenAL sound backend if available
-
s_alPrecache ( 1 ) - cache OpenAL sounds before use
-
s_alGain ( 1.0 ) - the value of AL_GAIN for each source
-
s_alSources ( 128 ) - the total number of sources to allocate
-
s_alDopplerFactor ( 1.0 ) - the value passed to alDopplerFactor
-
s_alDopplerSpeed ( 9000 ) - the value passed to alDopplerVelocity
-
s_alMinDistance ( 128 ) - the value of AL_REFERENCE_DISTANCE for each source
-
s_alMaxDistance ( 1024 )- the maximum distance before sounds starts to become inaudible.
-
s_alRolloff ( 2 ) - the value of AL_ROLLOFF_FACTOR for each source
-
s_alGraceDistance ( 512 ) - after having passed MaxDistance, length until sounds are completely inaudible
-
s_alDriver - which OpenAL library to use
-
s_alDevice - which OpenAL device to use
-
s_alAvailableDevices - list of available OpenAL devices
-
s_alInputDevice - which OpenAL input device to use
-
s_alAvailableInputDevices - list of available OpenAL input devices
-
s_sdlBits - SDL bit resolution
-
s_sdlSpeed - SDL sample rate
-
s_sdlChannels - SDL number of channels
-
s_sdlDevSamps - SDL DMA buffer size override
-
s_sdlMixSamps - SDL mix buffer size override
-
s_backend - read only, indicates the current sound backend
-
s_muteWhenMinimized - mute sound when minimized
-
s_muteWhenUnfocused - mute sound when window is unfocused
-
sv_dlRate - bandwidth allotted to P
Related Skills
node-connect
339.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.8kCommit, push, and open a PR
