OpenTS vs. vanilla Tiberian Sun
github.com/OpenTS-Developers/OpenTS · read 12 Sep 2026
OpenTS is a standalone rebuild of the Tiberian Sun 2.03 Firestorm engine — not a patcher
like Vinifera, and not a remake. You still install the retail game from the Ultimate
Collection; OpenTS replaces Game.exe. Windows only (10 1903+), 32- and 64-bit builds,
GPLv3, driven mostly by ZivDero with about nine contributors.
Every change carries a change record in manual/changes/: 80 features/perf/balance
entries and 130 bug fixes so far. 0.1.0 is released; the ~130 changes tagged 0.2.0 are in
nightlies only.
The big ones
Rendering: bgfx instead of DirectDraw
The frame still renders in software — looks and plays identically — but reaches the screen
through Direct3D, Vulkan or OpenGL. Every resolution the display reports from 640×400 up to
4K, ultrawide included. Fullscreen is a borderless window that never changes desktop
resolution, so alt-tabbing and crashes no longer wreck your desktop. Real system mouse
cursor. AllowHiResModes, AllowModeToggle and the -16 switch are gone.
New audio engine
A custom mixer on miniaudio replaces the DirectSound buffers and timer thread. Sixteen
simultaneous sound effects instead of five, sound effects positioned in the view, queued EVA
speech instead of dropped lines, music pauses on focus loss, and unplugging headphones no
longer kills all audio — playback follows the device. Sound definitions now understand the
Yuri's Revenge SOUND.INI keys (multi-sample sections, attack/decay, random pitch and
volume, per-section limits).
Networking that actually works
LAN play moved off IPX (which modern Windows dropped, so it was simply broken) onto UDP, with broadcast discovery on every adapter. Adaptive timing per connection, malformed packets rejected, an explicit disconnect/reconnect policy, and real out-of-sync recovery: instead of a box whose "Continue" dropped everybody, the host loads one of the match's multiplayer saves and plays on, dropping only the machines whose checksum disagreed. OOS reports are written to disk. Westwood Online and modem/null-modem play are retired.
CnCNet support (current milestone)
-SPAWN with a SPAWN.INI now runs the whole match — skirmish, campaign, tunnel or
direct multiplayer, resumed saves — with client-supplied load screen, score-screen skip, house
alliances and AI base plans read from the spawn sections. Plus observer seats and coach mode,
team/observer-scoped chat, chat echo with a readable background, and multiplayer movies with a
vote to skip.
Quality of life
- Autosave on an interval (campaign and skirmish rings, plus multiplayer), quick save/load hotkeys, saves in their own folder
- Route lines for the whole queued path, both order lines, styled via
UI.INI - Hover indicators and always-visible rank, selection filters by health or veterancy, add-selection-to-team, double-tap a team key to centre on it
- Repeat-last-production hotkeys (building / infantry / vehicle / aircraft), a Place Building key, music track skip
- Diagonal and edge-jump keyboard scrolling, frame-rate-independent scroll speed, edge scrolling can be turned off
- Crash reports with a minidump and a readable report; a debug log every run
- UTF-8 throughout (INI, names, chat), with Windows-1252 fallback for old files
- Written mission briefings when there's no briefing movie, difficulty named at mission start, map-local tutorial text
Modding / rules
- Vehicle transports —
IsVehicleTransport, andPassengersbecomes a space budget spent by each passenger'sSize, with aSizeLimit - Cash-producing structures — the oil-derrick family: interval payout, budget cap, capture bonus, reset on capture
- Theaters declared in the rules — a mod can drop, reorder or replace
TEMPERATE/SNOW;NewTheaterprefixes reach mod theaters - Weapons declared in
[Weapons], fixing weapons that only a projectile referenced and silently got no damage at all - More than eight facings for shape-drawn vehicles (16/32/64), plus
TurretFacingsandStartTurretFrame MultiMCV(Vinifera-compatible),AutoDeployMCV, build off a mutually allied base, per-country base units, side-based base building,AttackNeutralUnits, self-healing step/interval/ceiling, healing weapons that target vehicles,Totable, per-type harvester unloading art, starting-unit ring formation, sidebar cameo ordering- Thirteen new map trigger actions ported from Rampastring's ts-patches
~130 bug fixes
A lot of it is vanilla's hard-coded "first entry in the list" assumptions being replaced by whole-list lookups — construction yards, refineries, harvesters, war factories, service depot pricing — which is what makes mods with more than one of a thing behave. Plus malformed INI handling, large-map zone ids, damaged-scenario rejection, Firestorm detection, tiberium growth, fog redraw bounds, and campaign intro movies.
Red Alert 2?
No RA2 work yet, and it's not next. The README lists three milestones in order: (1) CnCNet and client support — the current focus, most of 0.2.0; (2) feature parity with Vinifera and the rest of ts-patches; (3) then extending TS toward RA2/Yuri's Revenge parity and matching the popular YR engine extensions.
Nothing in the repo is RA2 engine work: no issues or PRs about it, and the only RA2 mentions
outside the README roadmap are in docs/RATIONALE.md, about naming — the language-resource
names come from RA2, and a future RA2 decompilation is noted as possible future evidence for
naming things. So it's a stated long-term direction, not code.
What has landed are RA2-flavoured features backported into TS: vehicle transports,
Yuri's Revenge SOUND.INI semantics, cash-producing structures (oil derricks), 32/64-facing
artwork, MultiMCV, build-off-ally. Also worth knowing: the architecture note
(docs/DIRECTION.md) says the engine is migrating incrementally toward entity-component,
explicitly with no full rewrite — which is what would eventually make RA2-scale extension
practical.
Sources: README.md, docs/DIRECTION.md, docs/RATIONALE.md, the 217 records in manual/changes/, the GitHub API (issues, PRs, releases, contributors).