Developers Iteration III of 2023

Mobile factories

They have long been a (functional) myth and now they finally become part of the standard FAForever experience. The following units have a separate unit that acts as a build module attached to them:

  • Tempest (Aeon Experimental Battleship)
  • Fatboy (UEF Experimental Mobile Factory)
  • Atlantis (UEF Experimental Carrier)
  • Keefer Class (Aeon Carrier)
  • Command Class (Cybran Carrier)
  • Lavish (Seraphim Carrier)

The following units lose their mobile factory capabilities:

  • CZAR (Aeon Experimental Carrier)

The following units keep their original factory capabilities:

  • Megalith (Cybran Megabot)

We hope to include them in the future. At the moment they are not within reach to be finished any time soon.

The mobile factory is a separate unit. You can select it by clicking 'beyond the butt' of the units in question. As an example, these area's will select the mobile factory:

064a05b5-a64f-40f7-9491-af84ad6d6416-image.png

It is easiest to spot the location to click by viewing the command graph. The mobile factories are a separate unit and therefore they have a separate command queue.

All hotkeys that work on factories also work on mobile factories. Pausing the main unit will also issue a pause command to the mobile factory.

All mobile factories have a reduced build rate. All carriers have the same build rate of a tech 3 air factory. The Atlantis has 150% of the build rate of a tech 3 air factory. The Fatboy has 150% build rate of a tech 3 land factory. The Tempest has 150% of the build rate of a tech 3 naval factory.

The Fatboy can not build underwater.

Deprecations

There are no known deprecations.

Conflicts

There are no known conflicts.

Credits

With thanks to @MadMax for the changes that were required for the meshes. With thanks to @Evildrew for pointing me to one previous implementation. None of the code made it in this implementation but we did apply a similar idea.

A work of art is never finished, merely abandoned

Context based templates

Build templates have always felt troublesome to access. All of that changes with the introduction of script-generated build templates! Unlike the other changes you do not need to play on the FAF Develop game type in order to experiment with them. They are available as a UI mod which can be found in the vault:

ce126e9c-7d1a-49d2-9f38-d9f958fde77f-image.png

Once enabled you can find a new hotkey:

ff9c2d87-afc6-40cf-bc92-02fd18bca9dd-image.png

The feature allows you to cycle through templates depending on the context of the mouse. It filters the template based on:

  • The unit (category) that you're hovering over
  • Whether you're hovering over deposits
  • Whether you're hovering over land
  • Whether you're hovering over water

The cycling happens through a hotkey. For new profiles this hotkey will default to tab

There is also video material on this feature:

You can learn more about why we're building this feature on Github

Deprecations

This will deprecate the Automatic Extractor Selection feature, it will no longer be available. This feature will deprecate a large chunk of the Automated Structure Ringing feature. It will be reduced to only support the ringing of mass storages around extractors. Everything else will be replaced by the new context based templates.

Conflicts

This feature conflicts with the UI Party mod. The mod 'shrinks' the build template to a single unit. This is a bug with the mod that you can report to the author

Credits

With thanks to @CheeseBerry , @Tomma , @Nex , @MostLostNoob , @FemtoZetta , @Sheikah, @ComradeStryker and @Rezy-Noob for their time and effort in creating a constructive environment to discuss the feature at depth

A work of art is never finished, merely abandoned

Distribute orders

You can now distribute (or: spread) any order type! With thanks to @Strogo, KionX and RTD who made an engine patch to make this possible. This new implementation intends to improve upon the old spread attack implementation. We're looking forward to hear your feedback on how it works.

A non exhaustive list to what orders can be distributed with the new implementation:

  • Move orders
  • Attack orders (on props, units or ground)
  • Aggressive move orders
  • Assist orders
  • Guard orders
  • Capture orders
  • Reclaim orders (on props or units)
  • Patrol orders
  • Sacrifice orders
  • Build orders

On top of that the glitch / cheat capability that the old spread attack exposed is no longer available. No more UI automation where we as a community choose to not allow.

2cf6ad72-55d9-44b4-abe8-ab3af4eb57ec-image.png

96177713-3da3-4e3a-91c7-9e97f48c83d6-image.png

Deprecations

This will remove the old spread attack key binding and the functionality of it. All (UI) mods that relied on that functionality will no longer function. This includes but is not limited to the Disperse move UI mod.

Conflicts

The Superior FAF Experience mod is not compatible. The author has been informed about this

Credits

With thanks to @Nex , @CheeseBerry , @Rezy-Noob , @ComradeStryker , @Sheikah , @maudlin27 , @Strogo , @MostLostNoob , @MadMax , @Prohibitorum / @IndexLibrorum and @DerpFAF for their time and effort in creating a constructive environment to discuss the feature at depth

A work of art is never finished, merely abandoned

Advanced map shaders

One of my original goals as Game Councilor Lead was to improve the graphics of the game. With thanks to @Blackyps the past two years we've made several improvements and significant improvements are coming our way still. With this developers iteration we finally have a workable version of the new, advanced terrain shaders. They range from small changes that fixes various bugs to more advanced changes such as being able to bake in properties into the terrain.

With this developers iteration we introduce three new terrain shaders:

  • Terrain001
    Re-interprets the upper albedo as map-wide normals (red channel is x-direction, green channel is z-direction) and map-wide shadows (blue channel)
  • Terrain002
    Similar to Terrain001, except that it also fixes the inconsistency of the mask usage for normals and albedo stratum textures
  • Terrain003
    Similar to Terrain002, except that it also provides map-wide albedo and map-wide specular properties

With that last shader the following in-game (without Fog of War) screenshots are taken:

a85f0a15-e1cc-4376-b009-2af2cc978f18-image.png

2fcf0921-609e-49e4-8a81-e696034b0613-image.png

4657888f-d316-4616-8eef-08276acc2f8f-image.png

8664b3c3-994b-4ef2-bbf4-7395a6c779c3-image.png

You can view the new shaders yourself by downloading the map:

30ab457f-31d3-4d3c-8427-9666acd6deeb-image.png

And then hosting a game on the FAF Develop gametype:

10471fcc-21fe-45af-89c3-de7142966009-image.png

We'll document how to make the changes to your map so that you can apply these new techniques too. These techniques heavily rely on procedural software such as Gaea or World Machine. Luckily, with thanks to @IndexLibrorum the mapping section has been improved significantly and there's a whole section with Gaea related tutorials to help you get started.

A work of art is never finished, merely abandoned

Other features

  • #5321 Pausing engineers will also pause their reclaim progress on props
  • #5300 Score graph now uses square root scaling to make it easier to view the first few minutes
  • #5326 Better use of CPU resources to reduce frame stuttering for CPUs with 6 or more logical units

In practice a lot of CPUs have 6 or more logical units. If we detect your CPU has sufficient cores we change the affinity of the process to ignore the first compute core. The first compute core is often used by processes, including the OS. When the game ignores the first compute core the render thread (that is otherwise locked to the first compute core) has more room to navigate and is less influenced by other processes and the OS. As a result you have less stutters and overall better frametimes.

  • 9e73421 On average 5% performance improvement (sim and ui) across the board

A free Cybran Cookie for the individual that can explain how it works without asking the assembly magicians

  • 120d32 Add a new hotkey to load all units of your selection into the transports of your selection
  • #5333 Add tread crushing damage to the Fatboy
  • #5367 Add the standard Cybran build effect to the Megalith
  • #5362 Add links to the Wiki to explain hotkeys in the key bindings menu
  • #5360 Speed up the death animations of a wide range of structures

Bug fixes

  • #5317 Bombers with multiple projectiles are now less likely to miss their target when micro'ing them
  • #5294 Gifted structures now properly copy the orientation
  • #5335 Fix a bug that occurs with the navigational mesh for non-square maps
  • #5329 Disable intel and maintenance costs of units inside a carrier
  • #5374 Fix upgrading structures losing their control groups
  • #5371 Fix invulnerable props being removed when building on top of them
  • #5371 Fix light particles when building structures being visible through the fog of war
  • #5343 Fix a bug that could cause the simulation to freeze

A work of art is never finished, merely abandoned

# Game version 3767 (17th of September, 2023)

Please refer to the notes of versions 3765 and 3766 for the full patch notes.

With gratitude to all those who took the time to report issues,

Jip

## Features

- (#5427) Introduce a basic visualizer of the performance metrics that we gather as players play the game.
- (#5448) Generate additional metadata when generating markers for AIs.
- (#5422) Introduce a resource deposit grid for the AI.

This grid allows for computationally efficient lookups for the AI to scan the environment for resource deposits.

## Bug fixes

### Beams that miss

We examined all tech 1 and tech 2 naval units and found that some had the ability to reliably evade beam weapons, with one particular submarine even doing so without moving.

The Seraphim destroyer should now be able to reliably hit all tech 1 and tech 2 naval units with its beam weaponry.

Additionally, the Galactic Colossus can no longer evade the beams and should now be hit reliably, especially by the Spiderbot.

### Other bug fixes

- (#5437) Fixed units being able to miss the Galactic Colossus while it is being constructed.
- (0883d0c) Fixed errors when an AI would be defeated.
- (0fecc7d) Fixed tree groups breaking when building structures.
- (#5412) Quickly fixed an issue where coop had trouble understanding the mobile factories.
- (#5441) Fixed the AI misinterpreting blank markers.

## Contributors

With thanks to the following individuals who contributed through coding:

- Relent0r
- Jip
- Eddie
- Clyfordv (Slicknixon)
- Dhomie (Grandpa Sawyer)

With thanks to the following individuals who contributed through model, texture, and effect changes:

- MadMax
- Jip

And last but certainly not least, with thanks to those who took part in constructive discussions:

- A-Army
- Yolo-

# Game version 3766 (9th of September, 2023)

See the patch notes of 3766 for the full patch notes.

With thanks to all those that took the time to report issues,

Jip

## Features

### Capping of a structure

In the previous patch, we reduced the ability to cap structures by assisting a structure. Thanks to an assembly patch by 4z0t, the technical reasons for this reduction have been fixed. As a result, we are now reintroducing the feature with improvements.

The feature now sorts the build orders by the distance to the nearest engineer relative to the structure they are assisting. This helps reduce pathfinding issues. Additionally, the feature now applies a single build order to all engineers, which reduces the framerate impact that players previously experienced.

Upon release, players can enable the following assist-to-cap behaviors through the game options:

- Cap an extractor with mass storages
- Cap an extractor with 4 or 8 mass fabricators
- Cap a radar or tech 2 artillery with tech 1 power generators
- Cap tech 3 or experimental artillery with tech 3 power generators

### Other features

- (#5398) Introduces a hotkey to issue an upgrade to the structure currently under the mouse cursor
- (#5394) Introduces a hotkey to cap the structure currently under the mouse cursor
- (#5397) Introduces a hotkey to select all units consuming resources
- (#5407) Introduces the generation of Naval Area markers for AIs

The average AI is now more likely to construct naval factories.

- (#5405) Improvements to the Mods Manager

No more text bleeding, and the URL dialog is temporarily removed when you open links in the lobby.

## Bug fixes

- Exclude external factory unit from the unit restrictions menu
- Fix Solace dropping the torpedo salvo way behind the target
- Fix a bug where the build preview of templates would reset every few seconds

This was a mistake on our end. With this fix, the game is more compatible with UI mods such as Eco Manager and UI Party again

- (#5405) Fix the bleeding of water ramps on sharp cliffs

## Contributors

With thanks to the following people who contributed through coding:

- Gordenwunderlich / Nex37
- Jip
- Hussar
- BlackYps

With thanks to the following people who contributed through binary patches:

- 4z0t
- Strogo
- KionX
- RTD

And, last but certainly not least - with thanks to those that took part in constructive discussions:

- Babel
- Valigo
- MostLostNoob
- LoliNekoTrap
# Game version 3765 (2nd of September, 2023)

The third developer's iteration contains more new features than any release in the past two years. It opens up new ways for players to approach the game.

However, some features are being left behind. One of the most notable changes is the removal of the feature that allowed players to hover over a deposit to initiate the build mode for extractors or hydrocarbon plants. This feature was computationally expensive and is no longer part of the standard FAForever experience. However, it is still available as a UI mod for those willing to accept the performance penalty. You can find the 'Hover to Build' UI mod in the vault.

Another feature with reduced functionality is the ringing feature. You can now only ring extractors with storages, while all other options are integrated into the new Context-Based Templates feature. You can read more about this in the features section. This change was made because the old ringing feature was computationally expensive and could cause stutters and frame drops for players. Therefore, it has been limited to its most commonly used functionality: the ability to ring extractors with storages.

Lastly, any functionality that relied on the old spread attack implementation will no longer be operational. The previous implementation was susceptible to abuse and could even crash the game. We hope that the new implementation will better serve your needs as a player.

With appreciation towards all the contributors that made this iteration possible,

Best regards,
Jip

## Features

### Mobile Factories

A long-standing functional myth has now become a part of the FAForever experience! All Tech 3 Aircraft Carriers, plus the Tempest, the Atlantis, and the Fatboy, can now build using a separate build module attached to the unit. The build module is located at the back of the unit. Clicking just over the back (on land/water) will select the build module. All factory hotkeys interact with these build modules.

We're open to ideas from players on how we can further improve this feature, especially in terms of user interactions.

The Megalith remains unchanged, while the CZAR temporarily loses its ability to build. We were unable to finalize it, but we hope to include it in a future patch.

### Advanced orders

We're enhancing existing advanced orders and introducing new ones. The most notable change is the complete reimplementation of the Spread Attack feature from the ground up. This wouldn't have been possible without the dedicated work of Strogo, RTD, and KionX.

All of the mentioned orders are linked to hotkeys. In the key bindings menu, you'll find new world-wide-web icons next to hotkeys. If the world-wide-web icon is present, you can click on it to learn more about the hotkey on the FAForever wiki. We highly recommend checking out the Wiki; it even includes short videos that can explain concepts better than a thousand words ever could.

The following hotkeys have been improved or added:

- Distribute orders (formerly Spread Attack)
- Distribute orders (for the unit your mouse is hovering over)
- Copy orders (for the unit your mouse is hovering over)
- Load into transports
- Filter engineers
- Cycle templates (see below: Context-based templates)

### Advanced map shaders

We're excited to announce the introduction of advanced map shaders that map authors can now apply to their new maps. Existing maps will remain unchanged. These new shaders enable you to incorporate properties such as shadows, ambient occlusion, normals, and albedo textures directly into the terrain. This integration makes them an integral part of the rendering pipeline, rather than applying them on top of the terrain, as decals typically do.

### Context based templates

An alternative use of the build templates system! With this new feature, you can cycle through build templates that adapt to the context of your selection and your mouse location. FAForever includes a set of default templates for this feature. The functionality is fully customizable, allowing you to remove existing templates or add your own to cycle through via UI mods.

You can find the hotkey by searching for 'Context.' It defaults to 'Tab' for new players or those who have reset their keybindings.

### Other features

- (#5321) Pausing engineers will also pause reclaiming props.
- (#5300) The score graph now uses square root scaling to make it easier to view the first few minutes.
- (#5326) We've improved CPU resource utilization to reduce frame stuttering for CPUs with 6 or more logical cores.

In practice, many CPUs have 6 or more logical cores. If we detect that your CPU has sufficient cores, we change the process affinity to ignore the first compute core. The first compute core is often used by processes, including the OS. When the game ignores the first compute core, the render thread (which is otherwise locked to the first compute core) has more room to operate and is less influenced by other processes and the OS. As a result, you'll experience fewer stutters and overall better frame times.

- [9e73421](https://github.com/FAForever/FA-Binary-Patches/commit/9e734211cbec22e9ce4696cf3c9343bdda54fdf5) On average, there is a 5% performance improvement (both in simulation and UI) across the board.
A free Cybran Cookie for anyone who can explain how it works without asking the assembly magicians.

- [120d32](https://github.com/FAForever/fa/commit/120d329af238ef93d2c054b444a2f704febb6155) Added a new hotkey to load all units of your selection into the transports of your selection.
- (#5333) Added tread crushing damage to the Fatboy.
- (#5367) Added the standard Cybran build effect to the Megalith.
- (#5362) Added links to the Wiki to explain hotkeys in the key bindings menu.
- (#5360) Sped up the death animations of a wide range of structures.

## Bug fixes

- (#5317) Bombers with multiple projectiles are now less likely to miss their target when micromanaging them.
- (#5294) Gifted structures now properly copy the orientation.
- (#5335) Fixed a bug that occurred with the navigational mesh for non-square maps.
- (#5329) Disabled intel and maintenance costs of units inside a carrier.
- (#5374) Fixed upgrading structures losing their control groups.
- (#5371) Fixed invulnerable props being removed when building on top of them.
- (#5371) Fixed light particles when building structures being visible through the fog of war.
- (#5343) Fixed a bug that could cause the simulation to freeze.

## Contributors

Unlike previous changelogs we no longer list the commits of each individual contributor.

With thanks to the following people who contributed through coding:

- RabidPope
- Gordenwunderlich / Nex37
- Hussar
- BlackYps
- Basilisk3
- speed2
- Grandpa Sawyer
- Hdt80bro
- Maudlin27
- Relent0r
- Jip
- Deribus

With thanks to the following people who contributed through binary patches:

- 4z0t
- Strogo
- KionX
- RTD

With thanks to the following people who contributed through model, texture and effect changes:

- MadMax
- Deribus
- Jip

And, last but certainly not least - with thanks to those that took part in constructive discussions:

- CheeseBerry
- Tomma
- Nex37
- MostLostNoob
- FemtoZetta
- Sheikah
- ComradeStryker
- Resistance
- Maudlin27
- MadMax
- IndexLibrorum
- Derp
- Deribus
- Magge

A work of art is never finished, merely abandoned

Reserved to give gg's

Added a section about the distribute orders feature.

A work of art is never finished, merely abandoned

@jip said in Developers Iteration III of 2023:

Distribute orders

You can now distribute (or: spread) any order type! With thanks to @Strogo, KionX and RTD who made an engine patch to make this possible. This new implementation intends to improve upon the old spread attack implementation. We're looking forward to hear your feedback on how it works.

...

Apologies if I'm being dumb but I've tried using this and don't understand why it's not working - perhaps someone can put me straight

My assumption is I can select a bunch of units, issue a sequence of orders to all of them as a group, then press this key and it should change the order into a separate order for each of the selected units to do part of the task (e.g. as shown in the screenshot, a long wall will be broken into short sections, each one done by a different engineer).
The same as how Split Attack works.

I select a group of engineers, give a series of orders, then press the key I have assigned (which is ` [backtick], if that matters)
It just cancels the original series of orders and all the engies immediately go idle...
I've tried holding down Shift after giving the orders and whilst pressing the hotkey, doesn't make any difference.
How is the hotkey supposed to be used? Can someone spell it out....

Thanks

@guy Do you have the logs of that game and maybe the replay id?
Did you have any mods active?
If so, can you reproduce this in a sandbox game without any mods?

@guy You're playing on the wrong game type:

0191ad13-8360-47fe-9a35-1e4a90c49a10-image.png

The hotkey shows up but is not functional on the FAF game type. It is functional through the FAF Develop game type, you can change the game type as you host a game:

e9021702-e994-4fc3-9aa8-325f726e1bcc-image.png

The feature becomes functional on the FAF game type after the release on the 26th of August

A work of art is never finished, merely abandoned

@jip said in Developers Iteration III of 2023:

@guy You're playing on the wrong game type:

The hotkey shows up but is not functional on the FAF game type. It is functional through the FAF Develop game type, you can change the game type as you host a game:

The feature becomes functional on the FAF game type after the release on the 26th of August

Oh, didn't realise, makes sense, thanks

Just to make sure, I should disable UI Party if I host a develop lobby?

No, you should disable it if you want to make use of context-based templates. It is not compatible with that. Do note that the old spread attack implementation is no longer available on FAF Develop, you'll need to remap the hotkey

A work of art is never finished, merely abandoned

Does the new spread move also deprecate the Disperse Move mod?

@snaggs
@jip said in Developers Iteration III of 2023:

Deprecations
This will remove the old spread attack key binding and the functionality of it. All (UI) mods that relied on that functionality will no longer function. This includes but is not limited to the Disperse move UI mod.
yes

My bad, missed that somehow.

"#5321 Pausing engineers will also pause their reclaim progress"
Can we please not do that? I often want my engies reclaiming regardless of if they are paused or not. For example, you are in emergency, you want to build something asap, you select all engie on map, you pause, then unpause those engies which are building what you want. With this change you would also need to unpause all reclaiming engies. Also there is a feature where placing order to build something on reclaim pile would cause engies to reclaim it at high speed, which is useful on like desert arena, but i think it would cause problem on other maps too, imagine placing fac on some trees, and then pausing engies, they wouldnt even reclaim trees so when you unpause them, they gonna reclaim first which will cause some pathing issue etc. which is annoying.
If you overflow mass reclaiming its just skill issue and you should have planned accordingly, so now you have to waste mass or redo your queue.

Skill issue

@tomma said in Developers Iteration III of 2023:

you select all engie on map, you pause, then unpause those engies which are building what you want.

I'd argue that this is not the best approach 😛

@tomma said in Developers Iteration III of 2023:

but i think it would cause problem on other maps too, imagine placing fac on some trees, and then pausing engies, they wouldnt even reclaim trees so when you unpause them, they gonna reclaim first which will cause some pathing issue etc.

This sounds hypothetical. The feature is live on FAF Develop, give me a replay id where you experience unusual pathing issues

I understand that this is a change in behavior that people may get used to. But pausing an engineer should pause it. It is what players expect that aren't familiar with the quirks of FAForever. There's not just downsides, also upsides. It enables you new interactions, like being able to preserve your attack move commands by pausing individual engineers when you're about to fill your storage. Or being able to preserve the queue by being able to pause the engineer instead of hitting stop

A work of art is never finished, merely abandoned

Could the engi 'dont reclaim when paused' behaviour be made an optional setting so people could opt out of the behaviour? I make use of the pause option similar to Tomma where if I'm e.g. power-stalling I'll want to quickly select engineers on-screen and pause them, so may occasionally pause ones that are reclaiming.

Alternatively could there be a new pause hotkey that pauses every unit except engineers with a reclaim order? I'm not sure if this would be feasible though - i.e. you could have it not affect engineers currently reclaiming, but I don't know if it's possible to analyse the command queue to identify cases where an engineer has a move order followed by a reclaim order, or has a reclaim order on a target outside its build range