Skip to content

Releases: corepunch/open-realm

OpenRealm v0.0.11-alpha — Original CD campaigns, menu audio and multiplayer fixes

Choose a tag to compare

@corepunch corepunch released this 04 Oct 09:27

OpenRealm v0.0.11-alpha brings original Warcraft III: Reign of Chaos CD installations into the campaign frontend, restores more of the retail menu presentation, and improves Internet custom-game reliability. Linux packages also regain background music playback.

This release includes all 13 commits on main since v0.0.10-alpha, at c46f0486c9c07adf144e98e389d6ef63bc5aa935.

Warcraft III

  • Original RoC 1.00 CD data: understand the legacy campaign metadata so campaign selection displays its backdrop and entries instead of a black screen. #576
  • Campaign and mission selectors: use retail-style arrow and cinematic buttons, spacing, centering, and wheel scrolling; show the main-menu logo and restore the campaign backdrop when going Back. #576
  • Menu sounds: restore glue-screen clicks and model-authored panel sound events, using Warcraft III's interface sound data and per-play sound variants. #576
  • Campaign stability and memory: give destructables their own larger state pool while keeping other pools compact, reducing static pool memory from approximately 52 MB to 26 MB. Fix a crash when a missile weapon has no model art. #573
  • Data diagnostics: opt in to reporting the original Warcraft III executable's version at startup with +set wc3_report_data_version 1, making installation-specific reports easier to investigate. #575

Internet custom games

  • Harden EOS connection, reconnect, departure, and host-loss handling. Guests recover through the normal disconnect/menu path when a host disappears; hosts reclaim departed guest lobby and server slots. #571
  • Use authoritative player names for lobby chat.
  • Add automated live checks for login, room discovery, gameplay, forced relay, graceful departure, and host/guest process crashes, alongside the full EOS-enabled regression suite. The EOS finalization work deferred from v0.0.10-alpha is included here. #571

Internet play remains experimental. All participants should use this release and identical map files.

Linux packaging

Native Linux releases now enable the FFmpeg decoder and bundle its required runtime libraries, restoring background music on installations without those libraries already installed. CI also verifies the packaged dependency closure and sound behavior. #574

Thanks to our contributors

Thank you @sookyboo for Warcraft III executable version reporting, and @corepunch for the campaign/CD compatibility, UI audio, multiplayer, stability, and packaging work. Thanks also to everyone testing builds and reporting installation and gameplay issues—those reports help make each alpha more usable.

Downloads and setup

Platform Package
Windows x64 openwarcraft3-windows-x64.zip
Linux x64 openwarcraft3-linux-x64.tar.gz
macOS Intel x64 openwarcraft3-macos-x64.tar.gz
Linux / Steam Deck Flatpak x64, with install/uninstall scripts openrealm-flatpak-v0.0.11-alpha.zip
Standalone Flatpak bundle io.github.corepunch.OpenRealm.flatpak

Extract the entire native archive and keep its libraries and share files together. Run bin/openwarcraft3 on Linux/macOS or openwarcraft3.exe on Windows, supplying your own game data with -data "/path/to/Warcraft III". Use -roc for Reign of Chaos or -tft for The Frozen Throne.

Native Linux requires system SDL2 and OpenGL libraries. The macOS Intel archive requires Homebrew SDL2 (brew install sdl2); it links the library under /usr/local/opt/sdl2-compat/.

For Flatpak, extract the installer ZIP and run bash install.sh; see the Flatpak and Steam Deck guide. Official packages include the EOS runtime and player configuration. Retail game assets are not included.

The Warcraft III save format remains 64, and the network protocol remains 17. Saves from v0.0.9-alpha and earlier remain incompatible.

Validation

CI on the release commit passed the full unit suite, build, Linux music/runtime packaging checks, and EOS regressions with live multiplayer acceptance. Release build and publication passed all five jobs for Windows, Linux, macOS Intel and Flatpak. All five download assets are uploaded; their SHA-256 digests, archive integrity, x64 executable architecture and required packaged runtimes were verified after download.

Full changelog: v0.0.10-alpha → v0.0.11-alpha

OpenRealm v0.0.10-alpha — Hero XP and large-map fixes

Choose a tag to compare

@corepunch corepunch released this 03 Oct 14:46

OpenRealm v0.0.10-alpha restores Warcraft III Hero kill XP behavior and fixes startup failures on maps with many destructables. It includes all changes on main since v0.0.9-alpha, including the entity lifecycle pool refactor.

Warcraft III changes

  • Restore authored Hero kill XP tables and formulas, shared XP and global recipient fallback, creep reduction, summoned-unit modifiers, building rules, and player XP handicaps. Add regressions through the ordinary lethal-damage path, including Prologue01’s 300% XP handicap.
  • Correct GetPlayerHandicapXP multiplier semantics and Blizzard percentage wrappers. Show XP toward the next Hero level in the level-bar tooltip and provide opt-in wc3_kill_xp_debug diagnostics.
  • Fix large-map startup failures by sizing lifecycle pools to the server’s entity capacity, replacing the previous 2,047 usable slots.
  • Move sparse building, ability, item and destructable state into lifecycle-owned pools, with explicit release/reset and complete owned-record save/load coverage.

Merged PRs: #569 and #570. Thanks to @sookyboo for these changes.

Validation

Final main CI passed both tests and build. The release workflow passed Windows, Linux, macOS and Flatpak builds/publication at commit bd1e528d0753bbac1d328bd6d2156f036d0c664f. All five download assets are uploaded.

Compatibility and Internet play

Saves from v0.0.9-alpha and earlier are incompatible. Warcraft III save format is now 64; old formats are rejected. The network wire format is unchanged, but all multiplayer participants should use the same release and identical map files.

Official packages include the EOS runtime and player configuration for Internet custom games. Internet play remains experimental. Draft EOS finalization work in #571 is not included in this release.

Downloads

Platform Package
Windows x64 openwarcraft3-windows-x64.zip
Linux x64 openwarcraft3-linux-x64.tar.gz
macOS Intel x64 openwarcraft3-macos-x64.tar.gz
Linux / Steam Deck Flatpak x64 openrealm-flatpak-v0.0.10-alpha.zip
Flatpak bundle io.github.corepunch.OpenRealm.flatpak

Extract the whole native package and keep the runtime libraries and share files together. Supply your own Warcraft III data with -data "/path/to/Warcraft III". For Flatpak, extract the installer package and run bash install.sh; see the installation guide. Retail game assets are not included.

Full changelog: v0.0.9-alpha → v0.0.10-alpha

OpenRealm v0.0.9-alpha — Internet custom games

Choose a tag to compare

@corepunch corepunch released this 03 Oct 12:59

OpenRealm v0.0.9-alpha introduces experimental Internet custom-game multiplayer through Epic Online Services (EOS), alongside a major round of Warcraft III melee AI, combat, movement, and presentation improvements. This release includes 197 commits since v0.0.8-alpha.

Internet play: host and join custom games

The Battle.net button now opens OpenRealm's Internet game browser. The official Windows, Linux, macOS, and Flatpak packages include the EOS runtime and configuration needed to connect to the official lobby directory.

  • Guest login: no Epic account is required. The game creates a guest identity local to your installation; it is not a portable account or profile.
  • Public custom games: browse available rooms, create a game using an installed map, or join another player's lobby.
  • Familiar lobby controls: player names, chat, open slots, teams, races, colors, game speed, and host-controlled map launch use the existing custom-game lobby.
  • Internet transport: EOS discovery and P2P carry the game's commands and world snapshots. The host runs the authoritative simulation.
  • Separate LAN play: the LAN button continues to use local-network discovery and UDP. Offline and LAN play remain available.

How to play

  1. Download this release's package for your platform, extract or install it, and point it at your own Warcraft III game data.
  2. Have everyone use this release and the same edition: Reign of Chaos or The Frozen Throne. Everyone must already have the exact same map file; maps and retail assets are not downloaded automatically.
  3. Open Battle.net from the main menu and wait for the Internet connection status to become ready.
  4. Create a custom game and choose a map, or select an available game to join. Configure the lobby and chat with the other players; the host starts the match.

This is OpenRealm's custom-game service. Blizzard Battle.net interoperability, ranked ladder matchmaking, account profiles, friends/invites, voice chat, achievements, global leaderboards, and host migration are not included. Guests cannot join a match after it has started.

Experimental status: live service checks have verified guest login and public lobby creation, discovery, reading, and removal. Automated tests cover packet fragmentation, peer admission, cancellation, and connection lifecycle. Full gameplay between two separate installations, relay-only connectivity, and cleanup after a host crash still need acceptance testing. Please report results and reproducible failures through GitHub issues or Discord.

Source builds default to offline/LAN support; Internet support requires the optional EOS SDK and authorized configuration. See the Internet multiplayer guide for setup and current verification limits.

Warcraft III gameplay and AI

  • Expand retail melee AI behavior and JASS natives for enemy-base discovery, expansion selection, creep targets, town threats, siege/injury filtering, Zeppelin purchasing, assault groups, and retreat behavior. Improve AI production across idle buildings and avoid issuing assault orders against hidden targets.
  • Improve group attacks, target chasing around blocked corridors, route-wait recovery, turning during cinematic movement, attack cooldowns and backswing timing. Honor alliance changes when deciding whether attacks should continue.
  • Add JASS point Patrol orders. Improve queued Stop and Hold Position, command-button glow, and the guard position units return to after automatic combat.
  • Apply player ability availability and researched spell tiers consistently to command cards and casting. Initialize authored autocast defaults, aggregate autocast across the focused subgroup, and correct rally handoff for newly trained units.
  • Fix Goblin Zeppelin movement to unload destinations, unload-order completion, and rejection of invalid drop locations. Improve Gargoyle Stone Form model presentation and Hero dissipate fading.
  • Correct destructable path-texture rotation, including gate orientation, and preserve authored static-scenery spawn positions.
  • Repair sleeping JASS condition resumption and exclude non-unit entities from unit-region events.

Presentation, terrain, and networking

  • Add under-attack minimap alerts with unit markers and authored advisor text. Keep minimap ping messages consistent between clients and servers.
  • Restore animated menu and campaign backgrounds, Birth/Stand transitions, Reign of Chaos rain and Infernal meteor effects. Isolate portrait and camera particle/event state and clean it up with its owner.
  • Improve weather particle blending, density, texture orientation, and authored particle planes.
  • Expand MDX event presentation for sounds, child models, splats, footprints, and UberSplats. Add terrain-deformation events and Earthquake presentation, with Blight rebaking and cliff-seam updates.
  • Improve camera orientation and pan behavior. Camera shake is evaluated by the game and transported as generic view offsets for client interpolation.
  • Speed up cliff terrain rebuilds and report malformed cliff resources explicitly. Keep status-bar fills visible behind HUD text and constrain the console background to its UI scene.
  • Harden client disconnects, freed-slot lookup, and sign-on baselines, including entities created during startup.
  • StarCraft II: improve native HUD layout and selected-unit commands, including Move ability gates on right-click orders. StarCraft II and World of Warcraft remain exploratory targets.

Downloads and upgrading

Platform Download Start
Windows x64 openwarcraft3-windows-x64.zip Extract the whole archive and run openwarcraft3.exe.
Linux x64 openwarcraft3-linux-x64.tar.gz Extract the whole archive and run bin/openwarcraft3.
macOS Intel x64 openwarcraft3-macos-x64.tar.gz Extract the whole archive and run bin/openwarcraft3.
Linux / Steam Deck Flatpak x64 openrealm-flatpak-v0.0.9-alpha.zip Extract the installer package and run bash install.sh.
Flatpak bundle io.github.corepunch.OpenRealm.flatpak Install directly with flatpak install --user ./io.github.corepunch.OpenRealm.flatpak.

Keep the packaged runtime libraries and share files together with the executable. For native packages, select your game data with -data "/path/to/Warcraft III". Flatpak provides a folder-selection prompt; see the Flatpak and Steam Deck guide.

Retail Warcraft III assets are not included; supply game data you legally own. Save layouts and the network protocol changed: saves from earlier releases are incompatible, and all multiplayer participants must use matching versions. These downloads target desktop x64; iPad remains a source-build port.

Thank you to all contributors

Thank you to @sookyboo for the extensive Warcraft III AI, combat, routing, gameplay, rendering, and regression work in this release, and to @corepunch for Internet multiplayer, engine integration, platform packaging, and review fixes.

We also thank every contributor whose work brought OpenRealm here: @Alino (Alexander Sadovsky), @leinadUa (Daniil Ryvkin), @Tom-R-Main (Thomas Main), @lofcz (Matěj Štágl), @jmsparta (James Mintram), @codesarl, and orbisai0security, alongside the contributors named above. We acknowledge development assistance from Copilot and OpenHands.

Special thanks to Retera for WarSmash, a valuable reference for many parts of this project, and to everyone testing builds, reporting bugs, reviewing changes, documenting behavior, and helping other players. Your contributions make these releases possible.

Full changelog: v0.0.8-alpha → v0.0.9-alpha

OpenRealm v0.0.8-alpha

Choose a tag to compare

@corepunch corepunch released this 29 Sep 12:02

OpenRealm v0.0.8-alpha brings a substantial round of Warcraft III gameplay and campaign improvements, a more complete HUD and audio experience, an iPad port, and further progress on StarCraft II scripting and rendering. This release includes 332 commits since v0.0.7-alpha.

Highlights

  • Night Elf mechanics: Wisp harvesting, Entangled Gold Mines, Moon Wells, Ancient Root/Uproot, Shadow Meld, and Entangling Roots.
  • Campaign progress: Soul Gem capture and Grom revival in Orc08, Orc07 bridge restoration, Way Gate traversal, and fixes to Undead mission triggers and cinematics.
  • Better everyday controls: minimap contacts and right-click orders, Shift-queued construction, Reforged-style camera zoom, resizable windows, and improved widescreen HUD layout.
  • Richer audio: animation-triggered sounds, better unit response timing, music lifecycle fixes, MP3 sound decoding, and in-game sound options with working cancel behavior.
  • More platforms: a Makefile-driven iPad build with two-finger camera panning, plus PortMaster packaging scripts.

Warcraft III gameplay and campaigns

  • Implement Night Elf harvesting and Moon Well behavior, including construction-aware regeneration; connect Entangled Gold Mine creation, Wisp cargo, mining, depletion, and cleanup. Ancients can root and uproot with the appropriate movement, attack, and building state.
  • Add Shadow Meld/Hide and Entangling Roots gameplay and presentation. Improve invisibility, Wind Walk, detection, overlapping effects, and friendly-unit visibility so invisible units remain controllable by their owner.
  • Expand Arthas's Paladin and Death Knight abilities, creep ability behavior, item attack bonuses, and custom-map ability data handling. Fix Evasion aliases, Spirit Link targeting, Mana Shield ownership, Gargoyle Stone Form reversal, and researched Hero mana preservation.
  • Complete more Undead lifecycles: Acolyte Sacrifice, timed Unsummon, corpse decay and reservation, Graveyard production, Cannibalize, Raise Dead, and Meat Wagon corpse cargo. Improve artillery impact handling, secondary weapon selection, and timed transport unloading.
  • Add Goblin Land Mine placement and detonation behavior, including approaching out-of-range cast locations and preserving targeted-item state.
  • Repair Orc07 gemstone bridge restoration and Orc08 Soul Gem capture, cleanup, and scripted Grom revival. Add explicit Way Gate traversal and JASS destination/activation support; fix Undead07 shield triggers, Undead01 cinematic effect/sound lifetimes, and Hero revival cleanup loops.
  • Improve synchronous and reentrant JASS trigger execution, immediate-order and item-pickup events, paused timer callbacks, moving-unit range events, per-unit shared vision, item flags, and destructable animation. Add AI upgrade-cost queries and shifted town construction placement.

Interface, camera, sound, and rendering

  • Show units, buildings, Heroes, and mines on the minimap; support minimap right-click Smart orders and Shift queueing. Queue building construction with placement previews.
  • Add camera zoom controls that respect map-authored limits and gameplay UI input. Enable window resizing/maximization and make the widescreen HUD respond to the authored canvas policy and window size.
  • Improve animated cursors and edge-scroll directions, status-effect tooltips, mine gold hover text, cargo overlays, command-error positioning, and quest-journal access before quest discovery. Expose the Night Elf campaign in the campaign selector.
  • Synchronize unit barks and portrait responses with playback; add MDX animation sounds and spawned event models, construction loops, authored sound volume, and one-shot MP3 decoding. Improve music pause, fade, session synchronization, and thematic restoration.
  • Add in-game sound options with preview/restore behavior. Cancel and Escape restore edited settings, and UI controls are restricted to explicitly permitted configuration variables.
  • Fix Warcraft III cliff materials and seams, Blight boundaries, building splat clipping/flicker, spawned doodad animations, and RoC asset resolution. Reduce repeated aura scans, hover traces, pathability checks, animation-key searches, and splat clipping work.

Other games, platforms, and tools

  • StarCraft II: expand Galaxy unit/player/point/order foundations, event callback registration, unit queries, and catalog-driven ability/weapon/behavior state. Improve model facing, console HUD transforms, terrain/cliff road conformity, ramp transitions, and road shadow handling. Add a terminal map picker and refresh native-coverage diagnostics.
  • World of Warcraft: fix gameplay input and improve MinGW portability.
  • iPad: add device and simulator build/deploy targets, touch camera panning, game-data import through Documents, and clear missing-data diagnostics. See the iPad build guide; this is a source-build port, not a bundled App Store or IPA release.
  • Add PortMaster launch/packaging files, an MPQ-backed searchable campaign launcher, PKWARE archive decoding, retail audio/cursor analysis tools, and expanded regression coverage. Consolidate Warcraft III sources and replace platform-specific engine type aliases with native C types.

Upgrading and downloads

Warcraft III save layouts and the network protocol changed during this release. Saves from v0.0.7-alpha are not compatible; use matching versions for clients and servers.

The Release workflow attaches Linux, macOS, Windows, and Flatpak packages below. Retail game data is not included; you must supply your own supported game files. iPad and PortMaster setup is provided in the source tree.

Thank you

A huge thank-you to @sookyboo for the extensive Warcraft III gameplay, campaign, audio, UI, and PortMaster contributions, and to @lofcz (Matěj Štágl) for the cursor work, widescreen and resizing improvements, unit audio fixes, campaign launcher, and retail analysis tools. Thanks also to @corepunch for the engine, renderer, platform, scripting, and integration work across this release.

Thank you to everyone testing builds, reporting bugs, and helping improve OpenRealm. Your reports and contributions make these releases possible.

Full changelog: v0.0.7-alpha → v0.0.8-alpha

OpenRealm v0.0.7-alpha

Choose a tag to compare

@corepunch corepunch released this 20 Sep 08:38
e0a9a34

OpenRealm v0.0.7-alpha

This alpha lands the Undead Blight simulation, procedural Chain Lightning and missile-trail rendering, a large wave of finished WC3 abilities, race-specific economy and construction, team-color ownership, and a sweep of campaign, HUD, JASS, and pathing fixes. It also fixes Windows releases shipping without their MinGW runtime DLLs.

Undead Blight (new)

  • Mutable Blight world state with persistence across save/load, plus authored-data contracts and behavior/persistence tests.
  • Server→client Blight mask sync isolated from entity snapshots, with a self-healing sweep resync, shared mask lookup, and datagram registry.
  • Client mirror and terrain-layer rendering through terrain layers using the authored Blight terrain texture (no repainting of authored Blight).
  • Aura of Blight (Aabr) and related Blight-adjacent abilities (Essence of Blight, Replenish, Spirit Touch) registered on existing aura infrastructure.

Combat presentation: lightning, projectiles, trails

  • Procedural Chain Lightning rendering matched to Warcraft III bounce behavior, with beam-oriented lightning textures attached to moving units and tracked through the ability-ownership rules.
  • Missile projectiles animated and oriented in flight; Spirit Tower attack targeting and acquisition enforced with invulnerable-unit handling.
  • MDX ribbon emitters promoted to a shared engine trail object (fade on detach; reuse, double-advance, hitch-stacking, and UV-rescale fixes).

Abilities: finished wave + registry groundwork

  • Finished: Mana Shield toggle and damage conversion, Cyclone (incl. DataA dispel), Volcano (incl. leftover fields), Pocket Factory (incl. leash), Rain of Chaos, Possession, Inferno landing, Clockwerk Self-Destruct, Dark Portal, Kaboom click, Unstable Concoction, Exhume Corpses, Unsummon Building, Hippogryph couple, Spirit Link, item Anti-Magic Shell, Mana Flare, Healing Spray/Transmute, Ensnare (flying land-and-lock) + Purge Apg2 immobilization/recovery, Stasis Trap/Sentry Ward, Soul Burn silence, Disenchant/Devour Magic, Cannibalize, Barkskin, Ancestral Spirit, Polymorph (with caster mana upgrades).
  • New coverage: melee spell abilities (Frenzy, Unholy Frenzy, Curse, Cripple, Taunt, Purge, Lightning Shield, Healing Ward), Spirit of Vengeance/Moon Glaive/Slow Poison/Raise Dead, item orb bonus damage with on-hit debuffs, poison on-hit buff state, creep code= parents and all remaining creep ability aliases with parent-owned hooks.
  • Auras: fountain regeneration auras with persistent visuals, retail 2-second cadence throttling, cache indexing/lifecycle fixes, and alias art-lookup fallback.
  • Registry: all 67 TFT base/intermediate ability classes extracted with parent-chain helpers and demo registrations; spell definitions flattened into flag-driven abilities (AB_SPELL); Raven Form and locomotion encapsulated in abilities with authored morph animations and save versioning; ability-ownership and test-first rules documented.

Economy, construction, and gathering

  • Race-specific construction mechanics with lifecycle regression tests, versioned construction saves, central race mapping, and data-driven in-place building upgrades (requirements, progress panel, footprint spawn rules).
  • Race-specific gold mining (incl. scripted Haunted Mine creation/harvest orders, preplaced-mine parent binding, overlay death/restore handling, Entangled Mine depletion, Ghoul lumber harvesting, authored harvest data with legacy Ahar compatibility).
  • Build routing: non-blocking pending-birth sites, displaced-worker/builder order preservation, footprint detour destinations, friendly-unit displacement, cinematic-route preservation, and Human04 town-hall cancellation/recovery coverage; worker crowd routing for tree harvest.
  • Upgrades train instant-build behavior restored for structures/upgrades where authored.

Team colors

  • Full ownership chain documented and tested: authored placement colors preserved, lobby fixed-player locks, JASS recolor APIs honored, resolution/persistence propagated to presentation, with generic map-placement color fields kept out of engine code.

HUD and selection

  • New timer-dialog and leaderboard HUDs (content-sized, stacked, positioned), variable-limit trigger events with persistence, mapped-leaderboard/spawn filtering fixes.
  • Hover gates restored with shared size-to-content payloads, mana-snapshot filtering, and cursor-tint fixes; inventory tooltips use item names; invulnerable-unit health hidden; build-queue/action placeholders hidden where inappropriate.
  • Selection: scripted-selection sync, same-type selection, Tab subgroup cycling, focused-icon second click, hero/idle-worker shortcuts with invalidation fixes, portrait targeting (Holy Light), minimap bounds outline, quest notifications with retail MDX particles.

JASS, maps, shops, and saves

  • JASS: hashtable natives with save/load persistence and post-restore handle resolution, multiboard/texttag natives, spell order/effect events, building-order wiring, world-bounds enumeration, stale-handle save semantics, coroutine-handle preservation, variable-limit events.
  • Maps/compat: DotA v6.83d playability track (Vexorian parse, minified return"", null-mapscript rejection, map-imported Units/Misc/w3a INI, shop/hero/combat natives, mercenary wrote), MPQ sectors above 64 KiB honored, bulk campaign-map audit added, war3map.j loader and map-data-set overlays honored.
  • Saves: config-lifecycle state persisted and versioned, construction preview state fixed, item/shop/patron/stock overrides honored (merchant, mercenary), empty CreateItem IDs rejected, #418 crash families fixed.
  • Deferred unit lifecycle completed (KillUnit exclusion, replacement timing, paused death animation, duplicate death-event/loot fix) after two reverted attempts.

Campaign missions

  • Human04 town-hall builder/harvest recovery, Human05 dark-conversion replacements, Human06 bridge axis/rotation/routing fixes with runtime crossing tests, Human07 lifecycle constants/coverage/collision fix, Human09 cinematic lifecycle capture with intro-cleanup hero walk and save-restore cinefilter fix (no more black screen on prologue restore).

Movement and pathing

  • Game-specific pathing routed through the game API; movement-layer collision, unflyable-terrain flying rules, movement-driven region entry, and throttled unreachable-route fallback (no per-order floods); SC2 shares WC3 routing with smooth movement/selection restored.

Renderer, camera, and server

  • Camera field transitions + StopCamera with documented field limitations; arrow-scroll input timing and camera-input crash fixes; WC3 sky models anchored/animated; scene fog applied to ground shadows; airborne rings placed below models; stale-cinefilter regression test.
  • Server: exact-edict unicast diagnosis with unowned-recipient rejection, WC3 data/configstring contract enforcement, synchronous-load yields keeping the window responsive.

StarCraft II and tools

  • Galaxy: previously stubbed natives implemented, smoke test loads MapScript.galaxy; MPQ/sector, ability_audit, mkdir, and Sleep-collision portability fixes; hero-select cheat, sandbox/docker and gdb-cheat docs; audit loaders no longer write __pycache__.

Distribution

  • Fixed Windows release archives missing their MinGW runtime DLL closure (issue #462): SDL2/zlib/libepoxy plus transitive deps are now bundled beside the exe, with the job failing loudly on unresolved dependencies.
  • Release assets are built only on release tags: Linux, macOS, Windows, and Flatpak packages attach to this tag via the Release workflow.

Thanks to @sookyboo for major contributions to this release.

Full changelog: v0.0.6-alpha...v0.0.7-alpha

OpenRealm v0.0.6-alpha

Choose a tag to compare

@corepunch corepunch released this 11 Sep 12:48

OpenRealm v0.0.6-alpha

This alpha substantially expands the Warcraft III gameplay loop and brings the client, server, renderer, and scripted game state closer to the behavior expected by the original game. It also improves the foundation used by the StarCraft II and World of Warcraft targets.

Warcraft III gameplay and presentation

  • Hero abilities now have complete cooldown state, synchronized presentation, and reliable behavior across orders, saves, and scripted execution.
  • JASS execution is more robust when triggers yield or resume: coroutine state, loop indices, statement returns, and group lifetimes are preserved correctly.
  • Unit interaction and selection are closer to retail behavior, including enemy and neutral hover/selection, command feedback, rally markers, control groups, hero and idle-worker shortcuts, resource-gain text, and timed status bars.
  • Core economy and combat systems continue to mature with worker routing and gathering, food and upkeep, construction and repair, upgrades, hero revival, building damage effects, destructable bridges, creep sleep, and Orc burrow behavior.
  • Campaign and single-player flow now includes more complete menus, quest and message-log handling, save/load lifecycle support, campaign progress persistence, cinematic transitions, dialogue, weather, time-of-day lighting, and victory/defeat presentation.

LAN multiplayer

LAN multiplayer is working reliably and performs very well, with responsive local-network lobbies, stable remote-client loading, and smooth in-game synchronization.

Renderer, camera, and platform foundation

  • Camera state and terrain interaction were refined across cinematic and gameplay views, including server-authored camera samples, terrain-height smoothing, bounds, fog, widescreen presentation, and model-based sky support.
  • Server-to-client presentation contracts were tightened for vertex colors, sound, weather, loading screens, UI windows, minimap alerts, and authored building effects.
  • SC2 campaign startup and cutscene coverage was improved with safer Galaxy native handling and better actor/camera support; WoW character, DBC, M2, WMO, and map presentation received corresponding fixes.
  • The build and test pipeline now uses a reusable Linux dependency image, produces JUnit reports, and has stronger cross-platform portability checks.

Distribution

This release includes Linux, macOS, Windows, and Flatpak packages. As an alpha, it is intended for continued gameplay, campaign, renderer, and compatibility testing with the required original game data.

Full changelog: v0.0.5-alpha...v0.0.6-alpha

OpenRealm v0.0.5-alpha

Choose a tag to compare

@corepunch corepunch released this 30 Aug 08:00

What's new in v0.0.5

WC3 — Gameplay

Hover health bars — moving the cursor over an enemy or neutral unit now shows a health bar above it. The cursor tints red for hostile units; the hover ring is green for allies, yellow for passive allies, and red for enemies.

Nearest resource drop-off — peasants now walk to the closest compatible building with a return-resource (Artn) ability rather than always seeking the Town Hall. Lumber mills are preferred over distant town halls, and if the chosen building dies in transit the worker automatically retargets to the next nearest compatible drop-off.

Gold mining overhaul — mine capacity, duration, and maximum gold are now read from each mine's own AbilityData.slk row rather than process-wide globals. Multiple differently-configured mines on the same map are supported. Workers inside a mine are flagged invulnerable and non-orderable; occupancy is generation-guarded so edict recycling cannot double-decrement. Gold depletes to zero with a correct partial final trip, and waiting workers wake up and re-enter once a slot frees.

Trained unit exit placement — units no longer get stuck inside large building footprints when training completes. The exit search now walks deterministic square rings outward, testing both the baked static pathmap and live unit-circle collisions at every candidate. Units that cannot exit (fully blocked) stay hidden in the training queue and retry each tick.

Inventory system — six-slot per-unit inventory with right-click contextual pickup, movement-into-range revalidation, hidden/unlinked carried-item entities, drop/remove/JASS lifecycle paths, and AInv capability checks. Item data is driven by UnitUI.slk.

Destructibles — breakable destructibles with hit-point lifecycle, random item-drop tables (per-map and inline), scripted activation for hidden crates, and persistent shadow/animation during the death sequence.

Sounds

  • Positional stereo playback — panning and attenuation based on source distance and angle
  • Chop and tree-fall sounds driven by UnitCombatSounds.slk
  • Order confirmation sounds and JASS PlaySound / PlaySoundAtPoint natives
  • Fix WC3 MPQ voice decompression (broken Huffman path)
  • Sound-index wire type widened from 8-bit to 16-bit; MAX_SOUNDS raised from 256 to 512

Other fixes

  • Fix carried-resource render entity lifetime (entity freed while still referenced)
  • Fix lumber and gold return deposit interaction range

SC2 — Campaign

  • Galaxy scripting mode: campaign intro triggers, cargo/order natives, curved road rendering, scripted camera transitions with exponential low-pass smoothing
  • Complete console UI chrome in-map
  • Fix dropship flight height, intro movement, and cargo-unload sequencing
  • Optimize Human02 waterfall fog and FOW update

Renderer

  • Smooth cliff normals across map seams via shared terrain-grid normal computation
  • Change-detection uniform uploads (skip unchanged uniforms each frame)
  • GLSL 120 float-literal and compatibility fixes
  • SC2 emissive glow rendered inline (removes a second scene pass)

WoW

  • Reclaim streaming world textures by Q2-style registration sequence

CI / Platform

  • Windows build and release artifacts (Linux, macOS, Windows on every release)
  • Linux arm / Ubuntu 22.04 strl compatibility (-DCOMPAT_STRL)

OpenRealm v0.0.4-alpha

Choose a tag to compare

@corepunch corepunch released this 26 Aug 20:00
e471c47

OpenRealm v0.0.4-alpha

A memory and renderer release. The headline change is a large RAM reduction in Warcraft III — peak usage dropped from ~850 MB to ~350 MB — plus a new data-driven way to declare shaders, and a round of StarCraft II rendering work (console chrome, shadows, M3 animation).

StarCraft II — TerranTest scene (shadows, lighting, console HUD)

Memory reduction (Warcraft III ~850 MB → ~350 MB)

  • Packed model buffers — MDX/M2/M3 now pack each model into a single interleaved vertex buffer + one index buffer with byte-offset indexed draws, instead of six GL buffers per geoset (which rounded to ~70 MiB of 16 KiB backing allocations on Human02).
  • Leaner FDF frame pools — uiFrameDef_t/FRAMEPOINT booleans collapsed into bitfields and MAX_UI_CLASSES cut from 4096 to 2048 (measured peak 1167), roughly halving each 26.78 MiB frame pool.
  • Grow-on-demand loopback queues — the two fixed 8 MiB network queues now allocate lazily and grow only for queued bursts.
  • Smaller entity/snapshot budgets — MAX_GAME_ENTITIES and the per-frame packet snapshot budget tightened, and the oversized server snapshot allocation removed.

New structured shader definitions

The hand-written GLSL string literals are replaced by data-driven shader_desc_t declarations: each shader is a typed struct carrying its name, target GLSL version/precision/fragment output, and interface tables, with UNIFORM() offsetof bindings. One descriptor compiles for GLES3, GLSL 120, and GLSL 140, and uniform names, enum indices, and glGetUniformLocation strings can no longer drift apart. Also fixed a shader-define leak where a prior instanced compile could bleed BZ_USE_INSTANCING into normal M2 programs.

StarCraft II

  • 3D console chrome — RF_ORTHO_CAMERA flag, SC2Layout <Position>-driven left/center/right chrome placement, portrait panels (FT_PORTRAIT), and M3 "Stand" pose animation.
  • Shadows & lighting — ground-footprint shadow matrix (sc2_shadow_matrix) with 3×3 PCF, terrain + M3 shadow sampling, and the TerranTest test scene (Command Center, SCVs, Marines, Vespene Geyser).
  • Model resolution via UnitType catalog lookup with Buildings/Resources prefix handling.

Renderer & fixes

  • +vid_hidden 1 headless render mode (no window, no focus steal) for deterministic CI screenshots.
  • Fixed 128-bone palette contract, explicit per-source texture channel order (RGBA/BGRA), and animation/portrait fixes.
  • SDL display-mode log gated behind opt-in vid_modes.

OpenRealm v0.0.3-alpha

Choose a tag to compare

@corepunch corepunch released this 25 Aug 19:39

OpenRealm v0.0.3-alpha

This release is a major expansion across the engine, all three game targets, and the release/build toolchain. It adds StarCraft II map loading and rendering, a full World of Warcraft renderer and gameplay loop, a FDF-driven Warcraft III HUD, a unified model shader, and a server-authored UI pipeline — plus the project rename from OpenWarcraft3 to OpenRealm.

Project-wide

  • Renamed the project from OpenWarcraft3 to OpenRealm.
  • Added native Windows build support and OpenBSD support.
  • Vendored Lua 5.4 and dropped the libxml2 dependency in favor of the in-tree XML parser.
  • Added a dedicated (headless) server mode.
  • Split build rules into per-game game.mk files and centralized server/common build variables.
  • Added zero-copy mmap file reads (FS_MmapFile / FS_MunmapFile).
  • Trimmed the entityState_t / playerState_t network contracts and added WC3/WoW test coverage.
  • Added a runtime texture cache (with M2 LRU wrap fix) and a resident model registry.

StarCraft II

  • Added StarCraft II map loading and rendering (terrain, M3 models, doodads).
  • Added an SC2Layout XML parser and server-authored in-game HUD via the svc_layout pipeline.
  • Added SC2 catalog parsing (UnitData, CModel parents, CUnit spawn fields) and footprint-based static collision.
  • Added SC2 map diagnostics and binary terrain layer validation.

World of Warcraft

  • Added full WMO interior/exterior rendering: portal visibility (MOPT/MOPV/MOPR), MOLT lights, MOMT blend modes, two-pass transparency, and WMO-embedded doodads.
  • Added data-driven grass rendering (GroundEffectTexture.dbc, GPU instancing, alpha-to-coverage, wind sway).
  • Added the character appearance pipeline: geosets, helmet hide-groups, item/equipment attachments, and DBC-driven spell visuals.
  • Added a quest system (full text, state tracking, rewards, quest log, prerequisite chains) and loot system with backpack window and damage-flash overlay.
  • Added combat: casting, targeting (selection circles, hover highlights, Tab cycling), magic schools, and creature threat/aggro.
  • Added the spawn system from WorldSafeLocs DBC and AzerothCore playercreateinfo data.
  • Added area-trigger teleport, first-login race cinematics, and M2 camera playback.
  • Replaced project-authored layouts with native FrameXML loading, notification strip, and inbox/tutorial windows.
  • Added WoW sound, minimap, time-of-day sun lighting, and distance fog.

Warcraft III

  • Moved all HUD/menu geometry into War3.mpq FDF and removed project-owned FDF files.
  • Implemented hero abilities (Maiev's Warden kit: Blink, Fan of Knives, Shadow Strike) behind an extensible hero spell pipeline.
  • Added combat parity: the WC3 damage table (armor/attack-type reduction), splash damage, and Huntress bounce attacks.
  • Added pathfinding/collision parity: block-and-slide movement, flow-field flood-fills, and heatmap caching.
  • Added control groups, WC3-style camera controls, fog-of-war modifiers, and day/night sight radius.
  • Added economy abilities: cargo, gold-mine harvesting, repair, and blight.
  • Added Patrol, Hold Position, and attack-move abilities.
  • Added win/loss conditions, quest items, and the game-result popup.
  • Added overhead health bars, the hero attribute panel, ability cooldown shading, and cinematic talking-head portraits.

Renderer & UI

  • Unified the MDX/M2/M3 model shaders into one shared shader.
  • Added MSAA and GLES backends.
  • Added the M2 particle + ribbon emitter pipeline.
  • Added the server-authored HUD pipeline (svc_layout, Quake 2 STAT_LAYOUTS pattern) with client-side FDF-driven screens.
  • Added the screenshot API and screenshot console command.

Networking

  • Added UDP networking with -connect and loopback socket fast-path.
  • Optimized fog-of-war packet handling.

Build, tooling & tests

  • Added the m2gen tool and generated WoW test data to fix headless CI.
  • Expanded in-engine WC3 and WoW test suites (SLK, combat, movement, pathfinding, collision, spells, quests, networking).
  • Added a parity + golden-image render harness.
  • Continued expanding the documentation site with per-subsystem architecture articles.

New contributors

Thanks to everyone who contributed since v0.0.2-alpha.

Full changelog: v0.0.2-alpha...v0.0.3-alpha

Playable LAN version

Choose a tag to compare

@corepunch corepunch released this 02 Jun 16:43

OpenWarcraft3 v0.0.2-alpha

This release is a broad foundation pass across the engine, tooling, documentation, tests, and release infrastructure. It improves the project’s build and distribution flow, expands core gameplay/runtime coverage, and continues moving the codebase toward a cleaner Quake/id-style RTS architecture.

Highlights

  • Added automated multi-platform release builds through GitHub Actions.
  • Added and published the project documentation site, including architecture and file-format articles.
  • Added the MIT License.
  • Added Copilot/agent development instructions for the codebase’s C style and architecture conventions.
  • Reworked the build layout around the Makefile-only workflow, including flattening the old src/ tree.
  • Added UDP networking support, including -connect, multi-client server tests, and max-player enforcement.
  • Replaced StormLib with an in-tree MPQ reader.
  • Added fdftool for interactive FDF scene viewing through the game UI parser and renderer.
  • Improved FDF parsing compatibility with shipped Warcraft III frame files.
  • Refactored the JASS VM, expanded coroutine support, and implemented a fuller JASS native API.
  • Expanded test coverage across SLK parsing, lifecycle, movement, collision, combat, animation, abilities, resources, quests, MSG codecs, and networking.
  • Improved menu startup, transitions, loading states, debug tooling, and map loading scripts.
  • Organized game-specific modules under the games/ directory.

Security

  • Removed an unsafe exec() usage in g_spawn.c.

Documentation

  • Added system-level README and source documentation.
  • Moved UI implementation details from the README into source files.
  • Added map renderer architecture documentation.
  • Fixed documentation deployment through GitHub Pages.
  • Added the live documentation site link to the README.
  • Corrected wire x/y notation to use integers rather than floats.

New Contributor

Thanks to @orbisai0security for their first contribution in #44.

Full changelog: v0.0.1-alpha...v0.0.2-alpha