Repository navigation
Releases: fenio/zod
Release list
v0.5.2
Patch release adding desktop camera controls, Linux packaging, and refreshed build dependencies.
Added
- Right-drag camera panning — hold and drag the right mouse button to pan the map on Windows, macOS, and Linux. Ordinary right-click orders/cancellation still work when the pointer stays within the click threshold.
- Linux x86_64 AppImage — releases now include a portable AppImage built against a glibc 2.35 baseline and smoke-tested before upload.
Improved
- Right-drag safely handles HUD/menu starts, window focus loss, map-edge scrolling, and both Classic and Modern mouse modes.
- Android now builds against SDL 3.4.12, AGP 9.3, API 37, and NDK 29 with a pinned Gradle distribution checksum.
- GitHub Actions, CodeQL, and artifact actions were updated to current major versions.
- The build now enforces SDL3_mixer 3.2.4 or newer.
v0.5.1
Patch release: campaign & singleplayer polish, multiplayer fixes, and two latent crashes removed.
Fixed
- Hang after the match summary — the game now returns to the menu instead of hanging when a match ends (#244). This hang could also leave a zombie process holding port 2137, which made the next launch start with empty menus (no maps in Play Campaign).
- Empty menus when the port is taken (#254) — the server no longer retries a failed port bind silently forever: it logs the reason to
zod_diag.log(with a hint to kill the stale process or useZOD_PORT), and the client shows a "game server not responding" warning instead of blank lists. - Units no longer start stacked in a pile (#181) — the world runs for a moment after a map loads so squads walk into their standard formation, then the start screen comes up, like in the original game. Singleplayer only.
- Multiplayer: two joiners can no longer end up on the same fort team, and game-speed no longer leaks from one match into the next (#249, #250); players can't bot-ify a human or disable campaign enemies (#242, #245); orchestrator "started" status parse fix.
- Two latent crashes found while cleaning up all 43 compiler warnings (#203): dead
string::nposchecks in the player-command parser (out-of-rangesubstron an all-spaces token) and diagnostics printing a size through%s.
Added
- Player name — editable in Options, persisted, defaults to your OS login (#246).
Internal
v0.5.0
Zod's first playable online multiplayer. This is the milestone v0.5.0 is named for: a dedicated server, a match browser, a ready-up lobby, matchmaking, and N-player maps with bots filling the empty seats. Point your client at the public server and play — no setup.
Multiplayer (new)
- Play online out of the box — Multiplayer connects to the public server (
z.0f.ee) by default. Pick a match, join, and play. - Match browser + create — see open matches with their map and player count (
N/cap), Join one, or Create your own. - Map picker with player counts — every map is labelled with how many players it holds; filter the create list to just the size you want (e.g. 4-player maps).
- Waiting-room lobby + ready-up — joining drops you into a lobby; the match starts when everyone clicks I'm Ready, not on a fixed timer.
- "Play with someone" matchmaking — one click drops you into a shared open match and waits for an opponent.
- Countdown → fill with bots — on a bigger map than the humans present, once everyone's ready a ~30s countdown runs; if no one else joins, bots fill the empty forts and the game starts.
- Practice vs Bots — start solo against bots for testing or warm-up.
- Dedicated server image — a slim (~67MB) multi-arch (amd64 + arm64) Docker image on GHCR (
ghcr.io/fenio/zod-server) runs a process-per-match orchestrator, so anyone can self-host.
Online multiplayer is brand new — expect rough edges, and please report what breaks. The 2-human ready-up and countdown paths especially need real-world testing.
Gameplay & rendering
- Wrecks render underneath — exploded vehicle wrecks draw as a ground-debris under-layer instead of painting over the units and buildings on top of them (#206).
- Forts hit on the facing side — buildings are attacked on the side facing the shooter rather than dead centre (#208).
- Eject in classic mode — eject from a cannon/vehicle via left click when classic mouse mode is on (#106).
- Smarter enter orders — ordering a unit into a building/transport routes to a reachable approach tile instead of the exact (sometimes unreachable) tile; unreachable orders are logged (#220).
UI
- Loading progress on the splash — a progress bar + percent while the game loads its assets (#72).
- Menu scaling refinements — building/factory overlays scale with the menus (1.5x vs the 2x menus); the glitchy 3x option is gone and the scale env is now
ZOD_MENU_SCALE(#207).
Android
- Easier touch commanding — wider touch slack when commanding flags/objects, not just selecting units (#205).
Windows and Android (arm64) builds attach automatically once their CI jobs finish. The dedicated-server Docker image (ghcr.io/fenio/zod-server) is built for this tag too.
v0.4.11
A patch release rolling up the gameplay, UI, Android, and multiplayer-prep work since v0.4.10.
Gameplay
- Fort attackable from all sides — the enemy fort can now be shot across its whole footprint, including from the back, instead of only the central area. No more being forced through the front cannon (#194).
- Wrecks render underneath — exploded vehicle wrecks now draw on the lowest layer, so they no longer paint over the units and buildings on top of them (#195).
UI / Menus
- Bigger menus by default — menus and the resume/pause bar now render at 2x by default (friendlier on high-res displays and touch), auto-capped so nothing clips. New Options → Menu Size setting to pick 1x–3x (#196).
Android / Touch
- Easier unit selection — wider tap hit-box so units are simpler to select with a finger (#196).
- Smoother pinch-zoom — zoom is capped to a ~10% step per gesture, so a pinch no longer jumps the whole way in/out (#197).
Multiplayer (groundwork)
- No more frozen client on disconnect — losing the connection to the game server now returns you to the main menu instead of freezing on the last frame, so you can reconnect or pick another game. Internal runtime reconnect seam added as prep for an in-game join flow (#204).
Windows and Android (arm64) builds attach automatically once their CI jobs finish.
v0.4.10
What's Changed
- Production: a queued unit becomes the new default (sticks instead of reverting) by @fenio in #176
- Host: default port 2137 + print LAN join command by @fenio in #177
- Android: persist campaign progress (#178) by @fenio in #179
- In-game screenshot key: Shift+\ saves a PNG by @fenio in #186
- Squad cohesion: minions trail the leader (column movement) by @fenio in #185
- Pathfinding: grenade-carriers blast through obstacles more readily by @fenio in #184
- Summary screen: wait for all explosions to finish, then +3s (#180) by @fenio in #187
- Cranes only on maps with bridges (#183) by @fenio in #188
- Grunt: fire rate 0.5s -> 0.2s (#182) by @fenio in #189
- Summary screen: post-explosion buffer 3s -> 1s (#180) by @fenio in #190
- Squad-shared grenades + revert rock blast cost to 8 by @fenio in #191
- Combat: snipe-damage multiplier so drivers can be shot out of vehicles (#182 follow-up) by @fenio in #192
- Eject loop: don't auto-recapture cannons + correct minion health (#162) by @fenio in #193
Full Changelog: v0.4.9...v0.4.10
v0.4.9
Patch release. Highlights since v0.4.8:
Pathfinding & movement
- Fix A* route corruption — an open-list index bug (
RemovePoint) produced broken, jumping routes that cut straight across water; units now path correctly. Added A* path-validity regression tests (run underctest). - Vehicles ordered onto a bridge now route onto it instead of beelining over the river (or refusing).
- Cranes can repair destroyed bridges again (regression from the destroyed-target fix).
- Units only dodge incoming fire when idle — ordered units hold their move/attack instead of fleeing, so you can actually drive into the enemy fort.
AI
- AI cranes only rush the enemy fort on Expert; on Easy/Normal they just repair bridges, Hard adds flag captures.
Campaign & menus
- Campaign progression fix — winning a level now correctly unlocks the next one.
- Locked campaign maps are greyed out in the picker.
- Adjustable max units per team (Options).
UI, cursor & diagnostics
- Grab cursor now shows over a contested (captured) flag so you can order the capture.
\/F12 dump now captures cursor/interface context and the unit under the cursor (no selection needed) — point at a misbehaving unit and dump it.
Platform
- Android: immersive fullscreen — the system bars no longer cut off the game.
- macOS: Dock icon now has a transparent background (was a black square).
- Networking: singleplayer binds to localhost only (no exposed network port); host a LAN game with
-Lor run a dedicated server with-d. - The reported build version now tracks releases instead of the original 2011 engine date.
Zod Engine v0.4.8
Gameplay & AI
- Bot difficulty levels — Easy / Normal / Hard / Expert, in the CLI and the menus (#135)
- Units no longer teleport across water — fixed client-side dead-reckoning so a unit can't be drawn flying across impassable terrain and snapping back (#134)
- Units don't break off a command to shoot a passive crane — the order takes priority (#132)
- Can't target destroyed bridges/buildings — rubble is no longer a valid attack target (#133)
- Spin-in-place watchdog + move-order diagnostics — units that get stuck spinning, and ignored orders, now self-report to
zod_diag.logwith full context
Controls & UX
- WASD camera pan + mouse 4/5 drag-pan like the middle button (#138)
- Mouse wheel adjusts Volume / Game Speed in the Options menu (#101)
- Return to the main menu after a generated map instead of jumping to your last campaign map (#136)
- Menu-first and the AI opponent now survive display/sound flags —
-r/-w/-s/-uno longer drop you straight into a no-opponent campaign
Display
Zod Engine v0.4.7
Zod Engine v0.4.7
New
- Menu-first start (#79). The game now opens on a proper menu over the banner art — Play Campaign, Generate Map, Multiplayer, Options — instead of dropping straight into a map. Play Campaign leads its own section; the start menu hides in-game-only admin entries.
- Post-match summary polish (#120). The win/loss summary now waits for the fort's explosion to finish, then you dismiss it with a click or Enter to continue (instead of an auto-timer).
Gameplay fixes
- Dropped orders fixed (#102). Move/attack orders were silently ignored "every second time" when clicking fast — a box-select was wiping your selection mid-click before the order could fire. Big one.
- Android: pinch-zoom no longer freezes for several seconds (#111).
- Fewer birds at high resolution (#98) — the count now scales to the viewport, so a wide screen no longer shows a flock.
Quality of life
- Pause toggle: press Z (P is the player list).
- macOS Dock icon — the red Zod bot, instead of the generic "exec" icon.
Diagnostics (for bug reports)
- F12 now dumps the full scene — map, every object's tile/owner/health, zones, census — so a
zod_diag.logis self-sufficient without selecting the right unit first (#122). - The diagnostic log appends instead of truncating, so restarting the game no longer wipes a capture you just made (#130).
Windows (x86_64 + arm64) and Android (arm64) builds are attached below once CI finishes.
Zod Engine v0.4.6
Zod Engine v0.4.6
Campaign mode
- Single-player campaign is playable again. A regression from the campaign team-lock left the human unable to claim their team at launch, so the bot played alone on an empty seat. Your team is now assigned correctly. (#118)
- Campaign maps stay locked until you win the ones before them; locked maps are marked in the menu and can't be picked. (#77)
- The main-menu entry is now "Play Campaign" (was "Select Map"). (#77)
- Team switching is disabled mid-campaign, so you can't jump to the winning side to fake a victory. (#59)
New — post-match summary screen
- When a match ends you get a full-screen win/loss summary with artwork and the battle stats: duration, units killed, units lost. (#88)
Android
- The app now has a proper launcher icon (the red bot face) instead of the system default. (#86)
- Runs fullscreen / frameless. (#85)
Windows
- arm64 build. (#95)
Fixes & polish
- Selection is fully frozen before the round starts — no more drag-box selecting units on the "Click to Start" screen. (#107)
- The F12 diagnostics dump is now a self-contained repro: it records the map name, the unit's A* route, and enough to reproduce generated maps. (#93)
Windows and Android (arm64, debug-signed) builds are attached below once CI finishes.
v0.4.5
A big batch of gameplay polish, AI/pathfinding fixes, and — new this release — diagnostics that make bug reports actually actionable.
Start screen & UI
- The game now starts truly frozen. Until you click "Start / Resume", no orders, no production or build-queue changes, no cannon placement or driver eject — not even a unit's voice. No more accidental commands (or phantom audio) before kickoff. (#76, #91)
- Camera centers on your own fort at game start, regardless of resolution — it used to land off-screen on wide displays. (#74)
- Menu list scrollbars are draggable / click-to-jump — reach map 35 in one drag instead of 35 clicks on the arrow. (#78)
- Options remember game speed and volume between sessions, and the mouse wheel raises/lowers them. (#73)
- Starting squads spawn spaced out instead of stacked at the fort door.
AI & pathfinding
- A robot that peels off to grab a flag/vehicle now rejoins its group, so you keep control of the whole group instead of being left steering only the leader.
- Units stop chasing attackers they can't reach (e.g. across water) and hold position instead of shuffling at the shoreline forever. (#71)
- Grab polish: no phantom re-grab of a vehicle already being boarded, and a peeling unit no longer twitches the wrong way first.
Fixes
- Lost commands fixed — the click-vs-drag threshold went from 1px to 5px, so an ordinary click reliably registers as an order. (#39)
- The move/capture destination marker no longer double-draws. (#38)
Diagnostics (for bug reports)
zod_diag.lognow auto-captures suspicious events as they happen: a move order to an unreachable spot, a unit stuck with no progress, being attacked by an unreachable unit, or a match that can't end.- The F12 / \ unit dump is richer (owner, can-move, crewed vs. driverless, per-team census). If something misbehaves, select it, press F12, and attach
zod_diag.logto an issue.
The Windows zip and Android APK are attached below.