Game version XYZW (1st of Month, Year)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Viverra suspendisse potenti nullam ac. Gravida dictum fusce ut placerat orci nulla. Amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar. Eget nullam non nisi est sit amet. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant. Netus et malesuada fames ac turpis egestas maecenas. Enim tortor at auctor urna nunc id cursus. Turpis egestas sed tempus urna et. Pellentesque id nibh tortor id aliquet lectus proin nibh. Amet mattis vulputate enim nulla. Eu turpis egestas pretium aenean pharetra. Facilisi cras fermentum odio eu feugiat pretium nibh ipsum consequat. Facilisi nullam vehicula ipsum a arcu cursus vitae congue.

With kind regards,

ABC

Balance

  • (#6414) Adjust the Cooper’s stats to compensate for previous changes to its hitbox, which allowed torpedoes to hit it more reliably. This also serves an additional buff to the Cooper, as it was one of the primary reasons UEF navy underperformed. UEF naval gameplay now relies less on building as few Coopers as you can get away with, and overbuilding them is less punishing.

    • Cooper: T2 Torpedo Boat (XES0102):

      • Angler Torpedo
        • RateOfFire (DPS): 10/33 (97) –> 10/32 (100)
      • Economy
        • BuildCostEnergy: 6480 –> 6000
        • BuildCostMass: 810 –> 750
        • BuildTime: 3240 –> 3000

          Building Coopers is now less punishing, and they can defend themselves more effectively against Destroyers.

      • Intel
        • SonarRadius: 36 –> 72

          Previously, its SonarRadius was smaller than its WaterVisionRadius, rendering this stat pointless. With the increased sonar radius, the Cooper can now spot other naval units more effectively.

      • SizeX: 0.75 –> 0.8
      • SizeY: 0.925 –> 1.0
      • SizeZ: 2.0 –> 2.2
      • UniformScale: 0.65 –> 0.7
      • LifeBarOffset: 0.7 –> 0.8
      • LifeBarSize: 0.5 –> 0.7
      • SelectionSizeX: 0.36 –> 0.4
      • SelectionSizeZ: 1.3 –> 1.4

        The unit is made slightly larger to prevent it from becoming too effective against Exodus in the early Tech 2 naval stage.

  • (#6665, #6743) Air staging now detaches aircraft when killed or ctrl-k’d (to work around an engine bug where aircraft get stuck inside air staging).

  • (#6728) Improve Othuum’s ranged capabilities and pathfinding so that it can better compete with higher range units, particularly Harbingers.

    Othuum: T3 Siege Tank (XSL0303):

    • Thau Cannon:
      • Reload time: 4.0 -> 3.4 seconds (DPS 156 -> 184)
      • Range: 28 -> 29
      • Muzzle velocity: 40 -> 36
    • Aire-au Bolters:
      • Damage: 64 -> 57 (DPS 256 -> 228)

    Some DPS is shifted to the long range weapon to help in low unit scenarios such as raids or early T3 fights, in which Othuums were losing without even dealing much damage.

    The range helps larger formations of Othuums be more effective by making it harder for Harbingers to stay out of range of the second line of Othuums in the formation.

    The muzzle velocity is slightly reduced to encourage occassional dodging.

    • Collision Size Z: 2.3 -> 2.0
    • Collision offset Z: 0 -> 0.2

    This reduces how often Othuums in larger formations bump into the rear of the Othuum in front of them, which is especially critical due to the short range of the unit.

  • (#6749) Fix various gunships and the Dragon Fly being unable to hit units that are directly beneath them.

    This bug was particularly significant for the Dragon Fly (Cybran Tech 2 Transport), which caused its EMP weapon to underperform considerably.

    Previously affected units: Jester: T1 Light Gunship (XRA0105) Stinger: T2 Gunship (UEA0203) Specter: T2 Gunship (UAA0203) Restorer: T3 AA Gunship (XAA0305) Soul Ripper: Experimental Gunship (URA0401) Dragon Fly: T2 Air Transport (URA0104)

Features

  • (#6668) Add dependency tracking for blueprints, so that reloading a blueprint file reloads all files that edited that blueprint. This fixes a variety of issues with reloading merge blueprints.

  • (#6669) Add several utilities when modding blueprints with merge blueprints:

    • Setting a field to "__nil" in a merge blueprint removes that field from the resulting blueprint. Previously merge blueprints had no way of removing fields.
    • Add a function and table field to mod weapon blueprints: merging by label or otherwise adding the new weapon blueprint to a specified index.
    • Add a function to add categories to a blueprint, and document the old way of adding/removing categories using merge blueprints.
    • Add the function SetModBlueprintFunction which allows lua scripts to mod blueprints from hot-reloadable files instead of hooking ModBlueprints (which requires a session restart to reload).
  • (#6674) Make it easier to create chunk templates for AIs

Chunk templates is a concept that we’re toying with to see if we can help the AI build better infrastructure. With these changes we make it easier to use and understand.

  • 1) The output (a template) is now copied to the clipboard instead of to the logs.
  • 2) What is happening is now printed to screen via the global print.

  • (#6691) Reduce delay of automatically pausing upgrades after assisting to 1 tick

This was initially 5 ticks. By waiting 5 ticks some resources would be spent on the upgrade. After careful testing the feature appears to work fine when waiting just a single tick. And if we only wait a single tick then no resources are spent on the upgrade.

  • (#6694) Fully implements in-game benchmarking in the profiler for use by developers

Bug fixes

  • (#6608) Fix text in fixed width tooltips (such as some of the tooltips in the mod manager) overflowing when UI scaling is used.

  • (#6609) Fix drones meant to rebuild unbuilt units during unit transfer not being cleaned up when rebuilding fails.

  • (#6646) Remove the chat beeps when watching a replay

  • (#6653) Close a loophole that allowed UI lua to issue attack move orders.

  • (#6654, #6721) Fix order button tooltips not disappearing when the mouse is moved off the order button.

  • (#6660) Fix mass fabs not always using overflowed energy.

  • (#6661) Fix mass fabricators not updating the mass fab panel’s numbers when they are destroyed.

  • (#6663) Fix mod manager not displaying the generic mod icon when a mod’s icon is invalid.

  • (#6664) Fix modded unit icons not being used in the cheat spawn menu.

  • (#6664) Fix errors in log when mousing over templates in the cheat spawn menu.

  • (#6676) Fix the dual yaw controller added in #6428 rotating the unit on the pitch axis.

  • (#6678) Fix being able to bypass unit restrictions in campaign (most commonly through the mex upgrading features).

  • (#6681) Don’t initialize/alter objects during module loading in construction.lua for the draggable queue option.

    Initializing/altering objects during loading of a module is a bad habit, especially if done from another module. In this case it caused an error and a game freeze if a UI mod tried to access construction.lua before the UI was created.

  • (#6682) Fix pre-allocated table declaration causing syntax errors in intellisense.

  • (#6684) Improve the search result list in the console:

    • Results are now listed alphabetically.
    • Clicking on an item doesn’t steal focus from the text input, so up/down arrows can be used to keep moving through the list.
    • The list correctly follows the focus item and wraps around if needed.
  • (#6687) Fix lobby presets.

Lobby presets are not saved and loaded correctly, including selected mods. Related code got moved into it’s own file as a part of cleaning up the lobby code.

  • (#6689) Fix units being dragged in the build queue getting visually stuck when a unit moves directly behind another unit of the same type as a result of the dragging.

  • (#6692) Fix factories not immediately starting to build queued units after the factory finishes upgrading, or when a currently building land or navy unit is cancelled.

  • (#6698) Update hover cursor texture only when changed

  • (#6699) Fix being able to ctrl-k external factories.

  • (#6700) Fix an edge case where mobile build orders issued to a factory and then cancelled would cause the unbuilt unit to not get destroyed and block the factory forever.

  • (#6709) Fix hives being able to build their upgrades as a separate unit.

  • (#6714) Prevent beam weapons from missing the Volcano (Aeon TMD) while it is firing. Also increase its hitbox size to match the firing animation.

  • (#6723) Fix Seraphim T1 transport attempting to load more T3 units than it has slots with the “load into transports” command.

  • (#6729) Fix 2nd formation (hold RMB + left click) for strategic bombers. The formation itself is more wider than default one, so it’s easier to attack a target protected by SAMs and other AoE AAs.

  • (#6731) Fix blueprint loading crash when a unit has nil for its death animation. This fixes DDDX’s “Survival Mayhem&BO balance” mod crashing the game on start.

  • (#6723) Fix Cybran ACU to use correct muzzle bone for enhancement effects.

  • (#6735) Add filter to AI Engineer Manager to stop non engineers being assigned engineer task loop functions. Added filter to stop engineering stations being included in engineer tables of the AI Engineer Manager.
  • (#6608) Fix error in pr 6735
  • (#6742) Fix an error when shields get damaged and they are assisted only by engineers with other commands queued after the assist order.

Graphics

  • (#6683 and #6704) Rework and improve the newly added terrain shaders.

The actual changes are pretty technical, but if you are a mapper you can find an in-depth explanation on how to use the new shaders here: https://wiki.faforever.com/en/Development/Shaders/terrain-shaders

AI

  • (#6635) Enable counterintel by default for units created by AIs. This includes Cybran aircraft stealth, Cybran land scout’s cloak, and UEF strategic bomber’s jamming.

Performance

  • (#6666) Remove duplicated closures in controls.

Other changes

  • (#6587) Improve annotations for unit-specific blueprint fields.

  • (#6618) Add missing localization entries and update Traditional Chinese translations.

    Update Traditional Chinese localization, add non-existing localization tags, and fix broken ones

  • (#6652) Annotate “ping” and “buildanchored” command modes.

  • (#6662) Improve the detail of the error message when weapon turret setup fails.

  • (#6679) Resolve circular dependency of WorldView and CommandMode.

  • (#6680) Annotate code related to the SetWeaponPriorites sim callback.

  • (#6682) Add intellisense support for hooking files that are from the repository.

    The simplest way to use it is to copy the setting "Lua.runtime.plugin": ".vscode/fa-plugin.lua", into your workspace settings and the file fa-plugin.lua into your .vscode folder.

  • (#6703) Update annotation for IsObserver().

  • (#6736) Add a separate staging area for deployments

Through the staging area it becomes more convenient to test experimental changes without the necessity to first merge them into the develop branch. As an example, you can now force push a pull request onto the staging area and then proceed with deploying the staging area.

  • (#6739) Refactor how we want to approach the recently introduced rendering capabilities in the UI

The rendering capabilities were only recently introduced in 2024 through assembly patches by 4z0t. With the introduction of the painting feature we now start using these capabilities. With these changes we hope to solidify the framework a bit before it’s too late to make any significant changes.

  • (#6741) Extract the camera indicator functionality into a separate class

This makes it more convenient to maintain. Other features can now also use this to indicate the location of other events.

  • (#6750) Remove duplicated code that post processes LOD values of props

Contributors

With thanks to the following people who contributed through coding:

With thanks to the following people who contributed through binary patches:

With thanks to the following individuals who contributed through model, texture, and effect changes:

And, last but certainly not least - with thanks to those that took part in constructive discussions: