Game version 3741

26

Upcoming features

Some of the upcoming features, in a new format. The changelog can be difficult to read, over the next few days we'll be posting new features of the game in a friendly format.

1. Tractor beams of the Galactic Colossus

These never really did function! But soon, they will! We're working on it on Github where you can preview the working behavior via the attached video.

4b109c5c-7378-47d6-b2a3-ba5ec03fa4f8-image.png

2. Tactical missile defenses

They've always felt a bit underwhelming - and that is because they were. They typically overkill their targets, causing them to be unreliable at best. We're working on fixing this on Github, where you can preview the working behavior via the attached video. Finally A tactical missile defense can properly counter a tactical missile launcher that fires at the same rate and takes only one strike to take down.

fd9f5733-a423-4d29-a027-a2d3f22f3f8f-image.png

3. Game results

A brand new implementation on how the game results are being tracked is available on FAF Develop! Now that we have all the files in the repository we can finally properly investigate what is going on. And with that investigation an alternative system of determining the game results has been implemented. This system has already been live for about a week - as the date of merge on the pull request suggests!

I'm quite confident that this:

  • Gets rid of the 'draw bug' once and for all
  • Reduces the amount of 'unknown results' to practically 0

The previous implementation was a fix over a fix, over a fix, over a ... bug. While they didn't manage to tackle the core issue that showed up all over the base code, and apparently also in the game results computation. As a result, one army was sometimes not considered defeated until the next tick - the source of the draw bug. It is quite technical, I won't dive further and keep it brief.

Note that when you draw you can still lose or gain rating: the idea is that if you draw you should be of equal rating, and therefore the players 'move towards each other' rating-wise.

4. Projectiles that hit but miss

There are a lot of situations where projectiles hit (read: collide) with a unit, but they do not deal damage to that unit. This is a consequence to how the engine works: the collisions are computed at tick n, the consequences of the collisions are computed at tick n + 1. One tick later, the unit may have moved so far away that it can miss area damage, especially when the radius of the area damage is low. The full fix, along with videos can be found on Github.

To describe it visually:

00ec191d-91d6-4b74-8188-3d3889e5e2fc-image.png
A scout at maximum velocity, red marks the old damage location where as blue marks the new damage location. The collision boxes are also rendered (in blue), clearly showing that the old damage location is no longer in reach of the spy plane

Note that this primary impacts two type of situations:

  • Very fast units (> 15 maximum movement speed, usually planes)
  • Projectiles with a very small damage radius (< 0.5, the average land units moves at a speed of 5)

5. Range rings and performance

With thanks to @RutreD and @Kionx (who's not on the forums) another engine patch has been made and is available on FAF Develop! This patch improves the performance of range rings, with up to 20% to 50% more frame rate than before when rendering plain vision and range rings!

As an example, while having used the following console commands:

  • ShowStats
  • sc_VerticalSync 0
  • sc_FrameTimeClamp 0

You can reproduce these results yourself - I highly encourage you to do so and report back 🙂 !

66cc0e35-abf2-4b86-b254-02447cd45acd-image.png
Current FAF game type, looking at 500 asf: ~150 fps

cf98f9a0-ce41-45c6-ba67-bcb10e1afd54-image.png
Current FAF Game type, 500 selected asf: ~100 fps

92bd0a25-9d1a-4cb8-8a3f-147ea58be17d-image.png
Current FAF Develop game type, looking at 500 asf: ~250 fps

69882a09-9e45-4abf-b52e-0fc9e829a867-image.png
Current FAF Develop game type, selected 500 asf: ~150 fps

6. And a lot more - see the patch notes below!

A work of art is never finished, merely abandoned

# Game version 3741 (21st of August, 2022)

Another month, another patch! With pride we present the next version of the game where we slowly start
tackling long-standing issues that we've been taking for granted. Among them the tactical missile
defenses that feel underwhelming, broken weapons such as those of the Galactic Colossus and beam
weapons being unable to hit reliable. But soon no more - we're tackling them one by one!

Not only that, from a development perspective we've made great strides. The amount of annotated
code has exploded, allowing our extension to give proper suggestions and hints. Step by step,
pull request by pull request we slowly turn the code base into one that supports modern programming
features such as being able to jump to a definition and we now provide sane suggestions and snippets.

Let alone the improvements to the infrastructure surrounding FAF. With the cache servers of Cloudflare as
our backbone the distribution of maps, mods and game assets have never been better.

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

Jip

## Bug fixes

- (#4002) Fix issue with single-item combo list

- (#4016, #4080) Re-implement game results
    A complete re-implementation of how the game results are tracked. This should fix the famous
    draw bug (where one player wins and the other loses) and in general there should be less
    unknown game results.

- (#4063) Fix targeting bones of static shields
    Should make them easier to hit with low-arc projectiles and beams

- (#4058) Fix units being able to evade area damage
    Due to how the game processes the game over several steps the area damage could be applied too
    late, allowing really fast units to already be out of the area of damage, even though the
    projectile had a direct impact. This is particularly noticeable for spy planes, where they
    are able to 'sustain' a lot of SAM fire while barely receiving a scratch in damage.

    All in all, this makes the game feel a lot more consistent. A hit should be a hit.

- (#4058) Fix beam weapons being unable to hit all air units
    Due to how the game processes beams there's a possibility that the beam aims 'in front' of the
    unit, causing it to miss. This is fixed by giving the unit (air units, for this change) a collision
    box (or sphere) that is of sufficient size. As a result, the Seraphim Lighting Tank (T3 MAA) no
    longer requires its hack, and because of that can no longer pierce shields :).

- (#4071) Remove smoke ring on underwater SACU death

- (#4074) Disable blue shield bar of shields when turned off

- (#4079) Remove problematic code of JSON library
    Could occasionally cause a game crash

- (#4078) Adjust collision hitboxes of all transports
    Allows their cargo to receive (splash) damage more consistently and makes the transports easier to
    hit when they are landed.

- (#4082, #4083, #4084) Fix target bones - Seraphim Land units
    Similar to #4058 and #4063, makes these units easier and more consistent to hit when firing with
    beam weapons. We'll slowly tackle all of the units in the base game, but this is a consuming process!

- (#4093) Add guard to check if dummy weapon of shields are de-allocated

- (#4088) Fix stack overflow in UI when units are assisting each other

- (#4102) Adjust collision box of Megalith due to build animation
    Allows units to consistently hit the Megalith while it is being constructed

- (#4110, #4109, #4160) Add guards to prevent execution when c-object is de-allocated

- (#4103) Attempt at fixing a shield assist bug that could send all your resources into limbo
    Particularly relevant for hives when they are assisting shields that are also taking damage

- (#4121) Rowey fixing Jip
    What would we be without him!

- (#4112) Attempt to fix the save / load functionality of the game
    Long story short - we tried applying some tricks to improve performance a while ago and those
    did not work anymore after saving and then loading in the game. As a consequence, after loading
    the game was working with the wrong data causing all sorts of issues!

    We hope this fixes it, but if you still have issues with saving and loading then you can
    contact us via Discord or the forums.

- (#4113) Reduce projectile speed of air to air weapons
    There's a collision bug that causes the game engine to pick the furthest collision if a projectile
    collides with multiple instances at the same time. As a consequence, it was difficult for interceptors
    to hit landed air units and in particular transports. By reducing the projectile speed (and increasing
    the size of the hitboxes with #4078) we try and solve this issue consistently for the base game

- (#4115) Prevent manual attack move (via the UI) of clearing structure queues

- (#4125) Fix Solace not having the bomber category

- (#4120) Fix the enhancement removal dialogue being stuck

- (#4132) Fix mass of wreckage of Kennel

- (#4144) Fix the death animation of the tempest

- (#4140, #4152) Fix rare occasions when the statuos quo of HQs are not updated properly
    In particular, when gifting due to full share and when directly destroying the unit

- Fix beam weapons not disabling themselves (#4154)

## Features

- (#4040, #4043, #4044) Re-implement the tractor beams of the Galactic Colossus
    Re-implements the tractor beams of the Galactic Colossus from the ground up. They finally work
    as intended and can no longer remain stuck on invalid targets. Includes a slight boost to the
    effects, enjoy toying with the physics!

- (#3893) Add shooter cap to tactical missiles
    Prevents the TMDs from overshooting their targets, as a result TMDs feel a lot more consistent
    and are in general a lot stronger.

    Fixes an issue with multiple SMDs being unable to stop multiple strategic missiles.

    Adds callbacks to units when their missile is intersected by a shield, a defense or by terrain.

- (#4018) Improved Mod Manager UI  
    Improves the mod manager by introducing a search bar, being able to mark mods as favorite and being
    able to sort mods on their type. Introduces the capability of interpreting URLs from the `mod_info.lua`
    file, allowing you to send people to a github, gitlab, bitbucket, sourceforge page or to a topic
    on the forums.

- (#3927) Allow jammers to recreate their jamming blips
    Fixes the issue of jamming blips being gone forever once they were scouted. With this implementation,
    after fifteen seconds of being in the fog of war the jamming blips should re-emerge on their own.

- (#4114, 44fd74) Alternative CPU benchmark pt. 1 
    The first of two parts on creating a new CPU benchmark. The current benchmark tries to run some computations
    in the lobby. This has shown to be inaccurate. The new benchmark takes samples during the game and stores the highest
    possible sim rate you can run in combination with the total amount of units. Initial data points suggest that this
    is highly accurate and is even capable of detecting the throttling of laptops.

    The next part will replace implementation of the CPU score in the lobby. That will be part of the next release. This
    guarantees that everyone has some data to start off with.

- (#3650, #4158) Improve team color mode
    Allows players to adjust the colors used in team color mode. With it, we can finally support people with color blindness.

    Players can choose their own colors by right clicking the team color mode button.

- (#3916) Introduce reclaim statistics for engineers
    The game now keeps track of the reclaim statistics of engineers. They are shown where you'd usually see the veterancy of
    a unit. You can not see the statistics of allied units, just your own. Works for observers (and casters).

    This is the start of a new era where we'll be introducing statistics gradually. They help players with understanding the
    value of their actions - as an example, an engineer reclaiming trees on Seton's Clutch can quickly become responsible
    for hundreds (if not thousands) of additional mass.

## Performance

- (#3932, #4011) Remove unused unit blueprint tabels related to veterancy
    Reduces total amount of allocated memory

- (#4003) Remove collision shape of the Cybran Build Bots

- (#3995, #4000, #3995) Refactor effect utilities pt. 1, 3 and 4

- (#4073, #4076, d86021) Optimize vision and range-ring shaders
    Includes an engine patch - significantly reduces the impact of vision and range rings on your FPS.

- (#4064, 84f68f, 9fd987, 647bdfe) Reduce memory allocations for when bombers fire their projectiles
    Significantly reduces the amount of table allocations when we correct the trajectory of a
    bomber in Lua.

- (#4111) Reduce memory impact of weapons

- (#4141) Reduce number of pre-allocated trashbags for units

- (#4140) Remove remainders of an experimental setup for caching data

- (#4037) Implement alternative, less resource-hungry vision entities
    Used for example by the lobo - the tech 1 UEF mobile artillery

## Annotation

- (#3936) Annotate and refactor layouthelpers.lua
    Improves performance of UI functions that are used by almost every UI element

- (#4009) Annotate campaign related functions pt. 2

- (#4021) Cleanup annotation of engine documentation

- (#3975, #4023, #4086) Add annotation support for blueprints

- (#4049) Annotate /Engine/Sim.lua creation functions

- (#4050) Annotate /engine/Sim damage functions

- (#4057) Annotate engine/Sim.lua

- (#4053, #4055, #4054, #4056) Annotate engine/Sim/

- (#4041) Annotate categories

- (#4047) Conform /Engine/Sim/ to Moho

- (#4039) Annotate entity.lua

- (#4034) Annotate engine/core.lua

- (#4051) Annotate /engine/Sim army functions

- (#4052) Annotate command functions  

- (#4065) Annotate scenario framework pt. 2

- (#4106) Annotate inheritance of all remaining unit classes

- (#4118) Add annotation to ignore some file specific non errors

- (#4116) Annotate code of all scripts in the editor folder

- (#4038) Annotate cAIBrain and AI related structures / functions

- (#4126) Fix annotation for classes

- (#4127, #4128, #4129, #4148) Annotate missing intermediate unit classes

- (#4130) Annotate defaultunits.lua

## Campaign

- (32d97d, f555cb, 5d0802, 4ad7f8) Various small improvements to the campaign AI (base managers)

- (439757) Fix the protect objective breaking when given dead units

- (7f6a4e) Simplify base manager engineer patrol
    When the patrol path was generated, there was a logic to move instead of patrol if the reclaiming was disabled on
    the base. That got removed since just moving engineers around does nothing. So it's either patrol or nothing.

- (26bcee) Fix base manager rebuild counter
    Rebuild structure counter was deecremented even for spawning units. Meaning that that AI would not rebuild at all,
    while it was supposee to be rebuilding once.

- (fa1448) Update base manager rebuild data
    Used for counting how many times to rebuild stuff, based on difficulty. Some of the names were wrong and
    the list was kinda incomplete.

- (8e167b) Fix base manager sometimes not upgrading factories
    Upgrade thread was checking for IdleState, but if the factory that was suppose to be upgraded was grabbed first
    to assist other factories in the base, it would never be idle.

- (945df8) Simplify T3 mobile AA builder
    Uses faction convert isntead of separate platoons, since the AA exists for all factions.

- (f65240) Fix PlayerDeath cam unlocking input too early
    Input is always unlocked when the final popup to end the mission shows up.

- (8793ef) Add game speed into objectives UI
    Next to time, just like normal score panel

- (09a829) Improve TransportPool
    Adds MoveRoute and MoveChain to add more control over movingthe transports

- (#4092) Fix the guard return radius of naval units  
    Prevents them from wandering off, taking on quests - finding loot and end up dying because they're on their own chasing
    their dreams.

- (#4155) Improve the balance of some of the adjusted mechanics
    Such as the tactical missile defense improvements and the tractor beams of the Galactic Colossus


## Other changes

- (#3952) Update AI-related categories for the Cybran experimentals

- (#4032) Update AI-related categories of Obsidian

- (#4030) Update AI-related antiair and antinavy categories of Aeon Experimentals

- (#4029) Update AI-related antiair and antinavy categories of Seraphim Experimentals

- (#4028) Update AI-related antiair and antinavy categories of UEF Experimentals

- (#4036) Update AI-related categories of engineers

- (#4035) Update AI-related categories of ACUs

- (#4031) Update AI-related categories of navy

- (#3851) Reduce amount of unfinished buildings for the AI
    This is a difficult one to tackle, but what happens is that buildings remain unfinished because there
    is a nearby threat to the ACU. The ACU attempts to defend, but then doesn't always continue what he
    started previously

- (#3971) Cleaning up of files

- (7ff888) Fix name of operational AI (related to campaign)

- (#4033) Reduce amount of trees on fire at the start of the game  

- (#4070, #4100) Add unit utilities
    Step-up work to make sacrifice work properly again

- (#4117) Refactor # -> -- for original performance testing scripts

- (#4122) Fix duplicated functions and typo

- (#3910) Refactor BuffAffectsUnit to be easier to mod
    Previously all the functions (that apply the buff) were scoped in another function.

- (#3783) Improve code style of common UI elements

## Contributors

Hdt80bro: #3936, #3995, #4000, #3995, #4049, #4050, #4053, #4041, #4047, #4055, #4054, #4071, #4051, #4052, #4056, #4079,
    #4057, #4065, #4070, #4086, #4064, 84f68f, 9fd987
Rowey: #3932, #3971, #4117, #4116, #4122, #4127, #4128, #4129, #4130, #4132, #4148
Maudlin: #3952, #4032, #4030, #4029, #4028, #4036
Uveso: #3851, #4080
speed2: 7ff888, 32d97d, f555cb, 5d0802, 4ad7f8, 439757, 26bcee, fa1448, 8e167b, 945df8, f65240, 8793ef, 09a829
Jip: #4011, #4003, #4016, #4009, #4021, #4023, #4033, #4040, #4044, #3893, #4058, #4039, #4034, #4074, #4082, #4083, 
    #4084, #4093, #4100, #4110, #4106, #4109, #4112, #4113, #4114, #4125, #4111, #4038, #4144, #4141, #4140, #4152, #4037,
    #3916, #4154, #4158, #4156, #4159, #4160
Ejsstiil: #4002
hahn-kev: #3975, #4118, #4126, #4128
hussar-mtrela: #4018
SpikeyNoob: #3927
4z0t: #4088, #3783, #4120
KionX: #4073, #4076, d86021, 44fd74, #8
Penguin: #4115
Balthazar: #3910
Strogo: #8, #3650

A work of art is never finished, merely abandoned

The changes to the tractor beam of the colossus are in - I highly encourage you all to find the bugs before they run out! On top of that, the second sneak peak is ready 🙂 !

A work of art is never finished, merely abandoned

Big fan of the TMD change, always felt their functionality was a bit broken.

42d03ac5-c3bc-4e07-9a5d-14daf7e58e6b-image.png

Jip doing god's work

FAF Website Developer

I love the new TMD change, will the enhanced logic apply to Aeon flares too?

That TMD change seems like it hugely shifts the balance of basebreaking back to the defender since TMD is way cheaper than cruisers and part of the reason you could eventually break bases came from the fact dumping a giant line of TMD was never efficient and you had to both waste space so they wouldn’t shoot the same thing and waste buildtime as your engies move from isolated TMD to isolated TMD. It also encouraged slowly breaking TMD since them being spaced out meant all TMD aren’t covered by all other TMD.

This could make it orders of magnitudes more painful to break bases, especially competently shielded ones.

I was also told that it’s a good idea regardless and you could rebalance TMD so that they shoot less often so basebreaking remains the same, except that would now make TML way more oppressive since TMD can barely shoot down a TML in time when it’s in front of the target as it is.

just build battleships bro

profile picture credits to petric

@ftxcommando said in Game version 3741: Sneak peaks:

I was also told that it’s a good idea regardless and you could rebalance TMD so that they shoot less often so basebreaking remains the same, except that would now make TML way more oppressive since TMD can barely shoot down a TML in time when it’s in front of the target as it is.

I don't think that's gonna be a problem, as what is meant by slower is most likely not the reaction time of TMD nor the speed of it's projectile but rather it's reload timer. So it's still gonna be as effective against single missile but will take more time to go after the next one in the voley. And well, now you can just dump all the TMD in front of the protected target in the same place as they no longer waste shoots on the same missile.

And yeah, I fully agree with the rest of your post. Especially when it comes to the t2 land stage and dealing with some firebases at this stage. As it seems MML will also be in dire need of buffs or TMD of massive nerfs not to make t2 arty the only possible counter to fire bases.

@ftxcommando The solution Jip came up with was increasing the TML missile's hp (cruiser one). This would counterweigh the buff of the TMD and allow for more natural linear scaling of your TMD defenses. Right now the first few TMD's give a lot of value while consequent ones give less and less utility. That kind of solution would benefit from not touching the TMD vs single TML (non-cruiser one) interaction. It would buff TMD vs massive TML barrages but I don't think that's an issue.

Alright I just kinda assumed from the OP

“Finally A tactical missile defense can properly counter a tactical missile launcher that fires at the same rate and takes only one strike to take down”

that cruiser missile hp was staying the same. What about mmls? Are they getting any hp change or other related buff?

@tagada said in Game version 3741: Sneak peaks:

Right now the first few TMD's give a lot of value while consequent ones give less and less utility.

Should honestly think about whether or not this is actually a bad thing.

There's a fix merged into FAF Develop, fixing shielded units from surviving the devastating tractor beam. On top of that - the tactical missile changes have been merged!

To compensate for the higher effectiveness, tactical missiles from cruisers and aircraft carriers have one additional hit points.

A work of art is never finished, merely abandoned

And the next sneak peak is available - all about game results!

A work of art is never finished, merely abandoned

Awesome! Looking forward to functioning TMD for non-Aeon 😄

On the other hand, doesn't this open a can of worms? What about AA overkilling their targets? (Draining all SAMs on a few spyplanes and letting the bombers behind pass, etc.)

@jcvjcvjcvjcv Well all units overkill their targets.
But that TMD overkills, while SMD does not makes no sense and from what i understand it's a stat of the unit being hit. So the missile has a stat saying how much anti-missiles should be fired at it at most, assuming each of those does 1 damage.
Since there is more than one AA weapon in the game, the air unit won't know how much damage incoming shots would do (and if they even hit), so you can't use the same mechanic on aircraft. But i think differentiating between units and uncontrollable missiles is fine.

Also, about the part with the shots not hitting:
Is there TMD that misses? And if so, how does it affect this? Will it shoot one anti-missile and if it misses your out of luck?

A reliable Tractor Claw?! I was actually giggling like a little girl while watching the preview vid. That the fire-rate is now visibly consistent is just so good.

Is there TMD that misses? And if so, how does it affect this? Will it shoot one anti-missile and if it misses your out of luck?

It will try and fire again.

A work of art is never finished, merely abandoned

@jcvjcvjcvjcv said in Game version 3741: Sneak peaks:

On the other hand, doesn't this open a can of worms? What about AA overkilling their targets? (Draining all SAMs on a few spyplanes and letting the bombers behind pass, etc.)

The 'can of worms' argument is also considered the 'slippery slope fallacy' - just because we fix one issue and similar issues exist, it doesn't mean that we shouldn't fix this one issue.

As Nex describes - the reason this works is because the amount of damage that TMDs do is uniform. That doesn't apply to other weaponry. Hence even if we'd want to fix this, we couldn't reliably put a 'count' on it. Let alone that it is a property of projectiles that we're using here, not a property of a weapon or unit.

A work of art is never finished, merely abandoned