Evoweb Gameplay Lab, FIFA 20 (Frostbite FIFAs?)

papinho81

Champions League
22 March 2017
Chaumont Switzerland
Olympique de Marseille
Evoweb_gameplay_lab.jpg


Welcome to the Evoweb Gameplay Lab thread!




Gameplay work released by the lab members:

https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3532073



Cheat Engine table to test variables on the fly:
https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3532074



Why this thread:

The goal of this thread is to encourage PC FIFA players to share their knowledge and discoveries about FIFA20 gameplay modding.
(Others Frostbite FIFAs knowledge might be also relevant?)

If you have ever used Frosty Editor to have a look at possibly relevant gameplay files you might have been, like me, amazed and at the same time overwhelmed about the number of those files and the quantity of variables each file contains.
There are files that control the physics (ball, air, net, pitch, ect...), the actors movements (even facial ones), the referee strictness, the CPU AI difficulty, the error/success of all types of actions (pass, dribble, tackle, shot, ect..), players positioning (marking, covering, ect...), ect... It is just crazy!

There is surely in there the ingredients that can help making this game leaning toward a more simulation gameplay. But a one man life (ok...year) is not enough to explore all this. So let's join our forces in this exploration process. Let's take the opposite direction of the current FIFA modding trend and let's happily share knowledge between each others, without any other goal than helping each others and trying to make this game to better fit each one taste.

The idea is not to make a new gameplay patch but really to share explorations and their outcomes, so anyone can come here and use the information to build his own gameplay mod. If you want a finished product ready to put in your game, well this thread is not really for you.

Bellow you can find a suggestion for the format of the exploration feedback to try keeping things organised and easing the use of the search function.
I might try to list the most impact full findings at some point if the thread goes somewhere.

I hope we will be many to join the gameplay LAB and to share our discoveries! Let's make this FIFA good if not great!


Format of the feedback:

- File Name (ie: gp_physics_physics_runtime)
- Variable 1 Name (ie: BallDensity), Default value=n (ie: 1), Tried value(s)=n1,n2,... (ie: 0.001, 100)
- Observations: some text describing what changed. (ie: With low value (0.001) the ball flight into the sky after the kick off pass and never landed back)
-Variable 2 Name, Default value=n, Tried value(s)=n1,n2,...
- Observations: blablabla...

- File Name (ie: locale.ini)
- Variable 1 Name, Default value=n Tried value(s)=n1,n2,...
- Observations: some text describing what changed.
-Variable 2 Name, Default value=n, Tried value(s)=n1,n2,...
- Observations: blablabla...


PS: Sliders... I think sliders won't affect the direction of an outcome (ie: increase or decrease error), if anything it might only affect the strength of the outcome (ie: a lot of error or a bit of error). So just use your favourite sliders during the exploration process.
 
Last edited:
List of availables mods (WIP):


1) FULL gameplay mods


Mod_NameAuthorDownload postKeywords
Sim Gameplay 1.0@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3564918Sim experience; Better positionning;
Lots of midfield and hard to break teams down
Sim Gameplay 2.0@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3570575Best so far!; More realistic experience; More description in the download post
Sim Gameplay Test Mod @tufkar84 https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3579505Close to vanilla; Improved ball physics; natural errors




2) Specific game aspects

ThematicAuthorProject file download postKeywords
Anti Cheat@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3548254Anti Script; Anti CPU boost
Ball physics@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3549953v1; Freer ball physics; Slower driven pass; Increased field friction
Ball physics@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3551395v2; Freer ball physics; Slower driven pass; Increased field friction; Heavier ball; Impredictable shots; More header variations
Database edits@6ons1https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3549436Lower stats; Closer to woman style gameplay, Realism
Defending@manmachinehttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3548619Quicker and smarter reaction of defender in 1vs1 situations; Shorter content and secondary content distances
Defending@papinho81https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3534771Walk speed; Harder to dribble past; Quicker closing down; Advantage bug
Fouls@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3551395More fouls; More dives; More penalties, WIP
Passing error@Anth Jameshttps://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3559424Better long ball error and more natural ground pass error
Perception AI@papinho81https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3541376Increase the overall player awareness; Higher match intensity
Positioning offside@papinho81https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3546806Higher lines; Less and shorter covering runs from the defenders
 
Last edited:
A link toward a Cheat Engine table to test values on the fly:
https://evo-web.co.uk/threads/evoweb-gameplay-lab-fifa-20-frostbite-fifas.82886/post-3573914

How to use it: Open your game (can be with frosties), double click on the ct table, it will attach automatically to the game.

The original idea, the design, the code and many variables are from @manmachine and some variables have been added by myself strictly recycling the code provided by manmachine.
It is very much a work in progress and anyone addition to the table is welcomed. Early added variable have a quite simple design while more recent ones comes with a script entry that allows quickly resetting default values (very much welcomed).
If you want to use the table and see values different from the default expected values, open the script (double click) of the variable you wan to edit and uncomment the line define... with the frosty offset and comment the other define... with the non frosty offset or vice et versa (like here: )

The CT was designed on the 12.05.2020 version of the game and there are chances that offsets are differents in different game versions. Let us know if that's not the case. I tried with the 04.07.2020 udpate an they were no problem though.


Important Note: If you never installed cheat engine before, make sure to process the installation out of internet connection or you might go into malaware nightmare.
 
Last edited:
Let's start!

First a tip to help you finding the gameplay files when using frosty editor.
You can type "gp_" in the search bar.
Navigate then toward Fifa/Attribulator/Gameplay/groups (Fifa/Attribulator/Gameplay/databases/smallsided/groups is for Volta)
There you can find many files relevant for the gameplay.

You can also use key words such as "marking" or "dribbling", they will bring you to specific files located in the above mentioned folder.


The followings are observation from explorations I did few months ago:

-gp_physics_soccerball_runtime

-Soccerball_Radius:
Default value=0.365. Tried value(s)=0.1, 0.465, 0.375, 2.375
- Observations: Control the ball size. Smaller values than the default gives you a smaller ball, bigger values a bigger ball. I like it slightly bigger than the default with 0.375.

-Soccerball_Mass: Default value=0.454. Tried value(s)=0.554,10, 2, 1
- Observations: Control the weight of the Ball. With really high values gks struggle to block the ball, the ball also stretch the net to the points it goes through the net with values close to 1 or higher. Higher values than default also add bend to shot trajectories. I didn't try lower value than default because I find the ball too light to my taste.

Soccerball_Inertia: default:0.666 Tried: 0.999; 100; 0.001
Observations: Contol the tendency of the ball to conserve its vertical trajectory. The lower the value the more gravity affects the ball resulting in bended tajectories. Values are likely varying between 0 (no inertia) and 1 (full inertia).

-Soccerball_GripConstant: Default value=0.92 Tried value(s)=0.02, 0.10, 100
- Observations: Control the back spin behaviour of the ball after a rebound, the lower the value the more back spin or grip is applied. I found that the default value was just fine.

-Soccerball_Material[0]: Default value=0.85 Tried value(s)=20; 0.05; 0.99
- Observations: Control the rebound height of the ball. With low values the ball doesn't rebound at all, close to 1 there is a lot of rebound.
- Note: There is seven items in Soccerball_Material ([0] to [6]). By default, odd numbers are all equal to 0 and increasing even numbers have decreasing values. It could be that [0] is for the height of the first rebound and the others for the height of the next rebounds relative to the previous rebound height.
 
Last edited:
Some input from my yesterday evening explorations.

- gp_actor_movement_runtime

- ATTR_SprintSpeedTbl_MinMax_Normal [0]:
Default value=0.37 Tried values=0.1; 0.5; 0.9
- Observations: Controls the max sprint speed while dribbling or not of slow players (S. Busquets) when playing on normal game speed, but it feel like it doesn't affects the max speed of quick players (Messi). Lower values means slower. It has a top control over the Walk or the Jog speed which means that the walk or the jog speed can't exceed this variable value.

- ATTR_SprintSpeedTbl_MinMax_Normal [1]: Default value=0.45 Tried values=0.1; 0.15; 0.5; 0.9; 20
- Observations: Controls the max sprint speed while dribbling or not of quick players (Messi) when playing on normal game speed, but it feel like it doesn't affects the max speed of slow players (S. Busquets). Lower values means slower. If ATTR_SprintSpeedTbl_MinMax_Normal [0] is bigger (=0.5) than ATTR_SprintSpeedTbl_MinMax_Normal [1] (=0.1) you can make slow player sprinting faster than quick players. With very high value (=20) the player looks like he is doing the front split when touching the ball.

-Note: I didn't test yet what decide whether a player top sprint value is controlled by the [0] or the [1] but I highly suspect to be ruled by the
ATTR_SprintSpeedTbl variable in the same file which has 21 items ([0] to [20]) which could each correspond to a range of player speed attribute.

Note2: There is 3 versions of the two above variables. One version ending with _Fast, one with _Normal and one with _Slow. I didn't test the 3 versions yet but I would put some money on those names referring to the three selectable game speed in game. The only other set of variables I found yet that come with this _Slow, _Normal, _Fast format is the ATTR_SprintSpeedFatiguedTbl_MinMax_Normal. Could it be that the only thing that change when we switch the game speed in game is the top speed of players (and when they are tired)? I would expect game speed to also affect the top ball speed too.
--> This likely means we can set the game speed (at least players top speed) exactly where we want and probably we can fine tune the range of speed between slow and fast players.

- ATTR_WalkSpeed: Default value=0.1 Tried values=0.9; 0.5; 0.001
- Observations: I am absolutely not sure it affects the walk speed per se. Feet movements looks faster with higher values and odds with very high values (0.9) when not sprinting . Also and counter intuitively it controls how far the ball is pushed away when the player change speed and/or angle. High values (0.9) increase the distance at witch the ball moves away from the player when turning an accelerating at the same time. With low values it feels like players have more weight and it is less slidy but it really could be placebo.

- ATTR_DribbleJogSpeed: Default value=0.23 Tried values=0.375;0.1
- Observations: Control the speed with the ball at the foot when not sprinting. Lower values means lower speed.
- Note: I didn't test extensively the ATTR_JogSpeed yet but I think that for those variables the ATTR_"TypeofMovement"_speed variables have top control over the ATTR_Dribble_"TypeofMovement"_speed variables.


That's it for now!
 
Last edited:
Anyone willing to try this:
http://www.mediafire.com/file/32dx5m8e1s52ltx/gameplay_test.fbmod/file (mod)
http://www.mediafire.com/file/rtvhziybgrerjzt/PaP_gameplay_test.fbproject/file (project)

This is a single value modification which I think has a strong impact against the overall defensive passivity, but it could be placebo.
In your defence, the AI's defence or both?

Also, would be really interested to test out any changes you use to try and make the game more "human" feeling!
 
Also, would be really interested to test out any changes you use to try and make the game more "human" feeling!

I didn't explore any of that yet. I will surely try to do it using contextual errors as much as possible.

From my side, I know you have explored gameplay quite a bit and I would love to read you insights!

Edit: My human you meant making the cpu more human?
 
Last edited:
No one to try it?

The single value change is the following:

- gp_actor_movement_runtime
- ATTR_WalkSpeed:
Default value=0.1, mod value=0.18

Why 0.18? Because the equivalent variable when on the ball, ATTR_DribbleWalkSpeed has a default value=0.2.
All the other Dribble_Speed_variables are set lower than their Speed_variables counter parts. The idea was to make the value closer to the dribble one but to keep the EA design of having it still smaller.
Why I think it fight against the defensive passivity? Because AI players when jockeying (not sprint jockeying) or when in "passive mode", they are walking. If the walking speed is set much lower than any other movement speed value you have speed gaps all over the pitch and defenders that can't cope with the players they are marking most of the time.

I could be completely wrong :P, but the game I played with it had low shots numbers (10 or bellow) even using default sliders (WC, 10 min half).
 
Last edited:
No football game is perfect, everyone and their dog likes to say, but what's "not perfect" in this particular one, truly disgusts me! 😆
So I didn't even buy the damn game, BUT, it's on origin basic now so maybe I will experiment with this myself when I have the time. In the hopes that we'll learn something that will be really useful when 21 comes along.

By the way, it's potentially huge that these files can be modded now. This is basically the gameplayattribdb.bin file which controls almost all gameplay in every fifa game, and -as far as I know- no one has decrypted it before. And now it's just open to modding? 😱
Surprised no one has tweaked this to create the perfect game so far!
 
I think people such as @paulv2k4 have tried but man there is so many things in there which potentially also all interact between each others. @Chris Davies also explored it quite a bit I think.
Also your perfect gameplay might be different from mine and from Paulv2k4 one, ect... It is why I think it is more constructive to share explorations results than a "finished" product.

I think gameplay modding with frosty is pretty much in its infancy and it surely lacks knowledge sharing (at least outside of those discord channels which are not my cup of tea to be honest). It s why I created this thread even though we might be a small cohort of poeple modding fifa at evoweb.
 
Last edited:
No one to try it?
I did try it Pap, sorry, been busy - but today I've had five games, four of them draws (0-0s and 1-1s) so I think you're onto something!

It's most effective when using secondary press, have you noticed that? Your players actually move quickly enough that they can block AI crosses.

I've also had more fouls (including two penalties in five games).

But it's a tad too fast for me - when a player does a crab-walk (without pressing), about 1 in every 10 times they ROCKET up the pitch and it's hilarious! :D So I will keep your change but just lower it slightly I think, and see if that's still enough to keep scores lower (my game before this test was 3-3).

I also, accidentally, discovered that the opposite of what you've done makes defenders stand still while you go past them. I'm convinced it's why SLOW speed has defending issues (where they just give up) - I don't have the figures in-front of me but if you take a look at the sprint and acceleration values for slow, medium and fast play, the ratio isn't quite equal between slow and normal. Fixing that ratio makes the game more challenging (too challenging for me to be honest).
 
Is there a way to control positioning of players especially the CDMs? So they can close down attackers instead of being fixed on their position and leaving a huge gap between defense and midfield.
 
Is there a way to control positioning of players especially the CDMs? So they can close down attackers instead of being fixed on their position and leaving a huge gap between defense and midfield.

All I can say right now is that one of the many things I'd like to fix, is players tracking back an opponent but then suddenly stopping as if they've hit an invisible wall, letting you easily exploit the spaces between the lines, if you know how. And that there's a ton of positioning/defensive/marking & formation lines parameters. It's a rabbit hole, but I'd bet there's a way to change everything.
 
I did try it Pap, sorry, been busy - but today I've had five games, four of them draws (0-0s and 1-1s) so I think you're onto something!

It's most effective when using secondary press, have you noticed that? Your players actually move quickly enough that they can block AI crosses.

I've also had more fouls (including two penalties in five games).

But it's a tad too fast for me - when a player does a crab-walk (without pressing), about 1 in every 10 times they ROCKET up the pitch and it's hilarious! :D So I will keep your change but just lower it slightly I think, and see if that's still enough to keep scores lower (my game before this test was 3-3).

I also, accidentally, discovered that the opposite of what you've done makes defenders stand still while you go past them. I'm convinced it's why SLOW speed has defending issues (where they just give up) - I don't have the figures in-front of me but if you take a look at the sprint and acceleration values for slow, medium and fast play, the ratio isn't quite equal between slow and normal. Fixing that ratio makes the game more challenging (too challenging for me to be honest).

Thanks for giving it a go and corobrating my own experience :) . With some variable the effect of the edit is crystal clear (like the ball size one) but with others it is much more tricky. I also feel secondary press is mor effective.
I didn't try it yet but I would put some coin on that file: gp_defense/gp_defense_jockey_runtime controlling the invisibe wall distance of both when jokeying (Jokey_MarkingDistance) and of secondary press (Jokey_MarkingDistanceSecondaryPress).

I didn't see the crab-walk glitch you described yet. May be because I am playing the game on normal speed, or the camera? Do you used any locale.ini edit with it?
Edit: Now I think about it I noticed that with very high values the GK lateral movement during the skill game were a bit scary.

As for the sprint speed and acc setting for slow speed, the max and min sprint speed are roughly 5% lower than for the normal speed BUT the ATTR_SprintAccelerationTableMinMax are comon to three game speed. The only variable I have seen so far that has different values for different game speed is the ATTR_SprintSpeedFatiguedTableMinMax. In the gp_actor_movement_runtime file, all the other variables are shared between the three game speeds.
But I am curious to see and try the value (ratio?) you set into.
 
Last edited:
Is there a way to control positioning of players especially the CDMs? So they can close down attackers instead of being fixed on their position and leaving a huge gap between defense and midfield.


I don't know, but my first try would one of the file inside the gp_positioningformation folder.
 
All I can say right now is that one of the many things I'd like to fix, is players tracking back an opponent but then suddenly stopping as if they've hit an invisible wall, letting you easily exploit the spaces between the lines, if you know how. And that there's a ton of positioning/defensive/marking & formation lines parameters. It's a rabbit hole, but I'd bet there's a way to change everything.

This rabbit hole is too much for a single rabbit with a normal rabbit life, but who knows what many rabbits can do together.
 
I didn't try it yet but I would put some coin on that file: gp_defense/gp_defense_jockey_runtime controlling the invisibe wall distance of both when jokeying (Jokey_MarkingDistance) and of secondary press (Jokey_MarkingDistanceSecondaryPress).
I would love to change these, but they're scary attributes... Most values are standard numeric ones, whereas some (like these) refer to points on a graph (with X and Y axis values).

I can't wrap my head around it...
 
I would love to change these, but they're scary attributes... Most values are standard numeric ones, whereas some (like these) refer to points on a graph (with X and Y axis values).

I can't wrap my head around it...

These can be tricky. Especially understanding the second axis. Sometimes the parameter name is the clue. Passing is almost completely controlled with these floatcurves/spline variables. In this case think of the Y axis as the time/space axis. As the ball travels along the pitch (time/space) it is assigned a different "speed" value (the X axis), and it's the resulting curve/graph that gives each pass type its specific speeding up/slowing down "character".

I've just completely eliminated the driven pass from the game which is something I've wanted to do since fifa 18, when it was used at ridiculous levels! (The cpu would basically win possession and pass to the striker in the middle of the pitch with a bonkers driven pass, eliminating all build up). You can't do that with the simple pass speed slider. Because there's a dozen different pass/shoot types nowadays so it's just impossible to fix one without breaking the rest with sliders.

I've basically "slowed down" the driven pass by 25% by reducing all X values by 25%. Maybe the sweet spot is 20% but you get the idea.

Code:
PASS_TravelTimeGroundPassHard (it's called "hard" not driven)
    Original Curve:
        <member Index="0">    <X>9</X>        <Y>22</Y>
        <member Index="1">    <X>17.13518</X>    <Y>26</Y>
        <member Index="2">    <X>28.34365</X>    <Y>29.4</Y>
        <member Index="3">    <X>44.97557</X>    <Y>37.7</Y>
        <member Index="4">    <X>62.05375</X>    <Y>55</Y>
        <member Index="5">    <X>80.20522</X>    <Y>70</Y>
        <member Index="6">    <X>101.3795</X>    <Y>89.75</Y>
        <member Index="7">    <X>150</X>        <Y>125</Y>
        <MaxX> 150 <MinX> 0
    25% slower:
        <member Index="0">    <X>6.75</X>        <Y>22</Y>
        <member Index="1">    <X>12.85</X>    <Y>26</Y>
        <member Index="2">    <X>21.25</X>    <Y>29.4</Y>
        <member Index="3">    <X>33.73</X>    <Y>37.7</Y>
        <member Index="4">    <X>46.54</X>    <Y>55</Y>
        <member Index="5">    <X>60.15</X>    <Y>70</Y>
        <member Index="6">    <X>76.03</X>    <Y>89.75</Y>
        <member Index="7">    <X>112</X>        <Y>125</Y>
        <MaxX> 112 <MinX> 0

Next up on this front: Boosting interceptions, reducing the pass assistance levels (the game is basically zero skill when it comes to passing) and I imagine the most tricky part will be introducing more errors/inaccurate passes. It's tricky because as you boost or nerf specific aspects of the game, the cpu decision making changes. It may dribble/hold up the ball more, to avoid making a bad pass and lose possession.
 
Last edited:
@manmachine great finding! I hate those driven passes, I never use them myself.

Thanks for the insights concerning what does the x and the y with the passes variables.

I also like your results format better.. Did you export the xml file with the editor then copy paste?
 
@manmachine great finding! I hate those driven passes, I never use them myself.

Thanks for the insights concerning what does the x and the y with the passes variables.

I also like your results format better.. Did you export the xml file with the editor then copy paste?

Yes, there's an option to export xml in the tools menu. Unfortunately it exports *everything* (I think I had to kill the process, lol) and you can't just import back an xml after editing in a text editor, at least I don't think so. So I don't know how useful it is. But hey, I've ended up with all the attribdb files in xml format.

What's really useful though is testing values without even quitting the game or putting down your controller, so i've already cooked up a CE script that locates all these in memory so you can tweak in realtime, and surprisingly, it works! (I must restart the match from the pause menu to force the game to read the new values, but that only takes a second).

Capture00.GIF
 
Last edited:
Yes, there's an option to export xml in the tools menu. Unfortunately it exports *everything* (I think I had to kill the process, lol) and you can't just import back an xml after you've edited it in a text editor, at least I don't think so. So I don't know how useful it is. But hey, I've ended up with all the attribdb files in xml format.

What's really useful though is testing values without even quitting the game or putting down your controller, so i've already cooked up a CE script that locates all these in memory so you can tweak in realtime, and surprisingly, it works! (I must restart the match from the pause menu to force the game to read the new values, but that only takes a second).

View attachment 44170

Man that CE script looks like a game changer for this Lab! The time saving potential of this is tremendous.

Three questions.
1) Do you think this script would work as is on anyone system with CE installed?
2) If yes to the above question, would you mind sharing it with us?
3) I am guessing with CE you are editing the actual game files, so you must put back the default values before quiting the game right?
 
Man that CE script looks like a game changer for this Lab! The time saving potential of this is tremendous.

Three questions.
1) Do you think this script would work as is on anyone system with CE installed?
2) If yes to the above question, would you mind sharing it with us?
3) I am guessing with CE you are editing the actual game files, so you must put back the default values before quiting the game right?

1) I use aobscan to locate stuff, maybe it will break if there's a game patch from EA but i'm not sure. But it should work fine if you have CE and the same Fifa 20 exe version.
2) Of course I don't mind
3) I'm editing the values in memory directly, I've included the default values in parenthesis (the def: part) just because I thought it might be useful to reset them easily without looking them up elsewhere.

There's only one catch. Adding new values can take some time as I use a slightly tweaked script for different files. My script locates a base address where all the values in a given configuration file are stored and then I work out the offsets from this base address manually for individual parameters. It was just a quick & dirty way of doing it. There's also the fact that at the end of the day, it's definitely not practical to include hundreds of parameters in CE so maybe we can decide on what we'd like to be able to tweak in real time? I included the ball radius in my table, but realistically once I settle on the ball size it won't really be of much use. But I'm thinking tactical/defending/positioning settings because ideally you'd like to test them a lot with different teams/tactics. But maybe if I share the script it will be easier for you to adapt it and add the stuff you want.

I just made this yesterday as a test, give me a day or two to make the scripts more robust and ensure they work as intended (I scan for unique arrays of bytes, but you never know, and I might switch to using injected code to make it more reliable), maybe even suggest a file/parameters that you'd like me to add to the table and I'll share it in a better state, as soon as possible!
 
Last edited:
@papinho81 What the heck! Here it is so you can see if it works for you in its current state. Copy all text, save it as a .CT file, run fifa & CE, load up the script in CE (my version is 7.0) and you will be prompted to run a lua script, it just auto-attaches to the fifa exe without having to do it manually.

Then click the boxes that read "enable/disable script" and it will try to locate the parameters for the corresponding file and you'll see a red X if successful, and hopefully the correct values. To tweak them, well just edit them AND select "restart match" from the fifa pause menu as this forces the game to re-read all the values. And hopefully that's all there is to it.

Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="29">
  <Forms>
    <UDF1 Class="TCEForm" Encoding="Ascii85">b7o++2nldAU:MM2b.}cxWeIh0Gi32eO*Fvk#;nQ8nwg$a!u*{OIV8V.c=AP(cxFmT2D1YryK]beNoIZ=8)2L90^^</UDF1>
  </Forms>
  <CheatEntries>
    <CheatEntry>
      <ID>12</ID>
      <Description>"Enable/Disable Script: Marking Tightness"</Description>
      <Options moManualExpandCollapse="1"/>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscan(AOB2,46 69 66 61 2F 41 74 74 72 69 62 75 6C 61 74 6F 72 2F 47 61 6D 65 70 6C 61 79 2F 67 72 6F 75 70 73 2F 67 70 5F 70 6F 73 69 74 69 6F 6E 69 6E 67 2F 67 70 5F 70 6F 73 69 74 69 6F 6E 69 6E 67 5F 6D 61 72 6B 69 6E 67 74 69 67 68 74 6E 65 73 73 5F 72 75 6E 74 69 6D 65)
label(gp_positioning_markingtightness)
registersymbol(gp_positioning_markingtightness)

AOB2:
gp_positioning_markingtightness:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
unregistersymbol(gp_positioning_markingtightness)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Attribulator Filename -----------------------------------"</Description>
          <VariableType>String</VariableType>
          <Length>88</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>gp_positioning_markingtightness</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"markingTightnessUniversalModifier (def: 0.5)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_positioning_markingtightness-8</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Enable/Disable Script: Attacking Aggressiveness"</Description>
      <Options moManualExpandCollapse="1"/>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscan(AOB3,46 69 66 61 2F 41 74 74 72 69 62 75 6C 61 74 6F 72 2F 47 61 6D 65 70 6C 61 79 2F 67 72 6F 75 70 73 2F 67 70 5F 70 6F 73 69 74 69 6F 6E 69 6E 67 2F 67 70 5F 70 6F 73 69 74 69 6F 6E 69 6E 67 5F 61 74 74 61 63 6B 69 6E 67 61 67 67 72 65 73 73 69 76 65 6E 65 73 73 5F 72 75 6E 74 69 6D 65)
label(gp_positioning_attackingaggressiveness)
registersymbol(gp_positioning_attackingaggressiveness)

AOB3:
gp_positioning_attackingaggressiveness:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
unregistersymbol(gp_positioning_attackingaggressiveness)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Attribulator Filename -----------------------------------"</Description>
          <VariableType>String</VariableType>
          <Length>95</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>gp_positioning_attackingaggressiveness</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>17</ID>
          <Description>"runFrequencyUniversialModifier (def: 0.5)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_positioning_attackingaggressiveness-8</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>18</ID>
      <Description>"Enable/Disable Script: Actor Movement"</Description>
      <Options moManualExpandCollapse="1"/>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscan(AOB4,46 69 66 61 2F 41 74 74 72 69 62 75 6C 61 74 6F 72 2F 47 61 6D 65 70 6C 61 79 2F 67 72 6F 75 70 73 2F 67 70 5F 61 63 74 6F 72 2F 67 70 5F 61 63 74 6F 72 5F 6D 6F 76 65 6D 65 6E 74 5F 72 75 6E 74 69 6D 65)
label(gp_actor_movement)
registersymbol(gp_actor_movement)

AOB4:
gp_actor_movement:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
unregistersymbol(gp_actor_movement)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Attribulator Filename -----------------------------------"</Description>
          <VariableType>String</VariableType>
          <Length>68</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>gp_actor_movement</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"ATTR_DribbleJogAcceleration (def: 0.005)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-64c</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"ATTR_DribbleJogSpeed (def: 0.23)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-650</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"ATTR_DribbleMinTouchInterruptPenalty (def: 2)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-658</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"ATTR_DribbleMinTouchStretchPenalty (def: 2)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-648</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"ATTR_DribbleWalkAcceleration (def: 0.005)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-654</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"ATTR_DribbleWalkSpeed (def: 0.2)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-640</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"ATTR_JogAcceleration (def: 0.005)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-634</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"ATTR_JogSpeed (def: 0.3)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-644</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"ATTR_WalkAcceleration (def: 0.005)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-63c</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>29</ID>
          <Description>"ATTR_WalkSpeed (def: 0.1)"</Description>
          <VariableType>Float</VariableType>
          <Address>gp_actor_movement-638</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>PROCESS_NAME = 'Fifa20.exe'
--------
-------- Auto Attach
--------
local autoAttachTimer = nil ---- variable to hold timer object
local autoAttachTimerInterval = 1000 ---- Timer intervals are in milliseconds
local autoAttachTimerTicks = 0 ---- variable to count number of times the timer has run
local autoAttachTimerTickMax = 5000 ---- Set to zero to disable ticks max
local function autoAttachTimer_tick(timer) ---- Timer tick call back
        ---- Destroy timer if max ticks is reached
    if autoAttachTimerTickMax &gt; 0 and autoAttachTimerTicks &gt;= autoAttachTimerTickMax then
        timer.destroy()
    end
        ---- Check if process is running
    if getProcessIDFromProcessName(PROCESS_NAME) ~= nil then
        timer.destroy() ---- Destroy timer
        openProcess(PROCESS_NAME) ---- Open the process
    end
    autoAttachTimerTicks = autoAttachTimerTicks + 1 ---- Increase ticks
end
autoAttachTimer = createTimer(getMainForm()) ---- Create timer with the main form as it's parent
autoAttachTimer.Interval = autoAttachTimerInterval ---- Set timer interval
autoAttachTimer.OnTimer = autoAttachTimer_tick ---- Set timer tick call back
</LuaScript>
</CheatTable>
 
@manmachine I am guessing it takes a lot of time to find the address of each variable?
About the amount of variables and the difficulty to search through, could it be possible to make a script for each file for exemple?
 
Thanks @manmachine! It is working perfectly!
In the arena you even don't need to quit and enter it for the new value being applied, it is working on the fly. That's crazy mate!

Here's a tip on how to add new values to the table and locate them easily. First of all they'll be really close to the filename (eg: "Fifa/Attribulator/Gameplay/groups/gp_actor/gp_actor_movement_runtime"), this is what I search for in the aobscans, and with the full path *it should* be unique in memory), but even then you might have trouble locating the correct offsets for values like "2" or "0.2". My trick was to change these values in frosty to something ridiculous but hopefully unique. For example I changed jogspeed to 666.666 (it sounded evil) or some other value to 777.777. Locating such a value is super easy especially if you know it's close to the filename. Once I knew all the offsets I wanted, I reverted the files in frosty and was ready to go!

Edit: And yeah it's super easy to add scripts for more files. Have a look at the 3 included. All that changes is the aob I search for (the filename with full path), and the names of the variables. Finding the offsets afterwards is also easy but it can get time consuming if you want to add dozens of variables in one go.
 
Last edited:
Here's a tip on how to add new values to the table and locate them easily. First of all they'll be really close to the filename (eg: "Fifa/Attribulator/Gameplay/groups/gp_actor/gp_actor_movement_runtime"), this is what I search for in the aobscans, and with the full path *it should* be unique in memory), but even then you might have trouble locating the correct offsets for values like "2" or "0.2". My trick was to change these values in frosty to something ridiculous but hopefully unique. For example I changed jogspeed to 666.666 (it sounded evil) or some other value to 777.777. Locating such a value is super easy especially if you know it's close to the filename. Once I knew all the offsets I wanted, I reverted the files in frosty and was ready to go!

Edit: And yeah it's super easy to add scripts for more files. Have a look at the 3 included. All that changes is the aob I search for (the filename with full path), and the names of the variables. Finding the offsets afterwards is also easy but it can get time consuming if you want to add dozens of variables in one go.

Thanks! I am going to try this out later this evening, but I am fairly noob with CE.
Any good tutorial you could recommend?
 
Thanks! I am going to try this out later this evening, but I am fairly noob with CE.
Any good tutorial you could recommend?

Everything I've done in this script is basically close to the limit of my own ability with CE, I'm just comfortable with doing all this after some practice with learning my way around all the different menus and windows (basic searches, the memory viewer, autoassembler) so I'm pretty sure the official wiki will be enough. Maybe I can explain something in a more detailed way, perhaps with step by step instructions, as I create a new script to add a new file/parameter?
 
Last edited:
Back
Top Bottom