Website improvements tbd

From ioquake3 wiki
Jump to navigation Jump to search
  • Prominently display the names of major contributors to thank them.
  • Better encourage new contributions
  • Display the latest commits to the project.
  • Animated gifs, everywhere.

Wiki Stuff for the release of q3

Move this stuff somewhere, probably onto this wiki: New Cvars & Commands

ioquake3 has introduced a number of new cvars and commands, mostly because of new features.

Cvar Type Description cl_autoRecordDemo Boolean Record a new demo on each map change. cl_aviFrameRate Integer The framerate to use when capturing video. cl_aviMotionJpeg Boolean Use the mjpeg codec when capturing video. in_disablemacosxmouseaccel Integer Disable mouse acceleration when running OS X with a mouse, defaults to 1.   s_useOpenAL Boolean Use the OpenAL sound backend if it's available. s_alPrecache Boolean Cache OpenAL sounds before use. s_alGain Float The value of AL_GAIN for each source. s_alSources Integer The total number of sources (memory) to allocate. s_alDopplerFactor Float The value passed to alDopplerFactor(). s_alDopplerSpeed Float The value passed to alDopplerVelocity(). s_alMinDistance Float The value of AL_REFERENCE_DISTANCE for each source. s_alRolloff Float The value of AL_ROLLOFF_FACTOR for each source. s_alMaxSpeakerDistance Float ET_SPEAKERS beyond this distance are culled. s_alDriver String Which OpenAL library to use.   s_sdlBits Integer SDL bit resolution. s_sdlSpeed Integer SDL sample rate. s_sdlChannels Integer SDL number of channels. s_sdlDevSamps Integer SDL DMA buffer size override. s_sdlMixSamps Integer SDL mix buffer size override.   ttycon_ansicolor Boolean Enable the addition of ANSI escape codes for colors in the tty. r_GLlibCoolDownMsec Integer Wait for a number of milliseconds to close GL library. com_altivec Boolean Enable the use of Altivec on PowerPC systems. s_backend RO String Indicates the current sound backend. cl_platformSensitivity RO Float Indicates the mouse input scaling. Command Description video <filename> Start video capture (use with demo command). Outputs to filename. stopvideo Stop the video capture. Using shared libraries instead of QVMs

To force Q3 to use shared libraries instead of QVMs run it with the following parameters:

+set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0

Using Demo Data Files

Copy demoq3/pak0.pk3 from the demo installer to your baseq3 directory. The QVM files in this pak0.pk3 will not work, so you have to use the native shared libraries or QVMs from this project. To use the new QVMs, they must be put into a .pk3 file. A pk3 file is just a zip file, so any compression tool that can create such files will work. The shared libraries should already be in the correct place.

Please bear in mind that you will not be able to play online using the demo data, nor is it something that we like to spend much time maintaining or supporting.

64-bit Mods

If you wish to compile external mods as shared libraries on a 64bit platform, and the mod source is derived from the id Q3 SDK, you will need to modify the interface code a little. Open the files ending in _syscalls.c and change every instance of int to intptr_t in the declaration of the syscall function pointer and the dllEntry function. Also find the vmMain function for each module (usually in cg_main.c, g_main.c, etc.) and similarly replace the return value in the prototype with intptr_t (arg0, arg1, …stay int).

Add the following code snippet to q_shared.h:

  1. ifdef Q3_VM

typedef int intptr_t;

  1. else
  2. include <stdint.h>
  3. endif

Note: if you simply wish to run mods on a 64bit platform, you do not need to recompile anything since by default Q3 uses a virtual machine system.

Creating Mods Compatible With Quake III 1.32b

If you're using this package to create mods for the last official release of Quake III, it is necessary to pass the command-line option -vq3 to your invocation of q3asm. This is because by default q3asm outputs an updated QVM format that is necessary to fix a bug involving the optimizing pass of the x86 vm JIT compiler.

Generating Patches

If you know how to code, but never made a patch before, that's okay. Here's the 10¢ survival guide to generating patches.

From git

If you checked the source code out with git, the client makes it rather easy to generate patches. In fact it's a function of the client itself. Once you've made a change in your checkout that is not upstream, here is how you use it:

Create a patch named amazing_new_feature.patch: git diff > amazing_new_feature.patch Apply a patch amazing_new_feature.patch: patch -p0 -i amazing_new_feature.patch From a tarball or other release

If you didn't get the source code via git, or for some reason that doesn't work for your situations, here's how to generate them using the tried-and-trusted diff tool between two files:

Create a patch named amazing_new_feature.patch between oldfile and newfile: diff -u oldfile newfile > amazing_new_feature.patch Create a patch named amazing_new_features.patch between directory olddir and newdir: diff -Naur olddir newdir > amazing_new_features.patch Applying a patch is the same as with git, see above. For more information on diff, patch, and git, read their respective man and info pages. For a more in-depth guide on git take a look at the git documentation.


How do I get the files using Steam?

First you need to buy the game (and the Team Arena add-on, if you want that too), of course.

On Windows, just install it and copy the game data from there..

On Linux/OSX unfortunately you can't just install the game, it's Windows-only on Steam. However, you can still download the game with SteamCMD. See this description for Linux or here for OS X on how to install SteamCMD on your system. You won't have to create a new user.

Then you can download quake 3 with

./ +@sSteamCmdForcePlatformType windows +login <YOUR_STEAM_LOGIN_NAME> +force_install_dir ./doom3/ +app_update 2200 validate +quit (replace <YOUR_STEAM_LOGIN_NAME> with your steam login name) When it's done you should have the normal windows installation of quake3 in ./quake3/ and the needed files in ./quake3/baseq3/ That number is the "AppID" of Quake 3; if you wanna use this to get the data of other games you own, you can look up the AppID at