LightningFlik
Lapidus said: @LightningFlik, hi!

I'm trying to make a small app for myself to export players' data from the game but I need it for FM26.

I would be very grateful if you could point me in the right direction how to find "RVA_PEOPLE_LIST [p] {start, end}"

Is there any approach you can suggest?

Thanks in advance!


I found it by browsing RAM in Cheat Engine. If you're familiar with pointer scanning, you can search for something that you _know_ exists on a Person entity (like their UID). Scan for this value across multiple resets of the game and eventually Cheat Engine will give you the static address + offsets that will reliably point to this person. (There will probably be a few ways of getting from a static address to the thing you care about, in which case you can probably pick the simplest. In this case, there's a list of pointers all packed next to each other that refer to various things: Cities, Nations, Weather, Injuries, People, Competitions etc. so we might as well start there).

If you aren't familiar with pointer scanning then you need to get familiar.

Alternatively, someone has probably already found that address and published it (you could search for a Cheat Engine table for the game and open that), or find an open source Player Analyser that someone has made.

I don't have FM 26 or I could tell you what it is myself.
FREVKY said: So actually I can't see anywhere "Skip rebuild" checkbox in UI version but I've managed to do it with console and now it actually works as intended. I also coded simple python script and batch file for automation to play desired seed ingame, so I'm attaching that in case anyone without debugger knowledge can use it. Also, I PM'd you with probe output for mentioned game version.



https://filebin.net/iqo7yi1xpxpkf3dq

put both files in the same directory and run "run_fm24_seed.bat" when you are on this screen: https://fm-arena.com/find-comment/54673/


Let me know how this goes: v1.0.30
I'm currently running an experiment in which I take the top 32 goalkeepers and pit them against each other in a league/knockout to see who is the best in the game.

Group A

1208 wins - Alisson
1206 wins - Ivan Provedel
1205 wins - Gianluigi Donarumma
1123 wins - Dorde Petrovic

Group B

1256 wins - Gregor Kobel
1189 wins - Sinan Bolat
1169 wins - Keylor Navas
1128 wins - Alphonse Areola

Group C

1239 wins - Emiliano Martínez
1231 wins - Thibaut Courtois
1176 wins - André Onana
1115 wins - Daniel Peretz

Group D

1230 wins - Wojciech Szczęsny
1184 wins - Jeremías Ledesma
1168 wins - Jan Oblak
1164 wins - Uğurcan Çakır

Group E

1352 wins - David De Gea
1165 wins - Diogo Costa
1128 wins - Manuel Neuer
1110 wins - Dean Henderson

Group F

1270 wins - Marc-André ter Stegen
1255 wins - Guglielmo Vicario
1158 wins - Ederson
1124 wins - Weverton

Group G

1268 wins - Yann Sommer
1226 wins - David Raya
1140 wins - Aaron Ramsdale
1103 wins - Niklas Hedl

Group H

1255 wins - Esteban Andrada
1240 wins - Mike Maignan
1192 wins - Rui Patrício
1085 wins - Sean McDermott

Two identical teams play each other using Knap's 4-2-4 (with Haaland, Mbappe, Salah and Vini Jr. up front) with only the goalie swapped out. They play each other 500 times twice (home and away, just in case I haven't completely ruled out any bias). The top two from each group advance through and they play two a two-legged 16-team knockout. I'm stunned by how close Group A was. I might have to try another version in the future with the groups shuffled.

Also the reason I'm tracking wins and not goals conceded is because a) winning is all you care about when you build a team and b) goalkeepers can indirectly contribute goals and I didn't want to overlook that.

EDIT: league phase done.

Knockout seeds
  1. David De Gea: 1352 wins
  2. Marc-André ter Stegen: 1270 wins
  3. Yann Sommer: 1268 wins
  4. Gregor Kobel: 1256 wins
  5. Esteban Andrada: 1255 wins
  6. Emiliano Martínez: 1239 wins
  7. Wojciech Szczęsny: 1230 wins
  8. Alisson: 1208 wins
  9. Guglielmo Vicario: 1255 wins
  10. Mike Maignan: 1240 wins
  11. Thibaut Courtois: 1231 wins
  12. David Raya: 1226 wins
  13. Ivan Provedel: 1206 wins
  14. Keylor Navas: 1189 wins
  15. Jeremías Ledesma: 1184 wins
  16. Diogo Costa: 1165 wins

David de Gea vs Diogo Costa: 462-178-360
Alison vs Guglielmo Vicario: 420-208-372
Gregor Kobel vs Ivan Provedel: 407-207-386
Esteban Andrada vs David Raya: 380-206-414
Marc-André ter Stegen vs Jeremías Ledesma: 390-224-386
Wojciech Szczęsny vs Mike Maignan: 415-207-378
Yann Sommer vs Keylor Navas: 400-202-398
Emiliano Martínez vs Thibaut Courtois: 390-213-397

David De Gea vs Alisson: 403-212-385
Gregor Kobel vs David Raya: 392-204-404
Marc-André ter Stegen vs Wojciech Szczęsny: 404-216-380
Yann Sommer vs Thibaut Courtois: 404-198-398

David De Gea vs David Raya: 415-230-355
Marc-André ter Stegen vs Yann Sommer: 388-221-391

David De Gea vs Yann Sommer: 406-216-378

Well I don't think anybody saw this coming.

Were there flaws in this test? For sure. I should have maximised each players' familiarity with the tactics. I shouldn't have used an overpowered corner tactic. I should probably spend 64,000 matches on every goalie playing each other rather than a knockout tournament format, but we live and learn.

Still though. David de Gea. And it wasn't even close.
Well to make it launch I only need the build timestamp, but if they've changed stuff too then there might be more to it. Fingers and toes crossed.
If I can downgrade to that version in Steam then I will try. If I can't, and the match engine is different in that version (I target 24.2.0.0, per the Game Status screen) then it'll be impossible to map it out.
If you're using the command-line, tacking `--keep-build` on to the end of the sims should fix it; if you're using the UI then latest version of the app has a checkbox called "Skip rebuild" with this option already selected. Let me know if you're still having difficulty.
When are you exporting the fixture? You need to do it on this screen:

GeorgeFloydOverdosed said: I'm still having some troubles with getting the testing working properly or easily, and I'm quite burnt out by fiddling around with it. So I probably won't be contributing much immediately, especially with others having a better go of it than me.

Looking forward to more insights from others


If there's something I can do to make it easier let me know. I'm currently thinking of making it possible to insert players in to a team (I eanto see how far a squad of Haalands gets) and edit players in the UI.
GeorgeFloydOverdosed said: Bruh what

Fan count affecting results was not something I was expecting

I guess this has implications for team selection when playing

Well I suppose they had to implement the home team advantage somehow. But you can control this in your tests as I said above. Give both teams the same number of fans in the JSON file to eliminate it as a factor (or use the UI to change it in the latest release https://github.com/PhilipArmstead/FM-24-Match-Harness/releases/tag/v1.0.28).
Home field advantage test.

I've made Aston Villa play an exact copy of itself at Villa Park; same starting XI, same tactics, 1000 games:

home 351 / draw 307 / away 342

I repeated this at Ewood Park (to check whether your team owning the stadium makes a difference):

home 400 / draw 216 / away 384, avg 2.70-2.71

It's interesting that the home team still has a marginal advantage but draws plummet in this scenario.

Next I'm going to choose another neutral venue but alter the number of home and away fans. Ewood Park holds 31,363; here's what happens when they're split variously:

100% home fans: home 588 / draw 181 / away 231, avg 3.38-2.36
100% away fans: home 234 / draw 173 / away 593, avg 2.18-3.19
50%/50% fans: home 399 / draw 191 / away 410, avg 2.72-2.73
No fans: home 407 / draw 199 / away 394, avg 2.70-2.74
75/25 fans: home 389 / draw 195 / away 416, avg 2.72-2.79
75,000/25,000 fans: home 512 / draw 202 / away 286, avg 3.08-2.46

(These last two tests were to see if the absolute value of fans made the positive impact or the relative strength. Given the absolute number of fans makes a difference then there are performance gains in upgrading your stadium as much as possible, since every fan counts.)

These fields are labelled in JSON files as

- venue.attendance
- venue.home_fans
- venue.away_fans
- venue.capacity

You can change these yourselves if you want to experiment with this or try to create the most balanced fixture as a base.
My passing/technique test finished. I changed a single player's passing and technique attributes to be every combination of 1-20 each and then played 100 matches. Here are the results: https://pastebin.com/D2iH45Vv

- Pass completion is 87% at the best and 85% at worst. Passing helps but it's a minimal impact.
- Passes attempted seems to lightly correlate with a higher passing ability
- Progressive passes is usually above 8 if passing and technique are double digits. It's usually below 7 when Passing is single figures (regardless of technique)
- High technique correlates with shots on target, but that's probably for reasons not related to passing
- Both correlate with key passes
- Dribbles correlates more with high passing than technique
- Possession lost correlates with low technique
blackbird said: ATTRIBUTE-LEVEL RESPONSE IN FM24: DIJON VS LENS

Love it! 93,000 matches though? Blimey. Some questions:

1. Did you write a script to perform these tests?
2. Did the game crash while running these matches?
3. How long did the entire thing take?
3. How large an increase do you consider to be significant and not just random noise? I notice some results dip with increases (Off the Ball) before rising again.
GeorgeFloydOverdosed said: I haven't taken the time yet to examine how your program works. So I don't know what you mean by 'fixture object'. Are you saying we can just edit the attribute data in the JSON file after export?
Yes. The reason I added the much larger JSON type as an export is so people could modify it by hand. Open it and search for "home.player[0].ratings" (and [1] and [2] and so on). The first 15 values of that are positional ratings (1-20) then all the attributes. The name of the player is 15 lines up from this. I'm working to annotate more of these rows in the future but this should be enough to start.

EDIT: I'll try to make the fixture and players editable in the UI too, and improve the documentation.
GeorgeFloydOverdosed said: If I change an attribute that has CA weight, I have to change the player's CA to the new Recommended CA, otherwise it messes with the results.

I had my fingers crossed initially that the game would automatically just recalculate the CA for the player, but its not the case. It reduces every other attribute a little to make up for it.

When I added the correct CA, I got results that lined up with expectation (i.e. teamwork being marginally beneficial, rather than 8 > 14 teamwork producing significantly worse results)

Are you changing attributes in the game or the fixture object? If you edit the fixture JSON, changing the attributes should be all you need unless I'm very much mistaken.

(And, if I am, I can bake in the recalculation.)
GeorgeFloydOverdosed said: What's holding me back right now is that it's super tedious to adjust CA in line with attribute changes in the realtime editor. Maybe the official realtime editor automatically does this, might see if I can use it later.
Why do you need to adjust CA? I don't think it affects a player's performance.
Jolt said: That leaves me wondering why didn't @Zippo find any correlation between them: https://fm-arena.com/find-comment/40372/ in their testing. As I mentioned back then, those findings were extremely surprising.

Couldn't say. I'm not sure what they tweaked or what they were measuring. Maybe they lowered crossing and technique but their xG didn't change so they said it wasn't important, and they just never noticed that their crosses attempted/completed plummeted, forcing their players to find goals elsewhere.

**EDIT:** I'm about to spend 400 minutes running 40,000 matches seeing what happens when I take a normal player in a normal match and set his passing and technique to every combination of 1-20. I doubt it will have a big impact on the average W/L/D record but it'll probably have some impact on his passing stats.
Fussballspieler said: What is the effect of the match preparation sessions done through the inbox?

I had a quick look at this, but I've got much further to go. Here's what I've learned so far.

The Match Focus training slot provides no attribute training. It gives a +1 bump to cohesion and match sharpness, and a +2 bump to tactical familiarity. For comparison, Match Practice gives a +2 bump to all of those things. It has no condition, fatigue or injury cost and makes no difference to player happiness (Match Practice is +3 for happiness).

To explain what each tactical/set piece focus does, I need to briefly explain how attributes work during a match (and it's brief because I've not finished investigating this yet).

About half of the attributes are represented in game as random numbers between 0 and their actual value (some attributes are -1 or +2 to the upper limit and some have modifiers I've not tracked down yet which increase the ceiling by as high as 6). Every 15 match seconds, the values of each attribute are re-rolled to be somewhere in this range.

With that out of the way, here's what the match focus does:

- In possession: Off the Ball is rolled twice every 15 seconds (instead of just once) when your team has the ball and the higher of the two values is used.
- In Transition: Teamwork is re-rolled after possession change and the higher of the two values is kept.
- Out of Possession: Marking is rolled twice while the opponent has the ball and the higher of the two values is used.
- Attacking corners: Anticipation is rolled twice when you have a corner and the higher result is used
- Defending corners: same as above except when the opponent gets a corner
- Attacking free kicks: same as above
- Defending free kicks: same as above
- Throw-ins: Re-rolls anticipation or gives a +1 bonus to the original value if it was already better
- Penalties: a flat +1 bonus when taking a penalty

And by the way, I think that to get these bonuses, a player's current Concentration roll has to be >11, which means players with a low concentration attribute never see these buffs.

AI controlled teams randomly decide on these focuses before a match.

(No, before someone asks, this doesn't mean I've managed to dig in to the code and find where it says "Pace is worth 100, Acceleration is with 98, Stamina is worth blah". My investigation has been brief so far but it looks like the web of interconnectedness between attributes is massive. It might just be a hilarious coincidence that physicals render most of it unnecessary.)

EDIT: I looked in to this because @Dezhy asked the question in another thread and I never got back to him. Sorry mate.

EDIT 2: I might as well list what the 27 randomised attributes are:

- Teamwork
- Technique
- Work rate
- Vision
- Concentration
- Anticipation
- Decisions
- Off the Ball
- Marking
- Flair
- Positioning
- Composure
- Dribbling
- First Touch
- Pace
- Acceleration
- Heading
- Balance
- Agility
- Strength
- Reflexes
- Command of Area
- Aggression
- Eccentricity
- Bravery
- One on Ones
- Tackling
FREVKY said: Question here. Is there a way to force certain seed to be processed in game? For example if one finds a seed that originally have made the team lose but then after tweaking some attributes the team won and one would like to see what has changed by checking match engine representation.
Yep but only if you use the instant result button. See here for how https://fm-arena.com/find-comment/54572/

The reason you need to sim is because that's what my test does, so you hae to do it too to get the same outcome.
21 members of backroom staff are included in fixture objects that get sent to the match engine and the results only differ when changing one of them: the manager's.

This sounds obvious but the Instant Result button does say "Are you sure you want to leave this match to your staff?" Turns out the staff have nothing to do with the result. I'm running an experiment now to see which of your attributes (and I imagine, by extension, AI managers too*) actually matter when simming results.

* I suppose I could run a dedicated experiment later to change the AI managers too and see if they get better win rates.

Also, earlier, I fudged the fixture object to make the same team play itself 300 times. I don't know what I was expecting but the win-rate was basically the same for both (I think the away team edged it just slightly). I might try mapping the stadium and competition data in the object later so people can run tests on what happens if you change those.

EDIT: only six attributes do anything for the manager when simming a game but they barely do anything:

- man management
- motivating
- coaching: mental
- level of discipline
- working with youngsters
- tactics: attacking

To be clear, I played the same fixture over and over and changed _every_ coaching attribute of every member of staff one at a time. Only changing the above on the manager did anything.

The results didn't change a whole lot, but it occurs to me I'm already battering my opponent anyway so I'm going to repeat the experiment but against myself, so the baseline should be equal and there we'll really see deviations.
I've added a GUI to the app. If you're already comfortable with using the command line then this won't make much of a difference, except it lets you swap teams without having to generate a new fixture in-game, and it also reads the next fixture from the game without you having to call the `get-next-fixture` command yourself (although all the old behaviour is still retained).