← Devblog

Akhenaten RA 0.27 — Eight Months of Script, Simulation, and Polish

RA 0.27 is out. Since RA 0.26 in late October 2025 the project has landed roughly two thousand commits — not a single headline feature, but a sustained push toward two goals: make the game behave more like original Pharaoh, and move as much of the engine as possible into JavaScript so modders can change behaviour without recompiling.

This post is the release-notes companion: what changed for players, what changed under the hood, and where the project is headed next.

The Big Theme: Logic Leaves C++

If RA 0.26 was about localization, deferred rendering, and the enemy system, RA 0.27 is the script migration wave. Piece by piece, hardcoded C++ has been replaced with MuJS configs and event handlers. The pattern is always the same: declare data in a [es=...] block, wire behaviour through events, hot-reload with --mixed, ship.

Building info window under a script-defined city overlay

City overlays — all of them

The overlay menu moved to script in May. This release finishes the job: every built-in city overlay — Water, Health, Religion, Crime, Fire, Labor, Education, Entertainment, Food, Tax, and more — is now declared with [es=city_overlay] and registered through the entity-system registry. Tooltip text and column heights route through city.overlay_tooltip and script event handlers instead of per-overlay C++ subclasses.

For modders that means a custom overlay for a new building type is a self-contained .js file, not a new translation unit and a rebuild. See the dedicated write-up: Overlays Become Script-Declared.

Windows players actually open

Scenario selection mission info panel

Build planner and roads

Road construction — path routing, junction sprites, drag preview — moved to road.js. The preview places tiles temporarily on the map to read real corner sprites, so half-drawn roads look correct. Statue placement preview and rotation (R hotkey, per-building allow_rotate) followed the same path. Copy-build-under-cursor (Q by default) also lives in script now.

Green road preview dragged across the city map

Gameplay: Closer to Pharaoh.exe

Script migration is the engineering story; accuracy is the player story. RA 0.27 fixes and restores systems that had been missing, simplified, or wrong.

Combat and military

Economy, resources, and industry

Religion, monuments, and city life

Missions and campaign

UI and Quality of Life

Overlay menu with localized category titles

Scenario Editor and Debug Tools

The in-game scenario editor gained real persistence for points that used to be discarded on save: land and sea invasion points, entry/exit, river entry, earthquake locations, predator herd tiles. Invasion points reset correctly on scenario load. A debug terrain paint brush lets you paint land, water, floodplain, reeds, rocks, ore, dunes, and meadow at runtime — with physics enforced (water depth, moisture regrowth, homeless on demolition). Contributed by @cwshields; see the brush write-up.

Debug panels for missions, buildings, migration, sound, clouds, game features, game time, build planner, and sentiment moved to JavaScript. Console commands for fire, victory, money, collapse, and more can be registered from script.

Platforms and Distribution

German localization files landed (localization_de.js, eventmsg_de.js). The Player Wiki grew substantially — housing, roads, farms, missions, and individual building pages written from live engine data.

Under the Hood: Tests and Stability

A JS-driven integral test framework now boots the real game under --integraltests, runs each tests/*.js file sequentially, and reports PASS/FAIL in the log. CI surfaces results on GitHub Actions. Current coverage includes main menu, file dialogs, granary info, road placement, pottery workshop placement, work camp info, and victory dialog flow. Tests fail automatically if the log contains a MuJS TypeError — catching script regressions before they reach players.

Dozens of on_place_checks fixes chain building overrides back to the base implementation so placement warnings (weaver flax source, shrine road access, water supply, workshops, and more) fire correctly. Routing improvements keep citizens off shorelines under roads and boats off corner tiles.

Modding Quick Reference

Download

RA 0.27 (version 0.2.7) is available from GitHub Releases and itch.io. Saves from RA 0.26 should load; report issues on GitHub or Discord.

Thank you to everyone who filed bugs, sent PRs, and playtested nightly builds — especially @cwshields, Chase Shields, MacThings, IvanAnis777, and the rest of the contributors who shaped this release.

← ECS, DynVMT, Logical Threads, and Pharaoh Statue Preview and Rotation Move to Script →