Current list of deprecated mods:
Raw list of changes:
(Draft as of 2022/11/04 - 22:15 (GMT + 1))
# Game version 3745 (6th of November, 2022)
And there it is, the last major patch of the year!
This patch was ambitious. The purpose was to introduce modern features into the game, while at
the same time make the game easier to customize to your liking. Some of the patch can be
immediately applied by players, like the extended features on control groups, camera recall
functionality and the improved performance of the reclaim overview. Other features are not
immediately visible but are a major step forward, like the navigational mesh we generate for
the map you're playing on for AIs.
Previous patches primarily made changes in the code directly related to the simulation. This
patch also includes changes to the code surrounding the user interface. Also refers to UI
code or UI mods. It was not possible to do this patch without causing incompatibility with
some of the UI mods that are out there. We introduced a list of incompatible mods at the
end of this changelog. Authors can update their mod, bump the version number and the game
should automatically make it available again.
As a minor note to the authors of UI mods: it is better to have many small UI mods that each
add in a single feature, then it is to have one large UI mod that adds in many features. One
example is Economy Manager - a mod often used by players - is no longer compatible because
one of its dozen features is incompatible:the command feedback no longer triggers with Economy
Manager enabled. Long story short: keep the UI mods small and simple, as people can enable
any number of them.
And as this year ends I'd like to show my personal appreciation to some contributors and community
members. I'll start off with hdt80bro, who has been working on the repository for the past few
months. His extensive knowledge and motivation was visible in our discussions and above all in his
code changes. We're lucky to have him. Next to that I'd like to thank Madmax for always being
there when I needed essentially anything. Whenever I needed a tester, Madmax is usually there
ready to help confirm the stability of it. And of course there is Rowey - always ready to assist
with his friendly character. Rowey has pushed the FAF Youtube that increased exposure on the development
of this game, like being there when we were producing the game development series. a lot of the videos
on game development. And last I'd like to thank Sprouto - creator of the LOUD community - for being an
inspiration to what he managed to achieve with LOUD. Every time we talk I learn something new and I am
looking forward to our next conversation.
And like that, a new year of development will start. And with a new year we'll take a new route
to how we'll further develop this game. Instead of having a 'game team' - that introduces an arbitrary
boundary between contributors - we'll move towards how other projects are managed: by creating a clear,
properly scoped backlog of issues that contributors can pick up. Anyone can add and discuss issues in
the backlog. Once an issue is accepted it is added to a milestone. Milestones allow us to steer contributors
towards a common vision. They make it immediately clear when you can expect your changes to be live. Alas -
there's too much to tell and too little room in this changelog. For those interested, we'll soon make a post
on the forums and release the new contribution guidelines on the repository.
With appreciation towards all the contributors that made this patch possible,
Jip
## Features
- (#4119) Extend functionality of control groups
Adds in modern features into how control groups work. This includes:
- the 'stealing' units from other control groups (like in Starcraft II)
- being able to toggle the control group inheritance of factories
- allow you to adjust the behavior of the camera when you double tap
- allow you to adjust the double tap interval
And on top of that we've introduced various new hotkeys that interact with
control groups.
You can find the settings in the game options. You can find the additional
hotkeys in the hotkeys menu.
- (#4124, #4331) Improve cursor / command behaviors
Acts as an integration of the 'Random UI improvements' mod of Strogo. This includes:
- disabled reclaim cursor when you can't issue reclaim orders due to camera distance
- manual tactical / nuke launchers no longer attach to units, and instead always
target the ground
- area of effect preview when you try to issue an attack order
- allow you to adjust the selection threshold, particular useful for 2K+ displays or
when watching replays
You can find the settings in the game options.
- (#4124) Extend camera features
Acts as an integration of Additional Camera Stuff. This includes:
- Allows you to retrieve up to 9 camera locations
- Allows you to restore the previous camera position
You can find the additional hotkeys in the hotkeys menu.
- (#4188, #4190, #4191) Allow observers to view mouse position of players in-game
In particular useful for casters. The feature does not work with replays or live games
(that are replays too). In order for it to work you need to be an observer in the game,
as it starts. The information is not stored in the replay either.
- (#4203, #4204, #4212, #4234, #4244) Introduce recall
Adds in a recall feature. Similar to a the 'concede' feature that other games provide,
it allows you to cast a team vote on whether you want to recall as a team. When you
are with two or less alive players it requires all alive players of the same team to
agree. When you are with three or more alive players it requires all but one
of the alive players of the team to agree.
Was introduced because people got frustrated with the Fullshare mode in combination
with the limitated player base size.
- (#4219) Add in successive upgrades hotkeys for Hotbuild
Allows you to easily queue the upgrade of an upgrade using Hotbuild.
- (#4232) Add batching of reclaim labels
Reclaim labels are batched as you zoom out. As a result they remain readable.
- (#4241, #4334) Add coloring of reclaim labels
Reclaim labels are colored based on their value.
- (#4175) Add PBR blender nodes for rendering of units
This acts as a step-up towards introducing PBR-based shaders. It is used to check the
textures / assets of units and acts as an inspiration to the shader implementation.
- (#4131) Introduced of shared armies
Allows you to play as one army, where you all share control over the same units. This
used to be a standalone executable and is now integrated with the base game.
You can find these settings in the lobby options. Note that when applied the game
is no longer rated.
- (#4254) Improve text markers
When you create a text marker it is also send to the chat with camera coordinates
attached. This allows you to jump to text markers.
Based on a forum post.
- (#4253) Attempt at fixing engineer behavior for Seraphim air factories
Engineers constructed by the Seraphim air factories get teleported instead of
'tractored' off the factory. This was the only factory that made it impossible
to select the engineer during roll off. Attempting to make the unit selectable during
tractoring introduced a pile of issues.
Therefore now all Seraphim air factories are magicians until we find better effects.
Based on a forum post.
- (#4249) Add in a hotkey to select intelligence structures
Based on a suggestion by a user.
- (#4249) Add in a hotkey to filter your selection to the engineer with the highest tech
All other engineers in your old selection will assist the selected engineer
Based on a suggestion by a user.
- (#4266) Improve pathing surrounding props
Only large props (the size of a frigate or larger) block pathing.
Previously a lot of props blocked pathing, in particular small rocks. This introduced a
lot of noise in the occupancy layers, where it isn't clear that this noise exists. Especially
when you are zoomed out, being unable to see the rocks.
The noise caused units to behave strange, suddenly stop, circle around, etc. By removing
this noise we indirectly improve pathing a lot.
- (#4270, #4282, #4285, #4298, #4312, #4313, #4308) Introduce generated navigational mesh to interpret maps
This feature is technically involved. The idea is similar to the marker generator that has
been part of the Uveso AI for a few years now, but instead of markers we work with
areas. The navigational mesh can be used by AIs to understand and interact with the map.
The feature is based on compression via quad trees that compress the pathing information. We use
the leafs of the quad tree to create a graph. This graph is initially used for just pathfinding,
but we can use the graph for so much more.
All the code related to this feature is licensed using the MIT license. We're improving
it in collaboration with the AI developers. We try to convert their requests into an
algorithm that computes the answer. The algorithm needs to be simple, yet efficient as there
is essentially no budget to perform computationally expensive algorithms.
We're open to new contributors to help maintain and expand this exciting new feature of FAF.
- (#4287, #4328) Adjust factory behavior when building and finished building a unit
Drastically reduces the time it can take for a unit to roll off the building pad of a factory. The
production of a new unit starts the moment the build pad is clear. Also allows units to rotate to
the correct roll off point right before being finished.
Tech 1 tanks, artillery and labs have one second additional build time to compensate for the
reduction of roll off time.
- (#4307) Re-organize game options
Adds in headers and groups various options together. A few options have been renamed. Others have
been removed. The game options menu is a lot more organised now.
## Bug fixes
- (#4338) Fix remote code exploit
It was possible to inject arbitrary code into the simulation via a UI mod. This would
not be able to affect your system, but it would allow you to run any code in the simulation
and have that code run for all players involved.
It is highly appreciated that this was brought to our attention discretely.
- (#4205) Fix typo with missile callbacks for AIs
- (#4225, E#13) Fix Harbingers preference to reclaim instead of attacking during an attack move
They now attack move as you'd expect, instead of notoriously reclaiming the nearest tree.
- (#4248, #4337) Fix issues with Tractor Claws of the Colossus
Air units are now destroyed as soon as they reach the claw and the beam of the colossus
is now less likely to try and attack units that are being tractored.
- (#4201) Fix footprint and collision box of Ythotha
The Ythotha is no longer afraid of walls and can again happily crush them.
- (#4202) Fix duration of death animations of structures
It now matches the time it has always taken for factories to be destroyed.
- (#4250) Fix missing meshes and normals of various units
Including the Summit, that now again looks a lot better.
- (#4207, 4230) Fix props corrupting bomber weapon state
- (#4260) Add the BlueprintId to `Blueprint.CategoriesHash`
- (#4171) Fix scaling issue with new mod manager
- (#4262) Fix teleportation glitches
No more teleporting Cybran ACU with a cloak upgrade.
- (#4264) Fix a glitch with an Atlantis and a gunship with its cargo
No more invincible units through this weird glitch.
- (#4291) Allow turrets to rotate to the nearest threat again
This was broken by the previous patch, it now functions as expected again.
- (#4329) Fix collision size of Titans, Loyalists and Ilshahovs for beam weapons
Beam weapons (in particular, the Seraphim tech 2 point defense) should now more
reliably hit these specific units.
- Properly populate `AdjacentUnits` of structures
Useful for AIs to quickly determine adjacent units. Only units that provide an
adjacency bonus are tracked.
## Performance
- (#4180) Improve performance of AI economy conditions
- (#4284) Improve performance of AI builder conditions
- (#4237) Improve performance by changing `self.Fun(self, ...)` to `self:Fun(...)`
This was initially considered an improvement to performance. With the recent
improvements to the benchmarking tools we found out that this isn't strictly
the case. Therefore we are reverting it back to the more-readable format.
- (#4232, #4242, #4241, #4243) Improve performance of reclaim labels
Drastically improves the performance of reclaim labels.
A lot of UI mods adjusted the behavior of reclaim labels. Usually they did this
by using destructive hooks. That makes it impossible for us to push through
these improvements. UI mods that apply destructive hooks to `reclaim.lua`
have been deprecated. Their authors are highly encouraged to update their mods
and are recommended to use soft hooks instead.
- (#4325) Clean up and improve performance of imports
## Campaign / AI
- (#4265, #4268, #4271, #4305, #4300, #4294) Improve AI behavior and performance of the base game
Including, but not limited to:
- use alternative move functions that reduce formation issues
- implement eco-over-time to better guage the economic situation
- fix ACU behavior where it is unable to finish structures
- fix various issues with commands not being cleared properly
- fix factory manager not cleaning up destroyed factories
- introduction of pathing build conditions (using navigational mesh)
- (#4304) Add HQ support functions for AIs
- (#4309, #4310, #4319, #4311) Clean up of various build conditions
## Annotations
(#4172, #4186, #4176, #4174, #4183, #4235, #4227, #4238, #4025, #4229, #4069)
We're batching all pull requests with regards to annotations into one entry. That
doesn't make the work less meaningful - the introductions of annotations is what
Typescript is for Javascript: a completely new and improved approach to development.
You can find the plugin by searching for `fa-lua-vscode-extension` in the `FAForever`
Github group, as found here: https://github.com/FAForever
## Other changes
- (#4214) Adjust order of lobby options for less scrolling
- (#4226) Introduce initialization decoupled layouter design pattern
Improves the layouter UI pattern that was introduced since the last patch
- (#4228, #4246) Add key action localization directives
Allows us to add in keys that are used for a hotkey to a description. Useful
for tooltips and the loading screen tips.
- (#4256) Allow debugging drawing tools to function properly in AI games
These are often used by AI developers to debug their code.
- (#4257) Allow easier testing on deploy/fafdevelop
All files in `/devdata` are now loaded when playing on the `FAF Develop` game type
- (#4217) Add new and improve existing loading tips
- (#4274) Update description of Fullshare gamemode
- (#4280, #4281, #4323) Improve workflow for testing
Allows us to write better tests for engine-oblivious functionality
- (#4279) Add or improve translations for traditional chinese
- (#4269) UI Framework: introduction of the set and support classes
- (#4289) Speed up checking when a player is defeated
In an attempt to match the old time taken to determine when a player is defeated.
Based on a forum post.
- (#4299) Fix energy storage large strategic icon in construction menu
- (#4290) Allow hovering over the Ythotha storm
Allows you to see veterancy statistics, to finally settle the debate how useful the storm is
Based on a forum post.
- (#4301) Introduce color library
Allows us to easily convert numbers into colors as RGB, HSL or HSV.
- (#4321, #4332) Deprecate mods by version number
Previously we could only deprecate mods by its name, regardless of its version. We can
now also include the version, allowing an author to update the mod and have it
automatically 'undeprecate' by doing so.
- (#4326) Create initial tests for NavDatastructures.lua
## Contributors
- 4z0t (#4232, #4242, #4171, #4269, #4309, #4310, #4319, #4311)
- Penguin5 (#4214, #4217)
- Relent0r (#4180, #4205, #4265, #4268, #4271, #4284, #4305, #4294)
- hdt80bro (#4172, #4186, #4176, #4174, #4203, #4204, #4183, #4184, #4185, #4236, #4225, #4234,
#4226, #4237, #4228, #4227, #4238, #4280, #4270, #4229, #4069, #4301, #4321, #4325, #4217,
#4334, #4207)
- Rowey (#4172, #4176, #4174, #4183, #4184, #4185, #4235, #4236, #4238)
- Jip (#4119, #4124#4188, #4190, #4191, #4212, #4205, #4232, #4241, #4243, #4244, #4248, #4250,
#4253, #4260, #4254, #4262, #4249, #4025, #4267, #4266, #4264, #4281, #4270, #4282, #4285,
#4286, #4292, #4290, #4304, #4298, #4312, #4313, #4308, #4291, #4287, #4328, #4329, #4307,
#4331, #4332, #4327, #4334, #4338, #4336, #4201, #4202, 4230)
- iczero (#4338)
- FemtoZetta (#4274)
- KionX (#4131, #4255)
- CheeseBerry (#4219)
- BlackYps (#4175)
- YuchenJimmy (#4279)
- xXEddieXxx (#4299)
- Zjonn (#4323, #4326)
- ErikMekkes (#4321)
And with thanks to Fichom for creating various textures scattered over the pull requests.
## List of incompatible mods
```lua
-- mods that are deprecated, based on mod folder name
deprecatedMods["simspeed++"] = true
deprecatedMods["#quality of performance 2022"] = true
deprecatedMods["em"] = "11"
-- as per #4119 the control groups (called selection sets in code) are completely overhauled
-- and extended feature-wise, because of that these mods are no longer viable / broken / integrated
deprecatedMods["group_split"] = "0.1"
deprecatedMods["Control Group Zoom Mod"] = "2"
deprecatedMods["additionalControlGroupStuff"] = true
-- as per #4124 the cursor and command interactions are complete overhauled and extended feature-wise,
-- because of that these mods are no longer viable / broken / integrated
deprecatedMods["additionalCameraStuff"] = "3"
deprecatedMods["RUI"] = "1.0"
-- as per #4232 the reclaim view is completely overhauled
deprecatedMods["Advanced Reclaim&Selection Info"] = "1"
deprecatedMods["AdvancedReclaimInfo"] = "1"
deprecatedMods["BetterReclaimView"] = "2"
deprecatedMods["disableReclaimUI"] = "2"
deprecatedMods["DynamicReclaimGrouping"] = "1"
deprecatedMods["EzReclaim"] = "1.0"
deprecatedMods["OnScreenReclaimCounter"] = "8"
deprecatedMods["ORV"] = "1"
deprecatedMods["SmartReclaimSupport"] = "3"
deprecatedMods["DrimsUIPack"] = "3"
deprecatedMods["Rheclaim"] = "2"
Note that mods like Quality of Performance are no longer required - they barely have impact on the
performance of the simulation these days.