How Player Development Actually Works

qww
Youth Team Player
Posts: 12
Joined: Wed Jan 27, 2021 4:02 pm
Has thanked: 2 times
Been thanked: 3 times

How Player Development Actually Works

Post by qww »

Is it possible to change the age threshold degrading CAs for all positions to 35? If yes, really please make this.
Nick+Co
Patch Team
Posts: 955
Joined: Tue Apr 14, 2020 3:11 pm
Has thanked: 81 times
Been thanked: 1116 times

How Player Development Actually Works

Post by Nick+Co »

I normally don't like making patches like this as it feels a bit like cheating - but as the game progresses and players keep performing into their 30s, maybe these numbers do need tweaking. Here's what you asked for at least (no degradation for all positions until 35):

Code: Select all

001D3AA2: 1F 23
001D3AA3: 7C EB
001D3AA4: 07 4B
But this should help anyone wanting to tweak the numbers (depending on whether it's a striker, Midfield, etc) as it's obvious from the code how it works when you look at it the bytes this patch changes.
qww
Youth Team Player
Posts: 12
Joined: Wed Jan 27, 2021 4:02 pm
Has thanked: 2 times
Been thanked: 3 times

How Player Development Actually Works

Post by qww »

Thank you very much, i will test it.
Muno
Posts: 1
Joined: Wed Dec 13, 2023 12:48 pm

Re: How Player Development Actually Works

Post by Muno »

MadScientist wrote: Mon Nov 15, 2021 4:14 pm
Coys wrote: Mon Nov 08, 2021 6:23 pm The number of players who share a Current Ability will never increase

For example. If you load up a game, and 50 players have a Current Ability of 130, there will only ever be 50 players with 130 CA, for as long as you play. Try it yourself. Load up a new game, write down how many people have a CA of X, Y and Z. Holiday 10 years and then check again. It'll be the same number.

What this essentially means, is that for players to get better, others need to get worse. Ever wondered why your player randomly loses CA when he's in fine form, training well with good facilities and coaches etc. It's because the game decides that for you in order for another player to grow. Usually, it's players with a CA very close to their PA that suffer from this. The players with bigger gaps benefit as a result.

What I would like to know is, and this is a question to wizards of the forum, is there any way to remove the 'cap' mentioned above so that, there are no restrictions and players are able to develop freely without any obstacles. Why is there a cap on how many players can share a CA at any given time?
Fixed! Simple fix, only 1 line changed. Simply apply this patch file using nicks patcher:

Code: Select all

0x1d58a8 0x7e 0xeb
Explanation:

Function 5CE2D0 is the function that updates the CA of all players. The logic of the CA update is divided in 4 steps:

STEP 1: It builds a sorted list of all CAs of all players in the savegame.

STEP 2: It updates the CA of all players in the savegame following some logic based on several factors (like age, etc), and based on some randomness too.

STEP 3: It builds a sorted list of all players in the savegame, ordered by their new CAs as calculated by STEP 2.

STEP 4: It iterates over this list of all players in the new CA order, overwritting their new CAs with the sorted CAs of STEP 1. This is how it forces the number of players of each CA to be always the same, while changing what players will get each CA.

So in my fix, I simply disabled STEP 4 (by jumping over it):

Code: Select all

//I simply replaced:
005D58A8 JLE SHORT cm0102.005D58E0

//With:
005D58A8 JMP SHORT cm0102.005D58E0
This means the number of players sharing each CA will now be variable, as players will develop freely and players now can get better without other players having to get worse.

I run some tests and I see it works, but the downside, as expected, is that most players end up easilly achieving their full potential in a couple years. What can be done is to change the logic of how the CA is updated in STEP 2 so players will strugle a bit more to develop.

As a final note, as I disabled STEP 4, I could also disable step 1 and 3 too, because they are useless now and just eat CPU unecessarily.
Is patch from this post active somewhere? Thanks
MadScientist
Patch Team
Posts: 279
Joined: Sun Apr 19, 2020 6:25 pm
Location: Brazil
Has thanked: 680 times
Been thanked: 205 times

Re: How Player Development Actually Works

Post by MadScientist »

Muno wrote: Mon Jan 22, 2024 9:06 pm Is patch from this post active somewhere? Thanks
Simply copy paste the line below in notepad and save as a .patch file extension:

Code: Select all

0x1d58a8 0x7e 0xeb
Then open nicks patcher tool and select apply misc patchfile or something like that, choose that .patch file that you had saved, done.
Boulder
Hot Prospect for the Future
Posts: 114
Joined: Wed Jun 02, 2021 5:26 am
Has thanked: 66 times
Been thanked: 47 times

Re: How Player Development Actually Works

Post by Boulder »

Was there ever a conclusion if the change is actually good, or does it make the game very unbalanced after 10-20 seasons?
MadScientist
Patch Team
Posts: 279
Joined: Sun Apr 19, 2020 6:25 pm
Location: Brazil
Has thanked: 680 times
Been thanked: 205 times

Re: How Player Development Actually Works

Post by MadScientist »

Boulder wrote: Sat Jan 27, 2024 4:50 pm Was there ever a conclusion if the change is actually good, or does it make the game very unbalanced after 10-20 seasons?
It makes the game very unbalanced. Would need further changes. But it does what it was supposed to do (removes the 'cap' mentioned above so that there are no restrictions and players are able to develop freely without any obstacles)
Boulder
Hot Prospect for the Future
Posts: 114
Joined: Wed Jun 02, 2021 5:26 am
Has thanked: 66 times
Been thanked: 47 times

Re: How Player Development Actually Works

Post by Boulder »

Thank you!

How about the age degradation - I'm not savvy with studying the code but would like to push all ages forward but not to the same age. Is there anywhere a simple guide on how to find the position and age?
Vladimir2283
Posts: 1
Joined: Thu Jan 07, 2021 8:16 am
Has thanked: 1 time

Re: How Player Development Actually Works

Post by Vladimir2283 »

Hi there!

I've been following this topic from quite some time now, very interesting stuff, and i was wondering it it is possible, instead of changing the way the CA is affected, to increase the number of CA points it affects to a player (maybe in relation with player PA).

I receive sometimes the famous message from assistant manager saying that "XXX is developping into a quality player", but it translates only an increase of 10-12 CA points in most of my cases. Increasing to 30-40 CA points at once, would definitely show signs of development, and also can be similar to what real life is, with players exploding potential in 1 season or less...

And obviously, this would keep the game balanced, old or jobless players would decrease little more, when gems are raising.

Would it be a possibility with current knowledge of offsets?
MadScientist
Patch Team
Posts: 279
Joined: Sun Apr 19, 2020 6:25 pm
Location: Brazil
Has thanked: 680 times
Been thanked: 205 times

Re: How Player Development Actually Works

Post by MadScientist »

Vladimir2283 wrote: Tue Feb 06, 2024 10:42 am Hi there!

I've been following this topic from quite some time now, very interesting stuff, and i was wondering it it is possible, instead of changing the way the CA is affected, to increase the number of CA points it affects to a player (maybe in relation with player PA).

I receive sometimes the famous message from assistant manager saying that "XXX is developping into a quality player", but it translates only an increase of 10-12 CA points in most of my cases. Increasing to 30-40 CA points at once, would definitely show signs of development, and also can be similar to what real life is, with players exploding potential in 1 season or less...

And obviously, this would keep the game balanced, old or jobless players would decrease little more, when gems are raising.

Would it be a possibility with current knowledge of offsets?
The logic that controls this stuff is present in the function I described in this thread, so in theory any change is possible as long as theres time to edit the code and space in the exe.
MadScientist
Patch Team
Posts: 279
Joined: Sun Apr 19, 2020 6:25 pm
Location: Brazil
Has thanked: 680 times
Been thanked: 205 times

Re: How Player Development Actually Works

Post by MadScientist »

Boulder wrote: Sat Jan 27, 2024 5:33 pm Thank you!

How about the age degradation - I'm not savvy with studying the code but would like to push all ages forward but not to the same age. Is there anywhere a simple guide on how to find the position and age?
In the function i posted in this thread, search for occurrances of the age values i mentioned for each position (in hex) and simply change them to the desired values
Boulder
Hot Prospect for the Future
Posts: 114
Joined: Wed Jun 02, 2021 5:26 am
Has thanked: 66 times
Been thanked: 47 times

Re: How Player Development Actually Works

Post by Boulder »

MadScientist wrote: Sun Feb 11, 2024 5:51 pmIn the function i posted in this thread, search for occurrances of the age values i mentioned for each position (in hex) and simply change them to the desired values
I think I got it after comparing things that Nick's patch to age 35 did to the exe. If I'm not mistaken, it's this part? I'm just not sure how to test it though, I guess I just need to play the game and see if anything weird happens :lol: I had to do the changes directly in OllyDbg as I don't know how to turn the changes to a patch file for Nick's patcher. I just changed 1C->1F, 1D->20, 1E->20 and 1F->20 to nudge the degradation ages a bit forward. I guess using even higher values would mean that the younger players would have less CA?

Code: Select all

005D3A9E   . C64424 27 1F   MOV BYTE PTR SS:[ESP+27],1F
005D3AA3   . 7C 07          JL SHORT cm0102.005D3AAC
005D3AA5   . C64424 27 1C   MOV BYTE PTR SS:[ESP+27],1C
005D3AAA   . EB 25          JMP SHORT cm0102.005D3AD1
005D3AAC   > 807E 14 0F     CMP BYTE PTR DS:[ESI+14],0F
005D3AB0   . 7C 07          JL SHORT cm0102.005D3AB9
005D3AB2   . C64424 27 1C   MOV BYTE PTR SS:[ESP+27],1C
005D3AB7   . EB 18          JMP SHORT cm0102.005D3AD1
005D3AB9   > 807E 13 0F     CMP BYTE PTR DS:[ESI+13],0F
005D3ABD   . 7C 07          JL SHORT cm0102.005D3AC6
005D3ABF   . C64424 27 1D   MOV BYTE PTR SS:[ESP+27],1D
005D3AC4   . EB 0B          JMP SHORT cm0102.005D3AD1
005D3AC6   > 807E 12 0F     CMP BYTE PTR DS:[ESI+12],0F
005D3ACA   . 7C 05          JL SHORT cm0102.005D3AD1
005D3ACC   . C64424 27 1E   MOV BYTE PTR SS:[ESP+27],1E
005D3AD1   > 807E 0F 14     CMP BYTE PTR DS:[ESI+F],14
005D3AD5   . 75 07          JNZ SHORT cm0102.005D3ADE
005D3AD7   . C64424 27 21   MOV BYTE PTR SS:[ESP+27],21
005D3ADC   . EB 12          JMP SHORT cm0102.005D3AF0
005D3ADE   > 807E 10 0F     CMP BYTE PTR DS:[ESI+10],0F
005D3AE2   . 7D 07          JGE SHORT cm0102.005D3AEB
005D3AE4   . 8A46 11        MOV AL,BYTE PTR DS:[ESI+11]
005D3AE7   . 84C0           TEST AL,AL
005D3AE9   . 74 05          JE SHORT cm0102.005D3AF0
005D3AEB   > C64424 27 1F   MOV BYTE PTR SS:[ESP+27],1F
Ended up with this based on working with XVI32 to find the differences:

Code: Select all

001D3AA2: 1F 20
001D3AA9: 1C 1F
001D3AB6: 1C 1F
001D3AC3: 1D 20
001D3AD0: 1E 20
001D3AEF: 1F 20
Last edited by Boulder on Sat Feb 17, 2024 3:53 pm, edited 1 time in total.
hodgy
Hot Prospect for the Future
Posts: 176
Joined: Tue Nov 24, 2020 10:14 pm
Has thanked: 107 times
Been thanked: 56 times

Re: How Player Development Actually Works

Post by hodgy »

0F is 15 in decimal. Anyone know what that is referencing?
User avatar
Xeno
Patch Team
Posts: 2244
Joined: Wed Nov 25, 2020 5:01 am
Has thanked: 193 times
Been thanked: 766 times

Re: How Player Development Actually Works

Post by Xeno »

hodgy wrote: Sat Feb 17, 2024 3:35 pm 0F is 15 in decimal. Anyone know what that is referencing?
viewtopic.php?f=35&t=2802

For example, ESI+13 means player.midfielder attribute where he is a midfielder player if ESI+13 is bigger than 15 (0F)
hodgy
Hot Prospect for the Future
Posts: 176
Joined: Tue Nov 24, 2020 10:14 pm
Has thanked: 107 times
Been thanked: 56 times

Re: How Player Development Actually Works

Post by hodgy »

Xeno wrote: Sat Feb 17, 2024 5:31 pm
hodgy wrote: Sat Feb 17, 2024 3:35 pm 0F is 15 in decimal. Anyone know what that is referencing?
viewtopic.php?f=35&t=2802

For example, ESI+13 means player.midfielder attribute where he is a midfielder player if ESI+13 is bigger than 15 (0F)
That post is amazing, how had I not seen that before?! Thanks a lot.
Post Reply