From ef37b03933e7051427656372f5ef4d07d6df55b1 Mon Sep 17 00:00:00 2001 From: Jip Date: Sun, 6 Nov 2022 13:05:26 +0100 Subject: [PATCH] Add changelog 3745 (#4333) --- changelog-dev.md | 384 ++++++++++++++++++++++++++++++- changelog.md | 396 ++++++++++++++++++++++++++++++++ init.lua | 3 +- init_faf.lua | 3 +- init_fafbeta.lua | 1 + init_fafdevelop.lua | 1 + init_shared.lua | 18 +- lua/ui/game/cursor/hover.lua | 2 +- lua/ui/lobby/changelogData.lua | 403 ++++++++++++++++++++++++++++++++- lua/version.lua | 6 +- mod_info.lua | 2 +- 11 files changed, 1205 insertions(+), 14 deletions(-) diff --git a/changelog-dev.md b/changelog-dev.md index 28f0234963..3409b4a275 100644 --- a/changelog-dev.md +++ b/changelog-dev.md @@ -1,16 +1,392 @@ -# Game version xyzw (day of month, year) +# Game version 3745 (6th of November, 2022) -## Bug fixes +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 laser attached to its chest. + +- (#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 -## Annotation +- (#4180) Improve performance of AI economy conditions + +- (#4284) Improve performance of AI builder conditions -## Campaign +- (#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 + +-- 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. diff --git a/changelog.md b/changelog.md index fd617ec53b..078382c646 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,402 @@ Some sections of the changelog are available in other languages such as [French](changelog-fr.md) or [Russian](changelog-ru.md) + +# 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 laser attached to its chest. + +- (#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 +-- you can find the most recent list here: https://github.com/FAForever/fa/blob/deploy/fafdevelop/init_fafdevelop.lua#L70 +-- 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. + # Game version 3744 (25th of August, 2022) The maintainers of Nomads have resolved the issues with tactical and strategical defenses! They should diff --git a/init.lua b/init.lua index 6c8f56715b..6a85f3c06a 100644 --- a/init.lua +++ b/init.lua @@ -96,6 +96,7 @@ deprecatedMods["OnScreenReclaimCounter"] = "8" deprecatedMods["ORV"] = "1" deprecatedMods["SmartReclaimSupport"] = "3" deprecatedMods["DrimsUIPack"] = "3" +deprecatedMods["Rheclaim"] = "2" -- convert all mod folder name keys to lower case to prevent typos deprecatedMods = LowerHashTable(deprecatedMods) @@ -523,7 +524,7 @@ end -- END OF COPY -- -- minimum viable shader version - should be bumped to the next release version when we change the shaders -local minimumShaderVersion = 3729 +local minimumShaderVersion = 3745 -- look for unviable shaders and remove them local shaderCache = SHGetFolderPath('LOCAL_APPDATA') .. 'Gas Powered Games/Supreme Commander Forged Alliance/cache' diff --git a/init_faf.lua b/init_faf.lua index 5bcf48e367..c727aa74c3 100644 --- a/init_faf.lua +++ b/init_faf.lua @@ -96,6 +96,7 @@ deprecatedMods["OnScreenReclaimCounter"] = "8" deprecatedMods["ORV"] = "1" deprecatedMods["SmartReclaimSupport"] = "3" deprecatedMods["DrimsUIPack"] = "3" +deprecatedMods["Rheclaim"] = "2" -- convert all mod folder name keys to lower case to prevent typos deprecatedMods = LowerHashTable(deprecatedMods) @@ -523,7 +524,7 @@ end -- END OF COPY -- -- minimum viable shader version - should be bumped to the next release version when we change the shaders -local minimumShaderVersion = 3729 +local minimumShaderVersion = 3745 -- look for unviable shaders and remove them local shaderCache = SHGetFolderPath('LOCAL_APPDATA') .. 'Gas Powered Games/Supreme Commander Forged Alliance/cache' diff --git a/init_fafbeta.lua b/init_fafbeta.lua index b92dfa0029..148bff6178 100644 --- a/init_fafbeta.lua +++ b/init_fafbeta.lua @@ -96,6 +96,7 @@ deprecatedMods["OnScreenReclaimCounter"] = "8" deprecatedMods["ORV"] = "1" deprecatedMods["SmartReclaimSupport"] = "3" deprecatedMods["DrimsUIPack"] = "3" +deprecatedMods["Rheclaim"] = "2" -- convert all mod folder name keys to lower case to prevent typos deprecatedMods = LowerHashTable(deprecatedMods) diff --git a/init_fafdevelop.lua b/init_fafdevelop.lua index 9d888b1dc0..6501fe5b75 100644 --- a/init_fafdevelop.lua +++ b/init_fafdevelop.lua @@ -96,6 +96,7 @@ deprecatedMods["OnScreenReclaimCounter"] = "8" deprecatedMods["ORV"] = "1" deprecatedMods["SmartReclaimSupport"] = "3" deprecatedMods["DrimsUIPack"] = "3" +deprecatedMods["Rheclaim"] = "2" -- convert all mod folder name keys to lower case to prevent typos deprecatedMods = LowerHashTable(deprecatedMods) diff --git a/init_shared.lua b/init_shared.lua index 9a74f8b1d5..46f178b725 100644 --- a/init_shared.lua +++ b/init_shared.lua @@ -96,6 +96,7 @@ deprecatedMods["OnScreenReclaimCounter"] = "8" deprecatedMods["ORV"] = "1" deprecatedMods["SmartReclaimSupport"] = "3" deprecatedMods["DrimsUIPack"] = "3" +deprecatedMods["Rheclaim"] = "2" -- convert all mod folder name keys to lower case to prevent typos deprecatedMods = LowerHashTable(deprecatedMods) @@ -520,4 +521,19 @@ local function LoadVaultContent(path) MountModContent(path .. '/mods') end --- END OF COPY -- \ No newline at end of file +-- END OF COPY -- + +-- minimum viable shader version - should be bumped to the next release version when we change the shaders +local minimumShaderVersion = 3745 + +-- look for unviable shaders and remove them +local shaderCache = SHGetFolderPath('LOCAL_APPDATA') .. 'Gas Powered Games/Supreme Commander Forged Alliance/cache' +for k, file in IoDir(shaderCache .. '/*') do + if file != '.' and file != '..' then + local version = tonumber(string.sub(file, -4)) + if not version or version < minimumShaderVersion then + LOG("Removed incompatible shader: " .. file) + os.remove(shaderCache .. '/' .. file) + end + end +end \ No newline at end of file diff --git a/lua/ui/game/cursor/hover.lua b/lua/ui/game/cursor/hover.lua index ceffed6d01..31d430f192 100644 --- a/lua/ui/game/cursor/hover.lua +++ b/lua/ui/game/cursor/hover.lua @@ -179,4 +179,4 @@ local function HoverScanningThread() end end -Trash:Add(ForkThread(HoverScanningThread)) \ No newline at end of file +-- Trash:Add(ForkThread(HoverScanningThread)) \ No newline at end of file diff --git a/lua/ui/lobby/changelogData.lua b/lua/ui/lobby/changelogData.lua index 93b31799b8..32accfc0f1 100644 --- a/lua/ui/lobby/changelogData.lua +++ b/lua/ui/lobby/changelogData.lua @@ -1,9 +1,9 @@ -last_version = 3744 +last_version = 3745 ---@alias PatchNotesType "Hotfix"|"Developers patch"|"Balance patch" ---@class PatchNotes ----@field version string # Patch version +---@field version number | string # Patch version ---@field name PatchNotesType # Patch type ---@field descriptionFR string[] # French translation ---@field descriptionRU string[] # Russian translation @@ -11,6 +11,405 @@ last_version = 3744 ---@type PatchNotes[] gamePatches = { + { + version = 3745, + name = 'Developers patch', + description = { + "", + "# 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 laser attached to its chest.", + "", + "- (#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", + "", + "-- 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.", + "", + }, + }, { version = 3744, name = 'Hotfix', diff --git a/lua/version.lua b/lua/version.lua index 33caf1fb89..fc327f13a1 100644 --- a/lua/version.lua +++ b/lua/version.lua @@ -1,6 +1,6 @@ -local Version = "3744" ----@alias PATCH "3744" ----@alias VERSION "1.5.3744" +local Version = "3745" +---@alias PATCH "3745" +---@alias VERSION "1.5.3745" ---@return PATCH function GetVersion() LOG('Supreme Commander: Forged Alliance version ' .. Version) diff --git a/mod_info.lua b/mod_info.lua index ca38c3f78c..edd2fde27f 100644 --- a/mod_info.lua +++ b/mod_info.lua @@ -3,7 +3,7 @@ -- Documentation for the extended FAF mod_info.lua format can be found here: -- https://github.com/FAForever/fa/wiki/mod_info.lua-documentation name = "Forged Alliance Forever" -version = 3744 +version = 3745 _faf_modname='faf' copyright = "Forged Alliance Forever Community" description = "Forged Alliance Forever extends Forged Alliance, bringing new patches, game modes, units, ladder, and much more!"