- ra3.client::display: shared interactive loops; SDL and Vulkan backends implement only the primitives (init/present/poll_event/window_size/ key_down/present_terrain). ra3.display picks the backend. - Menu: maps by localized name (gamestrings.csf), red/gold theme, hover highlight, mouse + keyboard, wheel scroll, fullscreen and FPS/vsync options, loading progress bar. - Terrain: continuous tile sampling via a texture array (REPEAT, uv = cell/(2*cellSize)) removes per-cell grid seams; SAGE blend ramp for material transitions; FPS label + top-right minimap overlays. - Skip the skirmish sim for map views; reuse the Vulkan texture; no idle terrain redraw.
3.4 KiB
3.4 KiB
Roadmap
OpenRA3 is a very large undertaking. This roadmap is deliberately honest about scope: reconstructing a 2008 RTS engine from a decompiler plus a related open engine is a multi-year, multi-person effort. The milestones below are ordered so that each one produces something that builds and runs.
Done
- v0.0.1 — skeleton + minimal skirmish. C++26 modules, GCC 16,
CMake/Ninja, Docker
dev/deploy, GitLab CI. ReadsBIG4/RefPack data from a local install, recovers map start waypoints, and runs a deterministic headless two-player skirmish to a decision. - v0.1.0 — map renderer + window. Software ARGB framebuffer, TGA decoder for the map art, BMP output, map/grid/unit compositing, and an SDL3 window viewer (pan/zoom).
- v0.2.0 — dual toolchain. Switched to Clang + libc++ with
import std;in every module; added an isolated Windows cross-build (llvm-mingw + SDL3 MinGW) producingopenra3.exe+SDL3.dll, alongside the Linux build. Both images are separate to keep the toolchains apart. - v0.3.2 — real terrain.
ra3.terrainparses the map'sHeightMapDataandBlendTileDataand rasterises the actual terrain from the install'sTerrain.bigtile textures (top-down, elevation-shaded), replacing the<map>_art.tgaoverview as whatrenderdraws. - v0.3.0 — real balance + skirmish + Vulkan.
ra3.datapins the retail numbers (damage types,ArmorTemplatepercentages, weapons, units, structures, ore economy) audited from EA's open RA3 XML;ra3.skirmishis rebuilt on them (armour resolution, weapon target masks, pay-as-you-go build queue, power, tech prerequisites, refinery ore cycle, team-wipe victory); andra3.vulkanreplaces the presentation stack with Vulkan (SDL3 surface, embedded SPIR-V), with a null fallback where no loader exists.
Next
- v0.3.1 — tactical map view. The Vulkan/SDL viewer reproduces the
retail tactical view (
TheTacticalView,ra3_1.12.game0x00cdb7b4): opens centred on the player's start, wheel zoom, edge scroll and clamped pan. A hand-rolled HUD was tried and removed — the real in-game interface is.aptart that must be recovered first, so it is not on the near roadmap. - v0.4.0 — real update modules. Locomotor movement, projectiles and
warheads, build placement, shroud, and pathfinding, driven by the
GameObjectmodule set recovered from the binary. - v0.5.0 — data-driven content. Deserialise the compiled assets
(
global.bin/static.*.bin+.manifest) sora3.datareads the install instead of pinned constants; real maps, models and strings. - v0.6.0 — full renderer. Perspective terrain (the heightmap is decoded but drawn top-down today), W3D models and the full in-game client on Vulkan, plus input.
Cross-cutting tracks
- RE depth — keep recovering retail layouts (see
REVERSE_ENGINEERING.md); every structure gets an address citation and a test. - Determinism & replay — the logic random stream and frame ordering must be reproducible; replay format and a golden-replay test suite.
- Offline only — no online mode. Multiplayer, if pursued, is LAN lockstep on the message stream, never an online service.