Developers Iteration IV of 2023
-
Find out about the last bits and twigs for the third development iteration of the game! You can experiment with these changes yourself by playing the
FAF Develop
game type. You can choose this game type as you host your game:For the complete history on all changes you can read up the Github history:
References to all development iterations:
-
Physically Based Rendering
Physically Based Rendering (PBR) is a computer graphics technique used to simulate the way light interacts with materials and surfaces in a physically accurate manner. The goal of PBR is to create realistic and visually appealing 3D scenes by mimicking real-world lighting and material properties. This technique was only developed after Forged Alliance was released, but we could implement it now because the game exposes the files that contain the shader source code. One important characteristic of PBR is that it treats metals and non-metals separately, which results in vastly better-looking metal compared to the previous approach, but reflections on other surfaces benefit as well.
All this is possible without any noticeable performance cost.The implementation mainly followed this website: https://learnopengl.com/PBR/Theory
Additional resources and in-depth explanations about Physically Based Rendering can be found here: https://blog.selfshadow.com/publications/s2013-shading-course/The PBR shaders are only enabled on high graphics fidelity.
These shaders are a lot more sensitive to the environment texture that the map has set. So if you are a mapmaker, you should pay attention to selecting a fitting one to get the best results. They also add functionality to use a "water" environment map, that can be provided if the default environment map is non-mirrored, to provide a mirrored version. This will be used for ships and other units on water so their reflections make more sense.
The shaders should look quite good on maps from the map generator, as they already implement the water environment texture. The shaders are enabled on all other maps as well, but visually your mileage may vary.
Without PBR
With PBR
-
Tactical missiles
The behavior of tactical missiles is entirely scripted, unlike the average projectile, which merely has scripted effects and impact logic. Thanks to @clyf , we now have an extensive parametrized framework to determine the behavior of a tactical missile. You can learn more about it in these files:
Using this framework, we can introduce interesting effects to, for example, increase faction diversity and adjust the behavior of a tactical missile in general. Each faction now has a unique property that they can use to their advantage:
- UEF: Tactical missiles, specifically those launched from cruisers and stationary TML, have a very high arc. At their peak, they may fly over Aeon TMD altogether.
- Cybran: Tactical missiles split as they are being intercepted. The split feels more organic than it did before, and the missiles are no longer immune to damage while splitting.
- Aeon: Tactical missiles have a larger fuzziness or 'spread' factor than other missiles. They'll almost always hit their target, but they're also more likely to create collateral damage. They still zigzag quite a bit.
- Seraphim: Tactical missiles are, on average, faster than the tactical missiles of other factions.
Note: strategic missiles and strategic missile defenses remain unchanged
Trajectories
The trajectories of missiles have been adjusted. This adjustment is challenging to describe in words or depict through images. The best way to understand how the trajectory behaves is to experiment in-game.
Barrage
Tactical missiles used to aim at the terrain in the center of the unit, which was error-prone (Megaliths being practically immune to tactical missiles being one example) and visually somewhat monotonous.
In the new behavior, tactical missiles select a random location within the collision box of the target. Computing the offset relies on two new blueprint fields for a projectile:
TrackTargetGroundFuzziness
: Determines how much of the collision box we consider a valid target. It defaults to 80% of the collision box.TrackTargetGroundOffset
: Determines a flat offset, regardless of the collision box. It defaults to 0.
An visual example of the difference
An interesting consequence of this is that the Aeon Missile Ship, in particular, excels not only at damaging the target but also at affecting everything in the surrounding area.
Intercepted
Tactical missiles that were intercepted would just disappear into thin air! This is technically true, but visually a little boring. All tactical missiles now have faction-specific effects and the tactical missiles of the UEF, Aeon and Cybran faction even drop a little bit of debris when they are intercepted.
Anti-projectile defenses
There was a peculiar interaction with anti-projectile defenses where they appeared to completely ignore a projectile. This occurred when a missile was locked onto by a defense weapon, but the defense weapon was unable to fire due to reloading. Consequently, in various edge cases, torpedoes and tactical missiles would be simply ignored and reach their intended targets.
This interaction has now been rectified. As a result, torpedo defenses are currently under review, and torpedoes in general will be rebalanced with the November balance patch.
Note: this section applies to both tactical missile defenses and torpedo defenses
-
Improvements to the mobile factory feature
With thanks to @clyf there's been a major improvement to the mobile factory feature. You no longer need to select the factory component to give orders to the factory. Instead, you can now issue factory orders while selecting the primary unit! Everything works as you'd expect, you can even view and manipulate the queue of the factory from the primary unit.
On top of that there's a new toggle to select the external factory. This still matters as the only way to manipulate the rally point of the factory is by selecting the external factory itself. This is now a breeze, again with thanks to @clyf for his time and effort to improve the feature.
The texture of the toggle is still being worked on, if you'd like to participate in that discussion then you can do so through a Discord thread!
-
Other note worthy changes
Context based templates
- #5543 Add the ability to use the context of the build preview
It is best shown visually. See the pull request for a video. With this feature you can create templates that use the build preview as its context. As an example;
-
- imagine you have a radar as a build preview. If you hit tab (the hotkey to trigger the context based templates) then it turns into a radar that capped with power generators
-
- imagine you have a tech 3 air factory as a build preview. If you hit tab then it turns into a chunk of air grid
As mentioned at the start; this is best explained visually. See the pull request for a video.
- #5541 Make it easier to cycle through extractor / hydrocarbon plant templates when zoomed out
The radius that scans for deposits increases as you zoom out. It mimics the distance of the pixel-snapping behavior for extractor deposits.
Assist to copy the command queue of an engineer
- #5540 Adds another assist side effect that triggers the Copy orders functionality
The assist behavior can be a bit clunky at times. By copying the command queue you still 'assist' the original engineer but have all the advantages of not having to wait for the original engineer to start the construction.
Improvements to the score graph
- #5524 Improve responsiveness and performance of the score graph
With thanks to @Pokute the score graph is now in a good spot in terms of performance. It now populates the graph really fast, even after long games with a lot of players.
Improvements to anti-projectile weapon behavior
- #5518 Disable anti-projectile weapons after firing
Projectiles have a shooter cap. When a weapon locks on a projectile it adds towards the shooter cap. When the cap is reached no more weapons can lock on a projectile. This behavior is fine but there's a problem: weapons can lock on projectiles even though they are unable to fire. This can be due to many reasons, the most common being the reload time.
As a result a weapon can lock on a projectile during a (long) reload time and effectively prevent other weapons from being able to intercept the projectile. Other nearby weaponry would just remain idle.
This is now adjusted; an anti-projectile weapon is no longer able to lock on to a projectile while reloading. As a result anti-projectile weaponry is a lot more efficient at shooting down projectiles and they no longer appear to remain idle like they used to before.
This impacts both torpedo and tactical defenses.
Improvements to projectile collision detection
When a projectile intersects with multiple units at once it will usually pick the last unit. This was a bug; most commonly seen with the walls behind a point defense soaking up all the damage. As a result walls would work rather unreliably. The bug is most common units that are either very packed or with projectiles that have a very high velocity. One example being the Rhino.
This bug is now fixed - the unit that would be hit first takes the hit. As a result the walls in front of the point defense take the damage. It is now also possible for small non-hover units to hide behind walls as the wall will reliably soak the damage.
-
Game version 3772 (2nd of November, 2023)
Please refer to the notes of versions 3771 for the full patch notes.
With gratitude to all those who took the time to report issues,
Jip
Features
- (#5545) Rebalance walls
With the latest patch, walls now reliably block projectiles, even for units hiding behind them. This can create nearly impenetrable defenses without the need for artillery. In collaboration with the balance team, we have decided to implement the following balance changes for all wall sections:
-
- Health: X -> 500
-
- Health regeneration: X -> 0
-
- Build time: 20 -> 15
-
- Mass costs: 2 -> 3
-
- Energy costs: 10 -> 20
-
(#5617) Allow engineers to change orientation when done constructing
In the recent patch, units no longer automatically rotate towards the optimal rollout point upon completing construction. The old behavior, especially noticeable with large units (e.g., naval units), could be quite awkward. We have decided to make an exception for engineers since an incorrectly oriented engineer at the beginning of the game can significantly slow down your build order, costing valuable seconds.
AI
- (#5621) Enhance 'PathToWithThreatThreshold' to also provide information about the threat location.
- (#5621) Introduce 'DirectionsFromWithThreatThreshold' for obtaining a secure landing location.
- (#5607) Correct 'GetPositionsInRadius' to function with the updated coarse graph.
- (#5608) The easy AI is now functioning properly once more.
Bug fixes
- (#5618) Correct the missing energy requirements for Overcharge.
- (#5606) Conceal the collapse button of the mass fabrication panel via the 'UI_ToggleGamePanels' console command.
- (#5620) Experimental mobile factories can now be selected even during construction.
- (#5619) Restore the trail to the projectiles of the AA guns on the Cybran carrier.
- (#5615) Display the backpack on the UEF ACU when the bubble shield enhancement is installed.
- (#5611) Display the backpack on the UEF ACU when the bubble shield enhancement is installed.
- (#5610) Resolve factory modules (of mobile factories) causing issues with campaign objectives.
Factory modules are still part of the objective. It is up to the author of the campaign map to exclude them in the script files if they do not want them to be part of the objective
- (#5610) Correct Zappers (Cybran TMD) from intercepting the wrong missiles.
- (#5622) Adjust the walking animation rate of various units.
- (#52) Prevent the 'OnEnterWater' event of projectiles triggering when intersecting with the terrain.
This bug was addressed through an assembly patch, which was noticeable due to water splashes appearing on land. This issue was particularly prominent with transports crashing, but it also affected the average projectile, creating small water splashes.
- (#53) Rectify a bug where a projectile would intersect with the terrain while there's a unit in between.
This bug was fixed through an assembly patch, primarily affecting the Stinger's ability to target specific, smaller units.
Other changes
- (#5616) Reintroduce Seraphim-specific scorch splats.
- (#5613) Include the damage of the Colossus' claw in the blueprint, facilitating modding.
- (#5614) Store map-wide albedo for shaders in the same slot, simplifying terrain shader switching.
Contributors
With thanks to the following people who contributed through coding:
- @Garanas (Jip)
- @BlackYps
- @The-Balthazar
- HudoraX
With thanks to the following people who contributed through binary patches:
And, last but certainly not least - with thanks to those that took part in constructive discussions:
- Deribus
- @ChessBerry
- @Sheikah45
- Magge
- @MostLostNoob
- Fichom
- @MrRowey
Game version 3771 (29th of October, 2023)
This patch introduces a number of significant changes that once again affect the game's balance. The balance team is fully aware of this and is actively making adjustments to adapt to these changes. If you want to experience the latest in balancing, be sure to select the FAF Beta game type when hosting a game; it contains the most up-to-date improvements. We encourage you to provide feedback on the forums and through Discord.
The previous patch (version 3770) was a silent update designed to address several commonly exploited attack vectors. Notably, we closed an attack vector that had been causing issues in lobbies. As a consequence of this, side-loading Lua scripts to modify the lobby (such as Kyro's Lobby) or to alter strategic icons (ASI) is no longer functional. Fortunately, there are alternative UI mods available in the vault.
Many have asked us why we don't allow changes to ASI and the uploading of such modifications to the vault. The reason is straightforward: the author clearly specifies in the description that no alterations are permitted. While we must respect this rule, it can certainly be frustrating. Personally, I take this as a reminder to appreciate software and assets with open source and/or Creative Commons licenses that permit people to create derivatives of the work.
With thanks to all those that took the time to report issues and participate in feedback sessions,
Jip
Features
Physics based rendering (PBR) shaders
We've been discussing shader improvements, and the initial changes are now live! PBR shaders have been implemented for all units, including mods, when you have the high fidelity preset selected. The medium fidelity preset now corresponds to the previous high fidelity setting, while the low fidelity preset remains unaffected.
This marks a significant advancement, and we're eagerly anticipating further graphic refinements in the upcoming developer iterations. If you happen to be a texture or 3D model artist, your assistance would be greatly appreciated in this endeavor. If you're interested in contributing, please don't hesitate to reach out to us via Discord.
Tactical missiles
They've been left neglected for a considerable amount of time, but that's about to change! Tactical missiles have undergone extensive adjustments to enhance their behavior and introduce added immersion. These changes encompass alterations to their trajectory, velocity, and impact or intercept effects. Additionally, tactical missiles now exhibit distinct behaviors based on their faction:
- UEF: Tactical missiles are capable of reaching significantly higher altitudes.
- Cybran: Tactical missiles split into multiple projectiles when intercepted.
- Aeon: Tactical missiles follow a zigzag pattern.
- Seraphim: Tactical missiles can achieve higher speeds.
Anti-projectile weaponry
In a previous developer iteration, we addressed the issue of excessive "overkill" by anti-projectile weaponry. The concept was to "lock on" to a projectile, which would prevent other anti-projectile weaponry from locking on, and this generally worked well. However, there were exceptions when a weapon maintained the lock on a projectile while reloading.
To rectify this, all anti-torpedo and anti-tactical missile weaponry have now been modified to disable their weapons during the reloading process. This action prevents them from locking onto projectiles, effectively ensuring that the weapon won't block other nearby weapons to intercept projectiles. Consequently, Tactical Missile Defenses (TMDs) and Torpedo Defenses (TDs) now function with greater reliability and increased efficiency.
Mobile Factories feature
In the previous developer iteration, we introduced the mobile factories feature, and thanks to valuable player feedback, we've made some improvements:
- You can now manage the queue of the factory module while selecting the primary unit. This includes queuing units and pausing or setting the factory module to repeat-build.
- For Aircraft Carriers, you can now simply right-click the deploy button to automatically deploy aircraft when they are created.
- You can now easily toggle between selecting the primary unit and the factory module. This simplifies the process of directly managing the factory module, such as setting rally points.
And last but certainly not least, the CZAR now has the ability to build air units, following the same behavior as other aircraft carriers.
These enhancements aim to provide a smoother and more efficient experience when working with mobile factories, making gameplay even more enjoyable.
Navigational Mesh
The navigational mesh plays a crucial role in helping AI entities decipher and navigate the map. In this iteration, we've implemented several improvements:
- The computation of the navigational mesh now takes 20% to 30% less time compared to the previous version. On an average computer and a typical 20x20 map, it should now take no longer than two seconds to generate the navigational mesh.
- We've introduced a separate graph, similar to a mesh surface, for the actual pathfinding process. This adjustment reduces the overhead involved in generating paths, effectively skipping details that are irrelevant.
As always, we strongly discourage direct code interactions with the navigational mesh. We encourage users to utilize the 'NavUtils' wrapper. Code that employs the 'NavUtils' wrapper remains unaffected functionally and automatically benefits from these runtime improvements.
Other features
- (#5370) The toggle to select drones now selects all drones from all drone carriers within your selection.
- (#5125) When you right-click a control group, it appends your current selection to the control group.
- (#5487) Visualizations of raised platforms are now displayed when spawning units through the cheat menu.
- (#5507) Translations for Simplified Chinese have been added.
- (#5500) Descriptions concerning TMLs (Tactical Missile Launchers) and SMLs (Strategic Missile Launchers) have been updated.
- (#5566) Descriptions for (S)ACU enhancements have been extended for better clarity and information.
- (#5514) Introducing a wall overspill mechanic:
Walls now have an overspill mechanic similar to Shields. They overspill damage to directly adjacent walls. The overspill factor is 20%. For example, when a wall receives 10 damage, all adjacent walls receive an additional 2 damage.
- (#5524) Enhancing the performance of end-game score graphs:
The score graphs now render significantly faster, thanks to the same optimizations applied to speed up the simulation.
- (#5541) Resource deposit detection in context-based templates while zoomed out:
The search radius for resource deposits now extends as you zoom out, making it easier to build and place extractors.
- (#5543) Context-based templates can now trigger on your build preview:
Context-based templates no longer rely solely on the context of the mouse. With this change, they can also use the build preview as context to cycle through templates. For instance, if you have a Tech 2 Radar in the build preview, you can cycle to a build template that surrounds the radar with power generators. Similarly, if a Tech 3 Power Generator is in the build preview, you can switch to a build template that surrounds the power generator with air factories. These new templates can be edited, extended, or replaced just like the old ones.
- (#5540) Assistance in copying the command queue of an engineer:
This feature can be enabled in the game options. When holding CTRL and assisting, an engineer will now copy the command queue of the engineer being assisted and apply it to your current selection, making engineering tasks more efficient.
Bug fixes
- (#48) Resolving the bug where projectiles hit the wrong unit:
In the past, there was an issue where projectiles would occasionally strike the incorrect unit. This problem typically occurred when a projectile intersected with multiple units at the same time, resulting in it targeting the last unit it encountered. This bug was particularly noticeable when walls positioned behind a point defense structure absorbed most of the damage, causing walls to function unreliably. The bug was most prevalent with tightly packed units or high-velocity projectiles, such as those fired by the Rhino.
Fortunately, this bug has now been fixed. Projectiles will strike the first unit they encounter, ensuring that damage is allocated correctly. Consequently, damage will be absorbed by the walls in front of a point defense, enhancing the reliability of the gameplay. Additionally, small non-hover units can now effectively use walls as cover, as the walls will consistently absorb incoming damage.
- (#5550) Corrected the issue of beam weapons sometimes missing various (hover) units.
- Addressed the problem of missing targeting bones in various (structure) units.
- Resolved a crash that occurred when distributing reclaim orders.
- Fixed the Aeon tech 1 bomber (occasionally) flipping over its axis.
- (#5553) The Seraphim regeneration field now properly applies to Transports.
- (#5554) The Seraphim regeneration field now properly applies to Sparkies.
- (#5254) Fix the Monkeylord from being able to get stuck.
- (#5489) Units no longer rotate drastically as they finish building.
This would happen when a change to the rally point would change the roll off point. Instead the unit now rolls off the direction it is facing and the next unit will be properly orientated again at the start of building
- (#5503) Visual glitches related to the Ahwassa have been resolved.
- (#5511) A bug that caused the map to be flattened has been fixed.
- (#5522) The closing rate of the in-game menu screen for large displays has been adjusted to improve usability.
- (#5538) Secondary ranges for the Seraphim Sniper and the Loyalist are now displayed.
- (#5549) The breakoff distance for the Solace has been increased to enable proper bombing runs.
- Icon mods now apply immediately without requiring the next game to be loaded.
However, this change is made at the expense of disabling asset prefetching during the lobby, ensuring that icon mods behave as users expect.
- (#5537) Various bugs related to the Seraphim Sniper have been addressed.
Contributors
With thanks to the following people who contributed through coding:
- Clyfordv (clyf)
- RabidPope
- Jip
- BlackYps
- Balthazar
- Relent0r
- lL1l1
- Nyx
- Pokute
- Basilisk3
With thanks to the following people who contributed through binary patches:
- 4z0t
- hdt80bro
- Kionx
With thanks to the following people who contributed through model, texture, description and effect changes:
- HaoJun0823
- Jip
- Pokute
- lL1l1
- Basilisk3
And, last but certainly not least - with thanks to those that took part in constructive discussions:
- BuildMoreRadar
- CheeseBerry
- Sheikah
- Magge
-
-
Added a section about the incoming improvements to the mobile factory, where @clyf is kicking things off with significant improvements to managing the external factory directly from the primary unit!
-
-
Added a section about other note worthy changes.
-
-
The changes of the FAF Develop game type are now also available on the FAF Beta game type.
-
@jip said in Developers Iteration IV of 2023:
Other note worthy changes
Context based templates
- #5543 Add the ability to use the context of the build preview
It is best shown visually. See the pull request for a video. With this feature you can create templates that use the build preview as its context. As an example;
-
- imagine you have a radar as a build preview. If you hit tab (the hotkey to trigger the context based templates) then it turns into a radar that capped with power generators
-
- imagine you have a tech 3 air factory as a build preview. If you hit tab then it turns into a chunk of air grid
As mentioned at the start; this is best explained visually. See the pull request for a video.
- #5541 Make it easier to cycle through extractor / hydrocarbon plant templates when zoomed out
The radius that scans for deposits increases as you zoom out. It mimics the distance of the pixel-snapping behavior for extractor deposits.
Assist to copy the command queue of an engineer
- #5540 Adds another assist side effect that triggers the Copy orders functionality
The assist behavior can be a bit clunky at times. By copying the command queue you still 'assist' the original engineer but have all the advantages of not having to wait for the original engineer to start the construction.
Improvements to the score graph
- #5524 Improve responsiveness and performance of the score graph
With thanks to @Pokute the score graph is now in a good spot in terms of performance. It now populates the graph really fast, even after long games with a lot of players.
Improvements to anti-projectile weapon behavior
- #5518 Disable anti-projectile weapons after firing
Projectiles have a shooter cap. When a weapon locks on a projectile it adds towards the shooter cap. When the cap is reached no more weapons can lock on a projectile. This behavior is fine but there's a problem: weapons can lock on projectiles even though they are unable to fire. This can be due to many reasons, the most common being the reload time.
As a result a weapon can lock on a projectile during a (long) reload time and effectively prevent other weapons from being able to intercept the projectile. Other nearby weaponry would just remain idle.
This is now adjusted; an anti-projectile weapon is no longer able to lock on to a projectile while reloading. As a result anti-projectile weaponry is a lot more efficient at shooting down projectiles and they no longer appear to remain idle like they used to before.
This impacts both torpedo and tactical defenses.
Improvements to projectile collision detection
When a projectile intersects with multiple units at once it will usually pick the last unit. This was a bug; most commonly seen with the walls behind a point defense soaking up all the damage. As a result walls would work rather unreliably. The bug is most common units that are either very packed or with projectiles that have a very high velocity. One example being the Rhino.
This bug is now fixed - the unit that would be hit first takes the hit. As a result the walls in front of the point defense take the damage. It is now also possible for small non-hover units to hide behind walls as the wall will reliably soak the damage.
Walls working correctly sounds very awesome
-
-
@jip said in Developers Iteration IV of 2023:
Other note worthy changes
Context based templates
- #5543 Add the ability to use the context of the build preview
It is best shown visually. See the pull request for a video. With this feature you can create templates that use the build preview as its context. As an example;
-
- imagine you have a radar as a build preview. If you hit tab (the hotkey to trigger the context based templates) then it turns into a radar that capped with power generators
-
- imagine you have a tech 3 air factory as a build preview. If you hit tab then it turns into a chunk of air grid
Can someone please explain how I get this to work?
First off, I have "FAF Develop" selected as Game Type in the Create Game dialog.
Second, the feature as mentioned in "Developers Iteration III" does work - if I have, say, a radar already built or being built (not just queued) and I hover my mouse over it and press TAB (which is set to "Orders - Mouse Context > Cycle Templates"), a ring of 4 pgens will appear as a build preview.
I cannot however, get the behavior as described above. If I select an engineer, click on T1 Radar, and hit TAB, it only says "No templates available". At first I thought that I needed to create a template myself of the radar ringed by pgens, but even after creating that template, it still doesn't work.
Thanks in advance for any advice.
-
-
-
-
@zappazapper I missed your reply
Make sure you have the FAF Develop game type. Then make sure you have this hotkey assigned:
Then select an engineer and start the build preview of an applicable structure. In this example we use a tech 2 radar. Hit the hotkey and your build preview extends, similar to a template:
-
Updated the section about tactical missiles.
-
-
Updated the changelog
-
-
(#5543) Context-based templates can now trigger on your build preview:
Context-based templates no longer rely solely on the context of the mouse. With this change, they can also use the build preview as context to cycle through templates. For instance, if you have a Tech 2 Radar in the build preview, you can cycle to a build template that surrounds the radar with power generators. Similarly, if a Tech 3 Power Generator is in the build preview, you can switch to a build template that surrounds the power generator with air factories. These new templates can be edited, extended, or replaced just like the old ones.
What does "build preview" mean? Does that mean if I select a structure to build and have it on my cursor but have not place a build order yet?
-
@redx Yep
-
-
-
@robotcat said in Developers Iteration IV of 2023:
just don't tell anyone, shh
You're free to tell people. Here's the Discord link where people discuss a fix:
The author specifically mentions that nobody is allowed to make any changes without his consent. That would include changing the setup of the mod. The only thing we can do with the vault is respect that. What you do on your local system is up to you. As I wrote in the same post:
Personally, I take this as a reminder to appreciate software and assets with open source and/or Creative Commons licenses that permit people to create derivatives of the work.
-
It would be possible to distribute a tool that takes an original ASI setup file provided locally by the user and converts it into a local FAF mod or directly installs it into FAF. Since the tool would do this locally, the tool itself would not fall under licensing restrictions and would itself not distribute any ASI content.
So i would encourage to do it that way. It is probably not to hard to write a script that extracts ASI and converts/installs it into FAF, then just release the script. Of course users would still have to download both the script and the original ASI, but oh well.
This is what most applications do when they want to use unlicensed things. Its pretty much what FAF does with Supcom.