– Version 1.2.0 is out. You can get it here –
Windows x86:
https://github.com/voidstar-dev/SoftQuake/releases/download/1.2.0/softquake-1.2.0-win32.zip
Linux x86:
https://github.com/voidstar-dev/SoftQuake/releases/download/1.2.0/softquake-1.2.0-linux.tar.gz
Latest Changelog
*** 1.2.0
*** 2023-12-04
- Add -Wformat to the compiler flags.
- Annotate printf style functions so that the compiler can catch formatting errors.
Replace some sprintf calls with q_snprintf.
Fix format string mismatches. - Add -Wno-dangling-else, -Wno-pointer-sign to the compiler flags.
- Mix_OpenAudio has been replaced with Mix_OpenAudioDevice. This ensures that music files are played with the requested format. Prior to this, the implementation was free to modify the format.
SDL will convert the requested audio format under the hood to what the OS expects. - No longer assume WAVE file support. This is now checked at runtime with Mix_HasMusicDecoder().
- No longer disable music playback if Mix_Init() returns 0. At the very least, support for a wave decoder is checked.
- Give a more informative error message if an audio track for an unsupported format is found.
- Fix buffer underflow in COM_FileBase. When compiling with Clang under Linux, the program would crash upon loading a new level.
This was caused by an unchecked pointer decrement.
With this fix, you can now compile the Linux build with Clang without crashing the game. Just callmake
withCC=clang
. - Change main Windows Makefile flags to use regular
-l
for library linking. - Add
host_sleep
cvar. Defaults to 1. This sleeps the game for 1 millisecond after each frame. Set to 0 to disable. - Fix invalid GLSL syntax in the vertex and fragment shaders.
Nvidia’s drivers were accepting the shaders as they were written originally, whereas AMD’s drivers were not.
varying in
andvarying out
have been changed to justvarying
. - Add glGenTextures call for the OpenGL software backend.
- Misc formatting and typo fixes.
Hi everyone.
I’d like to introduce a project I’ve been working on since July 2023, which I call SoftQuake.
In essence, this is cross-platform port of the original software rendered version of Quake.
The goal for this project is to bring the original visuals of the software renderer outside of DOS and WinQuake, with minimal to no changes to the engine.
First, a bit about me…
I’m just a lone C developer who enjoys writing code, and also happens to enjoy Quake.
This project was just my way of having some fun and bringing something I really wanted to see to light.
I’ve never any kind of online presence on any Quake forums, so this would be my first foray into this sort of thing.
I started with the original source code release, which can be found here:
(Well, not the original on the web, but you know what I mean!)
Over about 1 week I whipped up a port that runs on Linux and Windows.
Here are some screenshots of the progress so far:
Yeah, I didn’t exect that either, this is the unmodified engine code!
Even the breakables and projectiles work.
Note that I’m looking in the corner for a specific reason The engine culls more distant map geometry otherwise. I haven’t figured out exactly why it does this yet. The rest of the maps (except ad_chapters) don’t work, unfortunately. Also, you need to use the -mem commandline option to give Quake more memory at startup. I used -mem 32 and it was sufficient.
Video options screen
Video resolution is independent to framebuffer resolution.
Currently, framebuffer mode supports multiples of 320x200 (1x, 2x, and 3x), but can be extended to support more modes.
I have a more detailed bit of documentation https://github.com/voidstar-dev/softquake-testbed, as well as additional screenshots, for anyone interested.
However, here are a short list of features:
Game:
- Base game support
- Mod/map packs
- Audio (SFX)
- Emulated CD Audio (requires a tracklist rip)
- Keyboard/mouse support
- Multiple framebuffer resolutions (the screenshots were captured at 320x200)
- Fullscreen/borderless/windowed modes
OS:
- Windows support
- Linux support
Libraries:
- Uses SDL2 and SDL2_mixer for easy portability
Other mods tested:
- Shrak
- Copper
Releasing:
The actual game works, and this post here is my way to gague if anyone would be interested in helping me prepare this codebase for actual release.
It currently compiles on Linux using GCC, and cross compiles to a Windows exectuable with MinGW, but it is far from a user friendly install/compile process.
If anyone is just interesed in the code as-is, I could potentially also post that, but be aware that (at the moment) it’s a very Linux-centric build process.
In case anyone missed it:
PS: I have also ported GLQuake in the same manner (original codebase, no visual changes), but I’ll save that one for another topic.
Special thanks to the QuakeSpasm devs. Your code was/is an invaluable resource for writing this port.
Thanks for reading!
– SoftQuake developer