The goal of this project is modernize the Generals Zero Hour codebase in a very incremental manner. Each successive branch will make a handful of architectural changes.
The vcpp6 branch will remain as close to the EA source as possible (e.g., Visual C++ 6.0) but of course include bug/security fixes and other small quality of life features.
Future branches will follow one another and potentially include the following changes (some of these are pretty wild and have had limited thought put into them):
- graphics API: dx8, dx9 fixed function, dx9 shader-based, dx11, dx12, Metal
- sound API: miles, DirectSound, XAudio2, Core Audio
- video API: bink, ffmpeg
- language: c++98, c++11, c++14, c++17, c++20, Swift?
- compiler: msvc, clang
- STL: STLPort, EASTL?, libc++
- ide: vcpp6, vs2003, vs2012, vs2022, clion
- arch: x86, x64, arm64
- platforms: Windows, macOS, Linux
- code structure: dropping vanilla, ww* libs incorporated into core code (Gen3D?)
- concurrency/execution models: single-threaded, multi-threaded
- build system: visual studio, cmake/xmake, Swift Build?
- scripting: current system, Luau (current format dynamically converted to Luau)
- 3D Tools: 3DSMax, Blender
- coding standards: current, WebKit?, clang tools, asan, CPP Core Guidelines
- debuggers: vs2003, vs2022, Clion, RADebugger
- game modes for mods: RTS, MOBA, ARPG, MMO
- tools UI: MFC, Qt
- networking: ipv4, ipv6, client/server
A few constraints for the branches:
- only moving up one step within a progression ladder at a time
- only include 2 to 3 steps across the areas in a branch (first will include more)
- not moving to clang until the branch after x64
Tentative plan is to name the branches after maps included with the game.
The first branch after vcpp6 is likely to include: dropping the vanilla code, vs2003, dx9 fixed function, replacing miles, replacing bink
The goal of this project is modernize the Generals Zero Hour codebase in a very incremental manner. Each successive branch will make a handful of architectural changes.
The
vcpp6branch will remain as close to the EA source as possible (e.g., Visual C++ 6.0) but of course include bug/security fixes and other small quality of life features.Future branches will follow one another and potentially include the following changes (some of these are pretty wild and have had limited thought put into them):
A few constraints for the branches:
Tentative plan is to name the branches after maps included with the game.
The first branch after
vcpp6is likely to include: dropping the vanilla code, vs2003, dx9 fixed function, replacing miles, replacing bink