0 A.D. Alpha 23: Ken Wood

Go to the changelog overview, if you are looking for a different release.
Check the history overview to only read updates of this site.

Development started by Wildfire Games on July 29th 2017 (r19923).
Feature Freeze 1: March 12th 2018 (r21530)
String Freeze: April 23th 2018 (r21761)
Translation Freeze: April 29th 2018 (r21803)
Commit Freeze:
Release: May 17th 2018 (r21819)

Release Announcement: https://play0ad.com/new-release-0-a-d-alpha-23-ken-wood/[[BR]] Tickets: https://trac.wildfiregames.com/query?status=closed&group=resolution&milestone=Alpha+23

An overview of all tickets handled is found at the respective milestone on trac.
To download and install the developmental release of 0 A.D., have a look at the build instructions.

The following list presents all changes noticeable to the end user up to r20742, more important ones first.
Many small bugfixes, typo fixes and code cleanups are not mentioned here.


r20025 Actually make the AI aware of aura and tech modifications of templates
r20031 Stop Sandbox difficulty Petra from expanding
r20039 Improve support for more than 3 phases.
r20052 Support more obstruction shapes (eg arches).
r20063 Fix building of first CC (which is also used if all CCs were destroyed when rebuilding).
r20065 Let Petra build wonders to increase the pop-cap, even if not in Wonder victory mode.
r20072 Improve the behavior of currently capturing units when these are attacked
r20084 Remove the obsolete tutorial AI
r20107 Some protection against missing templates
r20108 Look for naval treasures
r20162 Template loading from the AI (#4611)
r20175 Account for diminishing returns of fields
r20209 Stop trying to defend some structures in unconnected territory where there is no chance to defend them.
r20253 Try to make a better use of ranged siege units
r20260 Rework the management of siege units in attacks, to remove some civ hardcodings + some cleanup
r20269 Tune the proportion of support worker
r20291 Tune requirements when building defenses
r20319 Allow gatherers to switch to a nearer resource when slots become available
r20320 Unify trade gain computation between simulation and ai
r20389 Allows stables and siege workshops build orders for all civs.
r20399 Allow elephant stables for all civs.
r20409 Revisit the management of constructions for better performances and cleaner implementation.
r20455 Look for initial treasures at start game, sometimes needed on nomad maps to build the first cc.
r20479 A few tunings and add a protection in tradeRoute serialization in case a market was destroyed in the last few turns between AI running and serialization.
r20480 Allow the ai to run without loading all templates at startup.
r20509 AIManager: loads only the used templates when starting (or deserializing) a game.
r20510 Decrease the number of trained siege units in easier difficulty levels.
r20511 Improve the way to detect that an ally is attacked.
r20521 Units should only be able to build structures from their owner's civ, and not from their identity civ.
r20577 Allow fast-forwarding of matches with only AI players.
r20603 Add a {native} civ replacement in buildable and trainable template names.
r20658 Check not only the generic resource type but also the specific one when assigning a gatherer (useful for some mods)
r20671 Choose AI behavior in gamesetup



r19948 Give Spartan elite spearmen heads. (#4686)
r19964 Give Scythian archers capture animations (#4711)
r20020 Fix 6x6 and 8x8 foundation actors.
r20273 Spartan buildings part 1
r20298 Spartan buildings part 2
r20312, r20313, r20315 Spartan buildings part 3 + Iberian archery range
r20325 Persian range and Iberian stables.
r20339 Iberian workshop, siege workshop, stables; Persian elephant stables, workshop, ballista tower; Seulicid archery range, stables, workshop
r20342 Seleucid elephant stable and Carthaginian regular stable.
r20374 New unit selection textures for the healer and mods/future usage.
r20414 New Brittonic stable.
r20418 New Brittonic range.
r20425 New Brittonic storehouse.
r20427 Carthaginian range, workshop, elephant stable, Mauryan stable, Babylonian defense tower.
r20443 New Brittonic workshop. Add new textures for Pureon's onager
r20446 New ram for Mauryans.
r20458 New bows and arrows for every civ.
r20482 Add new textures for onager.
r20483 New siege fire animations for units.
r20488 New tools.
r20489 Remove files which would break copyright. Add the links and the license to the other files and name the authors.
r20492 Mauryan range and workshop.
r20508 New Gaul stable.
r20569 Allow models using alpha-blending (transparent models) to be silhouette casters.
r20615 Adds the basic actor/material validator.
r20631 Support the female citizen idle-carry animation.
r20651 Add Alexandermb's crocodile swim animation. (Unused for now) It will be used when when implement amphibious units.
r20663 New Zebu anims and armature.
r20666 New rabbit.
r20676 Let the template define the actor used for the projectile. Also let projectiles have an impact animation (such as an explosion). This will enable us in the future to have technologies that change projectiles. (#1909)
r20689 New boeotian helmet for gastaphretes.
r20690 Add gastaphretes.
r20710 New seleucid chariot, using the new horses.
r20715 Add new horses and update the actors accordingly.
r20724 Add two dogs as fauna, in case people want to use them for scenarios.
r20727 Update the rnc file and compile it with trang to allow variant inheritance. This already worked, without the game even complaining, but the validator.pl would complained (as it should have).
r20728 New pilos helmet and textures.
r20741 New chalcidean helmet and textures.


r20345 Display fruit tree as fruit and not as wood on the minimap. Rework a bit inheritance of fruit tree and of wood bushes. The noticeable change is that fruit tree block movement as other trees.
r20471 This fixes the defeat when only promoted/upgrades/regi-hero units remain. Add foundations to the conquest lists and make them visible on the minimap.


r20299 Ranged auras not enabled (because of a tech requirement for example) should not be visualized
r20300 No need to create aura's rangequery when the aura is not applied
r20461 Workshop repair aura
r20462 Allow loot to be modified by technologies and auras


r20021 Help menu pointing to the manual and helping with reporting bugs
r20058 Add scrollbars to all tabs. Should make Atlas more usable on small resolutions.
r20327 Cleanup horizontal alignment flags being ignored, fix warnings on a start. (#3824)


r20236, r20211 Projectile impact sounds even if the firing unit died meanwhile. New siege impact sounds. (#4779)
r20367 Allow attack and attack_impact sounds for multiple attacks Add "melee", "ranged" etc. to the template tag name, Allow and use specific sounds for slaughter, Rearrange the templates a bit, and so add missing sounds.


r19956 Change CtR default to 2
r19967 Unsuccessfully bribed people get to keep your money (#4623)
r20210 Healers, fishing boats, and merchant ships are no longer conquest critical
r20248 Domesticated animals are no longer visible in FoW
r20314 Revert a naked fanatic armor nerf done in r19697. It has now the same armor as other champions but doesn't have the armor bonus of spearmen.
r20334 Tweak a bit Scipio's aura radius.
r20363 Tweak a bit citizen cavalry costs. Follow the same infantry vs cavalry policy as for champs and heroes. Motivations are: infantry vs cavalry consistency (from the abstract unit role point of view), preventing some unbalances, enforcing a more realistic infantry vs cavalry ratio in the game.

Game Mechanics

r19950 Damage upon death/destruction (#1910)
r19969 Linear splash damage now uses the correct vector
r20007 Calculate spread from the aimed at a position instead of the current target position
r20015 Make civ and classes bonuses work for splash damage
r20079 Allow BuildRestrictions Min and Max distance to be modified by techs and auras (see TechModifications)
r20122 Allow different victory durations for CtR and Wonder victory modes.
r20156 You can only win once
r20193 Mark exhausted resources as not available, improves gatherer behavior in cases where a resource is depleted
r20204 Delayed damage (currently used by the fire raiser (#1911)
r20223 Less random walks for animals.
r20441 Introduce a new hotkey to order only one unit from the current selection. (Alt + Right Click)
r20497 Let units face away from the building they were trained or ungarrisoned from.
r20498 Allow walls to have rally-points.
r20542 Wild domestic animals should stay visible in FOW.
r20551 Allow civ specific techs with {civ}.
r20578 Idle unit hotkey. (BackSlash?)
r20594 Add a move modifier hotkey. ()
r20608 Attack Range Visualization. (#3915)(Alt+C)
r20620 Make houses conquestcritical, since the can train female.
r20642 Hotkey to select wounded units. (O)
r20686 Allows Healers to be ejectedOnDestroy from ships.
r20687 Add support for diplomacy changes for wonder victory.
r20725 Add a hotkey to toggle tutorial panel. (Ctrl+P)
r20736 Non-military unit selection filter. (Alt+Y)


r19955 Victory and defeat reasons (#4382)
r19957 Rally point lines now in player color (#4618)
r19965 Update the color of the selection ring, rallypoints and territory outline when the playercolor is changed in Atlas (#4643)
r19966 Build time tooltip now with more correct values
r19970 Resource total now on the left in the summary screen
r19980 Allow users to interact with the GUI while cinematics are playing
r19987 Fix the attack cursor for entities in the FoW
r20005 Support XMPP MotD
r20006 Make the sorting arrows in tables point in the correct direction
r20050 Display all relics and heroes for observers (where all means less than 19 in total)
r20070 Display old chat messages in the lobby when returning from a game
r20071 Visual move order indicator (#4732)
r20073 Display the move order indicator to observers when following a player
r20075 Implement readonly Input GUI objects, allows users to copy paths in the replay menu
r20081 Focus on deleted entities in observer mode if following a player
r20097 Display the move order indicator in the SoD
r20101 Use tabs for the options page
r20195 Make the text in the mod selection screen readable.
r20224 Align session dialogs
r20250 Fix the repair hotkey
r20254 Equal siege status bar sizes
r20271 Add spies to the summary screen (#4498)
r20289 Only close the diplomacy window on successful bribe
r20305 Enlarge default sidebar size, so everything is visible by default
r20333 Make the biome setting visible for mp clients.
r20524 Enlarge dropdown size for the ingame gamespeed dropdown, so the scrollbar is hidden for replays.
r20529 Gamesetup panel should indicate the AI level without having to open the AI-config panel.
r20535 Include entire directories in GUI pages instead of a subset of the files contained, where possible. This allows mods to add new JS files without introducing a hardly maintainable copy of the XML file.
r20543 Count Trained Cattle as a resource and not as a unit. Also only count the net amount of gathered/used food for cattle.
r20550 Enable and disable mods more comfortably using the doubleclick event, filter mods while typing.(#3574)
r20566 Add AI difficulty in options(#4876)
r20584 Option to disable fog effects. (#4626)
r20585 Add gui tag color setter function so that we don't have to read and ensure the color syntax each time.
r20599 Add buttons to visit the website of the selected mod. (#4890)
r20644 Implement hotkeys and mousescroll to change tabs in tabbed pages (credits, summary and options). Save the latest page and graph in the summary screen Implement a hotkey to open and close the summary screen for the replaymenu and ingame.
r20646 AI behavior gamesetup setting.
r20697 Add helper function to apply arbitrary GUI tags (such as font and color).
r20705 Display AI behavior, difficulty and name in the tooltip in the diplomacy and summary screen.

GUI scalability

r19928 Take gui.scale into account when repositioning tooltips.


r20733 Allow cheats to pass negative numeric arguments and default parameters for cheat arguments that are strings.
r20734 Add cheat code to play arbitrary music playlists, by default the 8-bit retro easteregg track from rP19890.(#4677)


Random Maps

r19974 Danubius: More gates for the fortress
r19972 Danubius: Stop spawning attackers on wiped outsides (#4715)
r20123 Polar Sea: Speed up target finding for Gaia wolves
r19935 Latium: More than two metal mines
r20264 River Archipelago, Corinthian Isthmus: Remove unneeded waterheight init loop (with awkward 1 tile sized bump) that is redundant with the SmoothElevationPainter??
r20290 Cycladic Archipelago, Lion's Den: Fix collisions of random forests and mines with starting resources(#4600)
r20316 Corinthian Isthmus: Fix collisions of random resources and starting base resources(#4600)
r20362 Delete _kali's Alpha 21 maps since it is not certain that they are not derived works(#4226, #4816)
r20391 Adapt trade gain normalization to map size (increased on small maps and decreased on large maps), and slow down the increase of the gain at very large distances.
r20626 Update random maps that use rmgen wall-placement.
r20659 Provide a TriggerHelper?? function to spawn garrisoned entities.

Biome library

r20115, r20117, r20118 Allow selecting biomes for random maps
r20127 Move the random biome code to a new library
r20129 Move biome definitions to JS and JSON files to allow mods to add new ones easily
r20131 Remove hardcodings to allow mods to remove biomes.
r20139 Biome descriptions

Map Generation Library

r19929 !Fix SimpleGroup? and RandomGroup placement retries (#4294)
r20265 Deepfreeze the map settings object (created from g_GameAttributes.settings by the gamesetup extending the map JSON data) to prevent random map scripts from unintentionally modifying that.(#4257)
r20268 Add a TerritoryDecayManager?? component to update territoryMap with the blinking state when territories are recomputed.
r20272 Add non-static clone functions for vectors
r20276 Cache a list of TerritoryDecay?? components in the TerritoryDecayManager??
r20283 Fix rmgen2 SimpleObject?? and RandomObject?? ignoring the 3 invalid map border tiles. Let validT take the responsibility to account for the actually valid region of map tiles instead of each caller.(#4814)
r20328 Add Math.square to compute the square of a number without the need to repeat the term, without using the slower Math.pow. Start unifying the euclidian distance functions instead of adding yet another helper function to the random map script library after this diff.
r20331 Remove rmgen euclidian distance helper function, Use Math.square(x) instead of Math.pow(x, 2) in places that don't multiply it with Math.PI.
r20332 Add diskArea rmgen helper function and use it instead of Math.PI * Math.pow(radius, 2). Use getMapArea instead of mapSize*mapSize.
r20360 Rename placer.js to placer_centered.js and pathplacer.js to placer_noncentered.js(#4804, #4831)
r20368 Remove min/max mapsize constants from the rmgen library.(#4034)
r20370 Construct the final object containing the random map data in ExportMap?? passed to the engine in place instead of scattering that in multiple functions of multiple files. Remove camera centering in that function because it contradicts the modifiability of the camera global (besides being broken and only coming into play if there are no player entities).
r20383 Extend the cubicInterpolation function to consume a tension argument allowing to modulate the smoothness of the interpolation.(#892, #4218)
r20396 Use only one coordinate system for locations in the rmgen system.(#4034)
r20525 Rename RMS to Engine.

Tutorial Maps

r20084, r20085, r20086 Convert the Introductory Tutorial to a tutorial map
r19998 Fix tuturial being stuck (#4696, #4697)


r20001 Shadow map quality option (#4351, #743)
r20378 Adds a wireframe mode to the water rendering.
r20583 Reload water shaders too when changing shader settings.
r20622 Render the range visualization of auras, heal and attack component in a separate RangeOverlayRenderer?? component instead of abusing Selectable for that. This also allows non-selectable entities like building previews to cast range visualizations.

Preparation for Isometric view

r20377 Adds a perspective matrix, refracts a matrix projection setup to prepare for an isometric view.


r20321 Add id for IQ stanzas
r20341 The server should choose the guid
r20557 Don't display a timestamp when an invalid command is sent


r19951 (and a few more later) Allow the AI to load custom templates (follow-up to #2951)
r19952 Allow using {civ} in builder lists when some civs don't have those templates without errors
r20035 Fix an assertion failure when closing the game in the map loading screen (#4154)
r20067 Add a window icon (#4363)
r20120 Allow specifying the gravity affecting projectiles

This allows for different flight paths (eg mortars, magical projectiles).

To keep the same behavior as previous iterations of the game add <Gravity>9.81</Gravity> to the <Attack> tags of your templates.

r20141 Add -unique-logs parameter to make debugging of OOS issues locally easier
r20181 Move placeable templates out of special/.

Specifically special/territory_pull is now other/territory_pull, and special/trigger_point_[A-K] are trigger/trigger_point_[A-K], update your map xml files and trigger scripts accordingly.

This is part of a change from a placeable filter approach (where one has to explicitly list all folders/templates that can be placed in the atlas) to an unplaceable filter approach. This should make it easier for modders to use a different folder structure than the public mod, and have it work without any changes. We assume that adding unplaceable templates happens less often and that modders will notice if they can suddenly place something they added that shouldn't be placeable.

r20196 Add FloatDepth? property to Position.

This allows to have amphibious units that swim at a certain depth.

To keep the current behavior add <FloatDepth>0.0</FloatDepth> to all <Position> tags of your templates (probably as high up in the inheritance hierarchy as possible).

r20203 Move damage types definition to a helper similar to how resources are handled.

This should make it somewhat easier to add new damage types. (See #4801 for more improvements.)

r20204 Delayed damage. Can be used for grenades or similar. (#1911)

To keep the current behaviour for ranged attacks add <Delay>0</Delay> to the <Ranged> tag of your <Attack> tags.

r20215 Remove special_units/ by using inheritance.
r20241 Move formation templates from formations/ to special/formations.

Part of the placeable/unplaceable restructuring.

Make the same moves for your mods, also update all templates specifying formations (<Formations> tag within <Identity> tags).

Update your civ.json files. Prefix special/ for all entries in the "Formations" property array.

r20242 Move special_filter/ templates to special/filter/.

Move any filters you have in your mod to the new folder.

r20244, r20252 Make rubble non-decaying by default.

If your mod specifies rubble in <SpawnEntityOnDeath> (within <Health>), or elsewhere you should prefix those occurrences with decay|. Specify different decay settings in the individual rubble templates, the decay| filter just activates the decay.

See the commit for a *nix one-liner to make this change for you. (As always check the end result, and use a version control system.)

r20246 Switch back to an unplaceable filter for templates.

This makes rubble/ placeable.

The only unplaceable templates from now on start with template_ or special/. All other templates now show up in Atlas, and in code queries for all templates.

Allows using different template organization schemes (subfolders, different folders, etc).

r20249 Command line options can now start with - or --.
r20589 Amend wallpiece lengths. (#2944)
r20575 Deprecate type property of mods. Such a property should be well defined, but currently, it contains arbitrary text and is redundant with the description. (#4890)
r20614 Support translation of mod labels and description.
r20625 Remove civ-specific hardcoding in rmgen wall-placement script. (#2944)
r20729 Delete Savegame format version, refs rP10454. It is unneeded because we won't add backwards compatibility for previous formats and because the engine version check from rP16906 is sufficient and more accurate in testing compatibility of savegames of different releases. The simpler code allows unifying the savegame version check with the check used by the replay menu (to be used in multiplayer gamesetups).

Performance Optimizations

r20256 Fix lag from moving to the edge of the map
r20438 Fix lag from sinking ships (#4713)
r19936 Stop copying the territory grid when recomputing the texture.
r20311 Some performance optimizations.
r20438 Use the rangeManager's subdivisions in the obstruction manager shape tests Completes an existing TODO. This is a large speedup in some cases for those test functions, particularly the "sunken ship lag" issue.(#4713)
r20571 Change gathering rally points to use gather instead of gather-near-position when possible.
r20630 Improve Hierarchical Pathfinder Update, somewhat substantially on larger map sizes
r20634 Long range pathfinder cleanup Remove ACCEPT_DIAGONAL_GAPS as it was unused and will not be used in the future. Use PASSABLE macro everywhere. Simplify considerable OnTheWay?? as MakeGoalReachable?? returns a point goal. This doubles as a very slight optimisation, on the order of microseconds per call.

Libraries Updates

r20340 Update the bundled gloox wrapper for Windows.
r20407 Update Boost to 1.65.1 and provide static libs (built with XP toolset) for upcoming VS 2015 support.(#3004)

Building scripts and linting

r20364 Linting with Coala. This new script and the associated configuration files lint our source code (JS and C++). This will be extended in the future.(#4833 )
r20365 Add our script for building patches with Jenkins to version control.(#4419)
r20366 Alpha 12 version of Premake 5, including prebuilt binary for Windows.(#3729)
r20381 Migrate to premake5, Make pyrogenesis and tests depend on Collada, This commit includes custom modules for CxxTest?? and pkg-config support that can be improved upon in the future. It also includes all necessary changes to the build scripts, but the new premake5 features are not fully exploited yet. With this change, premake5 becomes the default, but CI scripts on Unix will continue using premake4 for a while, in order to avoid regressions.(#3729, #404 )
r20561 Use default Unicode encoding in source code on Windows.
r20562 Support Visual Studio 2015 (MSVC 14.0), VS 2013 stays the default Windows compiler, but support for it will be dropped as soon as possible.(#3439)
r20563 Go back to the legacy syntax for detecting premake actions.

Last modified 4 weeks ago Last modified on May 27, 2018, 7:25:21 PM