The first striking thing is that the Visual Studio workspace is not made of one project but eight. Not all of them are used depending if the build is DEBUG or RELEASE (especially game,cgame and q3_ui : the virtual machines projects). Some of the projects are never used (splines and ui). A table is better to summarize what project is contributing to which module: Projects Type DEBUG Builds RELEASE Builds Comments botlib Static Library botlib.lib botlib.lib A.I cgame Dynamic Libary/Bytecode cgamex86.dll - game Dynamic Libary/Bytecode qagamex86.dll - q3_ui Dynamic Libary/Bytecode uix86.dll - quake3 Executable quake3.exe quake3.exe renderer Static Library renderer.lib renderer.lib OpenGL based Splines Static Library Splines.lib Splines.lib Used NOWHERE ! ui Dynamic Libary/Bytecode uix86_new.dll - Used for Quake III Arena.Trivia : idTech3 working title was "Trinity". Since idTech4 was called "Neo" I assumed it was from the "Matrix" franchise...but id Software stated in interview with firingsquad.com thatit was named after "Trinity River in Dallas": John : I've got a couple of engine things that I'm working on, as far as research. FS : So is one of those things Trinity? I think there's been a little confusion about "Trinity." John : I was never really certain how this got as confusing as it did to everybody. After Quake, when I was starting on new rendering technologies and everything, everybody was just calling it "the next engine" or whatever. Michael Abrash suggested we just take Intel's tack of naming your next project after a river near you. We have the Trinity River in Dallas, and so it was just like "Trinity Engine," the next step. Edit ( July 07, 2012 ) : Jeremiah Sypult contacted me after publication of this article: He "unrotted" the Mac OS X build with an XCode 4.0 project for Quake3. I have fixed it further and you can get it on here on github. You will need the Quake III Arena baseq3 (not the demo version) and be sure to use the parameters "+set vm_game 0 +set vm_cgame 0 +set vm_ui 0" in order to use the dylib virtual machines. Open /code/quake3.xcworkspace and it builds in one click !!
As a quality of life improvement, all of the binaries can be built all at once by having them within a workspace.C2Rust produces a top-level workspace Cargo.toml file, so we can build the project with a single cargo build command in the quake3-rs directory:
Rust currently supports the alignment attribute on structure types, but not on global variables, i.e., static items.We are looking into ways to solve this in the general case in either Rust or C2Rust, but have decided to fix this issue manually for ioquake3 with a short patch file for now.This patch file replaces the Rust equivalent of ssemask with:
Running cargo build --release emits the binaries, but they are all emitted under target/release using a directory structure that the ioquake3 binary does not recognize. We wrote a script that creates symbolic links in the current directory to replicate the correct directory structure (including links to the .pk3 files containing the game assets):
As an alternative to installing c2rust with the command above, you may build C2Rust manually using cargo build --release. In either case, the C2Rust repository is still required as it contains the compiler wrapper scripts that are required to transpile ioquake3.
Spearmint is a heavily modified version of the Quake III Arena engine. It is directly based on ioquake3 (November 2018). It was originally intended to be used exclusively for creating new games but it kept the ability to play the Quake 3 data.
You can download additional Quake 3 levels at lvlworld. They are not recommended for use with the Quake 3 or Team Arena demos. You can download additional Quake 3 player models and skins at WorldSpawn and ioquake3. Place the pk3 files into the folder for the games use you using (baseq3, demoq3, tademo, baseoa).Source CodeThe source code for the Spearmint engine and the compatible Quake 3 game code is available on Github under the GNU General Public License version 3 or (at your option) any later version. There are additional license terms inherited from RTCW and ET.
Now move the vital pak0.pk3 file to the location of your choice. After a bit of experimentation I created /.q3a/baseq3 and moved the file there. Another reasonable and perhaps more traditional location for this file would be /usr/share/games/quake3-data/baseq3/ but the location in $HOME worked well enough for me and I illustrate the required syntax here:
Just wanted to say well done on the fog reverse engineering effort!!. I wrote a quake engine shortly after quake came out and a q2 engine after q2 - I know exactly the kind of mind bending involved in working backwords from a file format!!
This map would not exist without python. About 1200 lines were written to run within the python engine embedded in Maya, to take advantage of Maya's existing texturing and geometry tools. My earliest tests with lighting involved using python to sample the average pixel color of an ordinary quake3 sky environment cube around each of the 122 vertices of a face-poked fullerene, which were then dumped to text as q3map2 sunExt definitions. When paired with the actual sky in-game, it made even the plain blockout forms of my early test maps look strongly grounded in their environment, and immediately set them apart from anything else I'd seen in the engine. (Before YSYEO was released, I wound up employing this method on two other maps, Ludonarrative Dissonance and Don't Mess With Hexas.)
Reading John Carmack's "plan" file(think, old-school version of a blogpost), dated "Jun 16, 1998". They originally planned Quake 3 to be a a sequel to Quake 2, but quickly switched on pushing Quake 3 as primarily a deathmatch game. Two reasons were, with the rate of progress to the game engine development, they'd never hit their target release date if they pushed on with the original plan(and I understand the fear, as that was the time were Duke Nukem Forever and Daikatana not getting released, exist). And, with both time and staff constraints(read up on the credits list when you exit quake 3 and see how small their team was), They'd rather make the best of one aspect, than to make two mediocre aspects.
4) For the game purchased via store media, a corrupted compatibility with the FMVs from resolution that not are 4:3 make Quake 3 don't display the FMV videos, only show a black screen with the sounds from the FMVs video. These problem are fixed on ioquake available on ioquake 3 041b061a72