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 itsWaterVisionRadius
, 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.065 –> 0.07
- 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.
- Angler Torpedo
-
- (#6481) Balance cost and DPS stats of T3 static artillery:
- Aeon Emissary set to 79k mass in proportion to old UEF artillery DPS/M.
- Artillery costs spread evenly across 70-79k mass. Artillery costs are not reduced below their current costs because that would make them come out earlier.
- Damage adjusted for more per-artillery variety in shots to kill T3 shields, while also evening out STK vs different faction T3 shields.
- Reload adjusted so that avg DPS vs T3 shields (this accounts for regen) per mass is equal to Aeon artillery.
- Aeon Emissary:
- Mass cost: 73200 -> 79000 (+7.9%)
- Energy cost: 1372500 -> 1481000 (+7.9%)
- Build time: 120000 -> 129500 (+7.9%)
- DPS with 4 T3 pgens: 1000
- UEF Duke:
- Mass cost: 72000 -> 76000 (+5.6%)
- Energy cost: 1350000 -> 1424000 (+5.5%)
- Build time: 115000 -> 121400 (+5.6%)
- DPS with 4 T3 pgens: 917 -> 980 (+6.9%)
- Damage: 5500 -> 7840
- Base Reload: 10s -> 13.3s - Seraphim Hovatham: - Mass cost: 70800 -> 73000 (+3.1%) - Energy cost: 1327500 -> 1369000 (+3.1%) - Build time: 110000 -> 113400 (+3.1%) - DPS with 4 T3 pgens: 833 -> 935 (+12.3%)
- Damage: 5000 -> 5800
- Base Reload: 10s -> 10.4s - Cybran Disruptor: - Mass cost: 69600 -> 70000 (+0.6%) - Energy cost: 1305000 -> 1313000 (+0.6%) - Build time: 105000 -> 105600 (+0.6%)
- Aeon Emissary:
- DPS with 4 T3 pgens: 804 -> 844 (+5.0%)
- Damage: 3700 -> 3800
- Base Reload: 7.7s -> 7.5s
- As it has a lot of splash radius and there is a significant accuracy buff for the Disruptor in this patch, the DPS isn’t increased as much as calculated vs T3 shields.
- (#6482) Balance accuracy of T3 static artillery: The accuracy is balanced for DPS dealt to multiple Seraphim T3 shields (accounts for splash damage), a scenario similar to how a high value target would be protected late-game where T3 artillery plays a role.
- Aeon Emissary:
- Firing Randomness: 0.35
- UEF Duke:
- Firing Randomness: 0.525 -> 0.467
- Seraphim Hovatham:
- Firing Randomness: 0.675 -> 0.560
- Cybran Disruptor:
- Firing Randomness: 0.75 -> 0.646
- Aeon Emissary:
-
(#6522) In #5725 the number of child projectiles for the Solace was accidentally increased from 2 to 3 resulting in increased total damage (6k rather than 4k). This change is reversed, and the damage is now properly split between child projectiles instead of being a multiplier of the main projectile’s damage.
Solace: T3 Torpedo Bomber (XAA0306):
- Number of child projectiles per torpedo: 3 -> 2 (Total damage 6000 -> 4000)
- Main projectiles now deal full damage if they fall directly onto an enemy (Damage 400 -> 800).
-
(#6623) While the introduction of variable teleport speeds and costs was an overall positive change for the balance of the game, it has become evident that 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. This PR aims to remedy this issue without nerfing the mechanic excessively. To accomplish this, the minimum teleport time and energy usage stats are 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).
-
(#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)
- 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 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.
- Thau Cannon:
-
(#6738) Various adjustments to TMLs and TMDs to improve their functionality and address balancing problems. There is still work to be done regarding these units, but the changes should increase consistency and make for more balanced gameplay.
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 really 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.
-
(#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
Features
- (#5971) Add two new lobby options that determine how to share units of players who disconnect (DC) from the game: DC Share Conditions and DC ACU Share Conditions This gives players of all types a way to lessen the impact of a disconnect in their games to a varying degree.
- DC Share Conditions: Similar to the standard Share Conditions option, this determines how units are shared when a player disconnects.
- The default is to copy the standard share condition, but it can be set independently.
- To prevent abuse, the DC Share Conditions are not applied in Assassination games if the ACU takes damage or dies in 2 minutes (depending on the DC ACU Share Conditions).
- DC ACU Share Conditions: Determines how ACUs are treated when a player disconnects. They can be split into two categories:
- Instant conditions: These are applied instantly, so to prevent abuse, the DC Share Conditions are only applied if the ACU has not taken damage within the last 2 minutes.
- Explode (Default): The current behavior of ACUs, where they explode when their player leaves.
- Recall: Instead of exploding, the ACU peacefully recalls, keeping everything around intact. This can only happen if they weren’t damaged in the last 2 minutes to prevent abuse.
- ACU Sharing conditions: These share the disconnecting ACU. To prevent abuse, the DC Share Conditions are only applied if the ACU doesn’t die within 2 minutes of being shared. After those 2 minutes, the DC Share Conditions apply when the ACU recalls or dies.
- Delayed Recall: ACUs are very powerful, but also necessary early on, so this option shares the ACU for 2 minutes or until 5 minutes pass in the game (displayed as a countdown on the ACU). Afterwards, it recalls (except if it was damaged in 2 min, then it explodes). This gives players an opportunity to stabilize the new situation without getting a large long term advantage by controlling two ACUs.
- Permanent: For those who don’t mind it, or when the ACU is too precious to lose after a timer, the ACU can be shared permanently.
- Instant conditions: These are applied instantly, so to prevent abuse, the DC Share Conditions are only applied if the ACU has not taken damage within the last 2 minutes.
Some examples:
- Share until death players can use “Same as Share” and “Permanent” to keep players who disconnect snipeable, but not lose their entire base.
- Survival/modded players can use “FullShare” and “Permanent” to keep everything.
- Competitive players can use “FullShare” and “Delayed Recall” to not have to restart the lobby or draw because of an early disconnect, but without having an OP double ACU strategy.
- Think getting bases or reclaim from disconnects is unfair? Make them recall and desert as civilians!
- DC Share Conditions: Similar to the standard Share Conditions option, this determines how units are shared when a player disconnects.
-
(#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.
-
(#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
- (#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
- (#6726) Introduce the ability to paint on the map
Introduces 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. This is a technical limitation to limit the network traffic to a minimum. There’s no limit on the number of brush strokes. Players can create complicated shapes such as an arrow by creating multiple brush strokes.
The scaling factor of the UI influences the width of a brush stroke.
With thanks to Ctrl-K 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.
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.
-
(#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, 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. -
(#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.
-
(#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.
Graphics
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 filefa-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
-
(#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.
- Extends the level of detail with an ‘Extreme’ setting. This allows you to extend the rendering distance even further, at the risk of being unstable.
-
(#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:
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: