Game version 3822 (19th of May 2025)
We once again have a game patch that is loaded with exciting improvements thanks to our active developers. The most notable feature of this patch is the introduction of the ability for players and observers to paint directly on the map. The brush strokes are shared with allied players. Observers can view all brush strokes, and only share with other observers. All brush strokes made by players are part of the replay.
A brush stroke is limited in length, but here’s no limit on the number of brush strokes. This is a technical limitation to handle the network traffic better. Players can create complicated shapes by creating multiple brush strokes.
With thanks to 4z0t for both the assembly implementation to be able to draw lines and the concurrent Lua implementation. Without his time and effort it would not be possible, and it wouldn’t be as refined as it is now.
Limitations:
- You can not make a painting when you hold shift.
- You can not make a painting when you have a unit selection.
Controls:
- You can paint by holding the right mouse button.
- You can remove strokes by holding alt and the right mouse button.
- You can mute players by holding ctrl, alt and the right mouse button.
Game options:
- You can enable or disable the feature as a whole. It is enabled by default.
- You can tweak the duration of a brush stroke. The shorter the duration, the quicker it disappears on its own.
With kind regards,
BlackYps
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 as 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. The Cooper is made slightly larger to prevent it from becoming too effective against Exodus in the early Tech 2 naval stage. Its
SonarRadius
was smaller than itsWaterVisionRadius
, rendering this stat pointless, the sonar radius is increased so the Cooper can now spot other naval units more effectively.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
- Intel
- SonarRadius: 36 –> 72
- SizeX: 0.75 –> 0.8
- SizeY: 0.925 –> 1.0
- SizeZ: 2.0 –> 2.2
- UniformScale: 0.065 –> 0.07
- LifeBarOffset: 0.7 –> 0.8
- LifeBarSize: 0.5 –> 0.7
- SelectionSizeX: 0.36 –> 0.4
- SelectionSizeZ: 1.3 –> 1.4
- Angler Torpedo
-
(#6481, #6482) Rebalance cost, damage, reload, and accuracy stats of T3 static artillery to make them more equal against heavily shielded targets.
Costs are now spread evenly across 70-79k mass to fit the varied DPS amounts of different artilleries. Overall they’re more expensive, aside from Cybran. Accuracy and DPS are adjusted so that artilleries have similar performance for their new costs against heavily shielded late-game targets. Damage is adjusted to even out performance against different T3 shields and give UEF some diversity from Seraphim.
Aeon Emissary (UAB2302):
- Mass cost: 73200 -> 79000 (+7.9%)
- Energy cost: 1372500 -> 1481000 (+7.9%)
- Build time: 120000 -> 129500 (+7.9%)
- Firing Randomness: 0.35
- DPS with 4 T3 pgens: 1000
UEF Duke (UEB2302):
- Mass cost: 72000 -> 76000 (+5.6%)
- Energy cost: 1350000 -> 1424000 (+5.5%)
- Build time: 115000 -> 121400 (+5.6%)
- Firing Randomness: 0.525 -> 0.467
- DPS with 4 T3 pgens: 917 -> 980 (+6.9%)
- Damage: 5500 -> 7840
- Base Reload: 10s -> 13.3s
Seraphim Hovatham (XSB2302):
- Mass cost: 70800 -> 73000 (+3.1%)
- Energy cost: 1327500 -> 1369000 (+3.1%)
- Build time: 110000 -> 113400 (+3.1%)
- Firing Randomness: 0.675 -> 0.560
- DPS with 4 T3 pgens: 833 -> 935 (+12.3%)
- Damage: 5000 -> 5800
- Base Reload: 10s -> 10.4s
Cybran Disruptor (URB2302):
- Mass cost: 69600 -> 70000 (+0.6%)
- Energy cost: 1305000 -> 1313000 (+0.6%)
- Build time: 105000 -> 105600 (+0.6%)
- Firing Randomness: 0.75 -> 0.646
- DPS with 4 T3 pgens: 804 -> 844 (+5.0%)
- Damage: 3700 -> 3800
- Base Reload: 7.7s -> 7.5s
- The DPS isn’t increased as much as other artillery due to the large accuracy buff and the large splash.
-
(#6522, #6785) In #5725 the number of child projectiles for the Solace was accidentally increased from 2 to 3 resulting in massively increased total damage. This change is reversed only partially as the Solace was underused with the lower damage. In addition, the damage is now properly split from the main projectile to the child projectile, which comes into play when the main projectile falls on top of an enemy.
Solace: T3 Torpedo Bomber (XAA0306):
- Damage per volley: 6000 -> 5000
- Number of child projectiles per torpedo: 3 -> 2
- Main projectile damage: 400 -> 1000
- Child projectile damage: 400 -> 500
- Damage per volley: 6000 -> 5000
-
(#6623) While the introduction of variable teleport speeds and costs was an overall positive change for the balance of the game, shorter-ranged jumps have become too powerful as a result. The previous minimum teleport time was set at 15 seconds, which was quite short and did not allow much leeway for counterplay. The changes aims to remedy this issue without nerfing the mechanic excessively. The minimum teleport time and minimum energy usage are both increased, alongside the introduction of a new formula for the distance-based variable teleport time and energy usage calculations.
All ACUs, as well as Aeon and Seraphim SACUs
- Personal Teleporter
- TeleportDelay: 15 –> 20
- TeleportFlatEnergyCost: 75000 –> 100000
- Introduce a new formula for teleport time and energy usage.
- Personal Teleporter
-
(#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).
-
(#6690) The UEF T2 navy stage has been rather weak with their destroyer often losing to other destroyers. To address this, the DPS, speed, and turn rate are increased at the cost of HP. The speed and turn rate should allow the destroyer to take better fights, and the increased damage with reduced HP should encourage more proactive usage while also making shield boats more synergistic.
UEF Destroyer “Valiant” (UES0201):
- Max speed/acceleration/braking: 5.0 -> 5.5
- Turn rate: 50 -> 55
- Gauss cannon damage (DPS): 275 (275) -> 305 (305)
- HP: 8000 -> 7200
-
(#6728) Improve Othuum’s ranged capabilities and pathfinding so that it can better compete with higher range units, particularly Harbingers. Some DPS is shifted from the short ranged weapons to the long range weapon. The muzzle velocity is slightly reduced to encourage occasional dodging. To improve pathfinding the Othuums hitbox is made shorter, this reduces how often Othuums in larger formations bump into the rear of the Othuum in front of them.
Othuum: T3 Siege Tank (XSL0303):
- Thau Cannon:
- Reload time: 4.0 -> 3.4 seconds (DPS 156 -> 184)
- Muzzle velocity: 40 -> 36
- Aire-au Bolters (x2):
- Damage: 64 -> 57 (DPS 256 -> 228)
- Collision Size Z: 2.3 -> 2.0
- Collision offset Z: 0 -> 0.2
- Thau Cannon:
-
(#6738) Various adjustments to TMLs and TMDs to improve their functionality and make it less likely that TML will fly over TMD without being shot down.
Tactical Missile Launchers (TMLs)
- The hitboxes of all tactical missiles are increased slightly, to prevent TMDs from missing them by overshooting.
- Seraphim and UEF TMLs fly lower.
- The max speed of the Seraphim TML is reduced because it was too fast compared to other TMLs; for example, it was able to reach its target over 10s faster at longer ranges. Additionally, the terminal speed of the missile as it nears its target is also reduced, so that it serves as a more legitimate balancing factor.
- Nerf the Seraphim ACU TML’s oppressive close range combat potential by reducing its speed.
Tactical Missile Defenses (TMDs)
- Cybran and UEF TMDs no longer run out of beamlength/lifetime, which could previously cause their projectiles to expire before reaching their target. This change should also ensure compatibility with mods that introduce missiles flying at very high altitudes.
- Unify the
MuzzleVelocity
stats of all UEF TMDs. - Remove unnecessary firing tolerance stats, which theoretically could have caused TMDs to miss.
-
(#6744) Cybran navy’s missile deflector TMD has been underperforming. The buff enables it to defend against missile cruisers of other factions. Since deflectors ignore missile HP, they are given less fire rate and range than the gun TMD of UEF and Seraphim.
Cybran cruiser (URS0202) and carrier (URS0303) Missile Deflectors:
- Reload time: 4/2.5 seconds -> 1.9 seconds
- Range: 20/26 -> 44
- Max target height: 8/10 -> infinite
-
(#6745) Reduce the Aeon ACU sensor upgrade’s omni radius to make fire beetles a more viable option against Aeon, and to allow more counterplay for cloaked units in general.
Aeon ACU (UAL0001) Sensor System:
- Omni radius: 80 -> 36
-
(#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)
-
(#6753) Fix various anti-air weapons being unable to engage units that fly right above them. This bug was particularly significant for the Burst Master (Cybran Tech 2 Flak).
Previously affected units:
Archer: T1 Mobile Anti-Air Gun (UEL0104) Sky Slammer: T1 Mobile Anti-Air Gun (URL0104) Cougar: T3 Mobile Rapid-fire AA Cannon (DELK002) Thunderhead Class: T1 Frigate (UES0103) Trident Class: T1 Frigate (URS0103) Air Cleaner: T2 Anti-Air Flak Artillery (UEB2204) Burst Master: T2 Anti-Air Flak Artillery (URB2204) Marr: T2 Anti-Air Flak Artillery (UAB2204) Sinnatha: T2 Anti-Air Flak Artillery (XSB2204)
-
(#6771) Fix the Aeon sniper missing when walking towards/away from the target due to insufficient turret pitch speed to compensate the walk animation.
Sprite Striker: T3 Sniper Bot (XAL0305)
- Turret pitch speed: 30 -> 50
-
(#6790) The tempest can now be retargeted while it is charging without triggering a full 12.5 second reload.
Features
-
(#5971, #6802) Implement options for separate share conditions when a player disconnects and sharing ACUs when a player disconnects. Currently the feature is disabled so that there can be a discussion on how the sharing of ACUs should be implemented and which options for share conditions/ACU sharing should be available. There are discussion posts on the forum and on Discord.
-
(#6667) Add a new ranked victory condition: Decapitation
Unlike Assassination, you do not lose control of your Army when your ACU is destroyed. Instead, you remain in control of your army until all ACUs on your team are destroyed. This makes ACU snipes less impactful: while you lose a strong unit, you still get to keep playing.
With thanks to Sheikah for the original Decapitation mod, and thanks to Phong for suggesting its integration on the forums and on Github.
-
(#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. No resources are spent on the upgrade now.
-
(#6726) Introduce the ability to paint on the map (See above for details).
-
(#6791) Prevent weapons that fire after charging (using
RackSalvoChargeTime
andRackSalvoFiresAfterCharge
) from charging while not aimed, as they would miss if the charging finished before the weapon finished aiming due to a slow turret turn speed.
Graphics
-
(#6683, #6704, #6770) 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
-
(#6751) Split up the ‘Extended Graphics’ option
The option had multiple responsibilities. It is now split up into:
- A new game option to adjust the shadow resolution. This allows you to have crispier shadows.
- Extending the level of detail with an ‘Extreme’ setting. This allows you to extend the rendering distance even further, at the risk of being very resource-intensive.
-
(#6794) Change Aeon ACU’s personal shield from UEF’s blue shield to Aeon’s green shield effect.
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.
-
(#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
.
Performance
- (#6666) Remove duplicated closures in controls.
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 fabricators not always using overflowed energy.
-
(#6661) Fix mass fabricators not updating the mass fabricator 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.
-
(#6671) Increase the rate at which the Paragon updates its resource production from every 5 ticks to every 1 tick.
This makes the Paragon react faster to high drain, reducing how often resources stall, are overflowed, or completely missed. For example, the Paragon can now refill energy used by overcharge.
-
(#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. -
(#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 it got 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 wider than the 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 bone for enhancement effects.
-
(#6735, #6608) 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.
-
(#6742) Fix an error when shields get damaged and they are assisted only by engineers with other commands queued after the assist order.
-
(#6752) Fix (proper) use of sparse checkout cone mode to speed up CI/CD
-
(#6755) Fix seraphim t1 and t2 transports being unable to drop units on small plateaus.
-
(#6758) Disable instant shield assist for upgrading shields since the repair order drains resources without repairing the shield when the shield is upgrading.
-
(#6768) Fix icons in the map preview of the autolobby being misplaced when using UI scaling.
-
(#6788) Fix errors when self destruct is used with no selection.
Other changes
-
(#6587) Improve annotations for unit-specific blueprint fields.
-
(#6601) Expand an AI related callback for when TML missiles are intercepted by TMD
-
(#6618, #6801) 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.
-
(#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 hookingModBlueprints
(which requires a session restart to reload).
- Setting a field to
-
(#6679) Resolve circular dependency of WorldView and CommandMode.
-
(#6680) Annotate code related to the
SetWeaponPriorites
sim callback. -
(#6682) Fix pre-allocated table declaration causing syntax errors in intellisense, and 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 filefa-plugin.lua
into your.vscode
folder. -
(#6694) Fully implements in-game benchmarking in the profiler for use by developers
-
(#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
-
(#6752) Add a GitHub Action workflow to bake properties into blueprints of props
This enables us to reduce the blueprint processing during run time, which will reduce the loading time for users.
-
(#6766) Refactor the implementation of the victory conditions
The victory conditions are now much more convenient to maintain and reason about. For the user they are functionally the same.
-
(#6773) Change all imports to lowercase for performance, and fix intellisense warnings about import names for the same file not matching.
-
(#6774) Fix minor annotation issues related to incorrectly defined function prototypes and warnings about duplicate parameters/indices.
Contributors
With thanks to the following people who contributed through coding:
- 4z0t
- Basilisk3
- BlackYps
- ETFreeman
- GodFuper
- Hdt80bro
- Jip
- Maudlin27
- Nomander
- Relent0r
- Speed2
- Strogo
- Tagada
- Yuchenjimmy
With thanks to the following people who contributed through binary patches:
- 4z0t
- Hdt80bro