I am currently in the process of transitioning ioq3 to C++, utilizing the C++20 standard. The project’s build system is based on CMake, and uses Clang via MSYS2 and VSCode as the project workspace. To maintain a clean folder structure, I have removed other build systems. Additionally, I have removed the GL1 renderer and am now focusing on the GL2 renderer. However, I may modify it in the future to detect users’ GL capabilities and toggle rendering features accordingly.
The glsl_stringift vbs script has been replaced with a Python script that performs the task and conducts basic checks to avoid updating unchanged shaders. While there are challenges to overcome, I have successfully built the cgame, game, and ui for the base game, without mission pack support.
To clean up the code and make use of classes and an IOQ3 namespace, I plan to restructure the code. To reduce the code base and make it cross-platform, I will update the code to support other platforms and architectures. Currently, support is only available for Windows, but I will add support for Linux and Mac if I can access another system.
After seeing the Quake 1 re-release’s use of ImGui for menus, I am considering using ImGui for a new menu system that could also be utilized for pop-up dialogs and the built-in editor. I have a pre-existing config system for creating custom huds from a previous C++ project that can be adapted for this project, which is highly configurable and user-friendly.
Initially, I wanted to remove the VM, but I have decided to keep it and modify it to use Clang instead of LCC for Multiplayer security reasons, rather than using dynamic libraries. The libraries have been replaced with those available on MSYS2, with only the ones not available on MSYS2 being added to the internals. I plan to replace what I can in the code with nothing’s stb, as it is smaller and reduces the number of libraries used. However, I am still weighing this decision, as stb lacks some features.
I am working on many additional ideas and features, which I will detail once I have a stable build available. Once I have a stable build, I will make a repository available on Github.