Players who never tackle

Post Reply
AtomicAnt
Decent Young Player
Posts: 52
Joined: Thu Nov 26, 2020 8:05 am
Has thanked: 23 times
Been thanked: 36 times

Players who never tackle

Post by AtomicAnt »

One thing that's been frustrating me for as long as I can remember is defenders that look like beasts, but still never tackle. I've wondered about this for ever, even asked about it on the previous site a few years ago, but no good answers.

For me, after a few seasons in every game, buying defensive players (full backs, centre backs, defensive midfielders..) is like a lottery. You can get some that's fantastic with 4-7 tackles on average, but some of them are below 1 tackle per game and practically unplayable.

I think I may have found out why, but it's still just a hypothesis, haven't been able to verify it 100% yet. I got a longplay save going (almost done with season 49) with three different teams and what I did was check the players positioning stats in GK-editor. Some of the players had 100+ intrinsic values, one fullback even had 120! The highest intrinsic value of a player who did tackle a lot was 102, everyone above that value didn't tackle. I tuned all of them down to 70-90, which is still a lot, and now it seems as the problem may be solved. Most of the non-tacklers are now throwing themselves into the action like there's no tomorrow!

I know there's a patch now to reduce the high intrinsic positioning values, but I don't know if it will work on saves, and even if it does I'm not willing to risk my old save in case it messes things up and breaks the save. So I will continoue to downgrade the positioning stats in the editor for the new players I buy. I will report back as I play further, only done a handful of games so far, but this sure looks promising.
User avatar
Xeno
Patch Team
Posts: 1107
Joined: Wed Nov 25, 2020 5:01 am
Has thanked: 221 times
Been thanked: 336 times

Players who never tackle

Post by Xeno »

Hi, which patch reduce the high intrinsic positioning values?
Your post reminds me that players uses reflex value as creativity value instead of real creativity value. Now , you found that defenders are using positioning value as tackling value.
Madscientist may solve this issue again :)
But, I think positioning is necessary for tackling on the other hand. If positioning is very good, may be no need tackling :)
I also observe same, no tackling but plays with 7 or 8 match rating
* [TUTORIAL] How to install and run the game CM0102?> viewtopic.php?f=85&t=3571
* [TUTORIAL] How to patch your game? Nick's CM0102Patcher,Tapani Patcher,Saturn,John Locke,OllyDbg> viewtopic.php?f=85&t=2956
AtomicAnt
Decent Young Player
Posts: 52
Joined: Thu Nov 26, 2020 8:05 am
Has thanked: 23 times
Been thanked: 36 times

Players who never tackle

Post by AtomicAnt »

xeno wrote: Sun Feb 21, 2021 7:42 pm Hi, which patch reduce the high intrinsic positioning values?
I believe I read about it a while back, but now I can't find it!
AtomicAnt
Decent Young Player
Posts: 52
Joined: Thu Nov 26, 2020 8:05 am
Has thanked: 23 times
Been thanked: 36 times

Players who never tackle

Post by AtomicAnt »

Here are a few results, before/after screenshots. All these players were adjusted down to 90 intrinsic positioning
DC, was 120:
Image

DR, was 106:
Image

DMC, was 104:
Image

DL, was 103:
Image

DC, was 106:
Image

DMC, was 107:
Image

DC, was 103:
Image

DMC, was 109:
Image
AtomicAnt
Decent Young Player
Posts: 52
Joined: Thu Nov 26, 2020 8:05 am
Has thanked: 23 times
Been thanked: 36 times

Players who never tackle

Post by AtomicAnt »

It's hard to conclude after so few tests, and I haven't done the math, but it seems like none of them didn't improve.
User avatar
Xeno
Patch Team
Posts: 1107
Joined: Wed Nov 25, 2020 5:01 am
Has thanked: 221 times
Been thanked: 336 times

Players who never tackle

Post by Xeno »

My comment is like this
*If defenders are really using only positioning value as tackling value instead of tackling value, it is worth to investigate and try to make a patch for improvement. Madscientist found that AMC players were using reflex value for creativity and made a patch for solution.
*If not, this is how the game is.

Also, setting defenders as marking in match tactics will increase tackles
* [TUTORIAL] How to install and run the game CM0102?> viewtopic.php?f=85&t=3571
* [TUTORIAL] How to patch your game? Nick's CM0102Patcher,Tapani Patcher,Saturn,John Locke,OllyDbg> viewtopic.php?f=85&t=2956
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

AtomicAnt wrote: Sun Feb 21, 2021 7:18 pm I think I may have found out why, but it's still just a hypothesis, haven't been able to verify it 100% yet. I got a longplay save going (almost done with season 49) with three different teams and what I did was check the players positioning stats in GK-editor. Some of the players had 100+ intrinsic values, one fullback even had 120! The highest intrinsic value of a player who did tackle a lot was 102, everyone above that value didn't tackle. I tuned all of them down to 70-90, which is still a lot, and now it seems as the problem may be solved. Most of the non-tacklers are now throwing themselves into the action like there's no tomorrow!
xeno wrote: Sun Feb 21, 2021 7:42 pm Your post reminds me that players uses reflex value as creativity value instead of real creativity value.
Madscientist may solve this issue again :)
Brilliant finding @ant and @xeno. There seem to be a bug indeed, with positioning and marking.

Remember I explained the in_match value of a atribute could go up to 45. And I also explained some attributes would receive a extra boost and this value could go up to 75.

Now I found positioning and marking get another boost which can lead up to a 600 value.

The issue is that the in_match variable is a signed byte so it can only store values up to 127, and the calculation uses a float variable. So when it tries to assign the float variable to the in_match variable, im pretty sure it stores some trash value in it if the float is higher than 127.

I remember when I hacked some high in_match values for off the ball and finishing, the max I could go was 127 in the float var, if i put a higher value than 127 the player would stop making goals. So positioning and marking seem to be getting this bug naturally due to their extra boost.

A value higher than 127 would occur when the in_match value pre-boost is above 25 approximatelly, which means the player has a very high intrinsic for positioning.

One easy fix is to prevent it going above 127 (i just dont know if there is space in the exe to put this check). Or another fix is to simply remove this extra boost (but in this case positioning would become much less powerful in the game).
scemoka
Hot Prospect for the Future
Posts: 111
Joined: Tue Jun 02, 2020 4:39 pm
Has thanked: 27 times
Been thanked: 88 times

Players who never tackle

Post by scemoka »

When you look at tackle leaders of the league, all they have high positioning with high instinct values 90 to 120.
But, as you see at AtomicAnt's images... players who have high instinct positining - never or low tackle too.

During matches - high anticipation and decisions values can make less effective the positioning value. This is possible. (example Maldini regen)
May be some attributes which are high, neutralize to tackle.
Altogether i don't understant - where is the benefit of ''decisions'' ? Here our lovely game conflicts with real life.
Defenders with high decisions less tackle, wingers with high decisions - less dribble.
I think there is a bug in game engine, which we have to solve.
User avatar
Xeno
Patch Team
Posts: 1107
Joined: Wed Nov 25, 2020 5:01 am
Has thanked: 221 times
Been thanked: 336 times

Players who never tackle

Post by Xeno »

I think the problem here is not losing tackles. They can lose, no problem, it is their quality.
The problem is mostly ( 0 tackle ) they dont even attempt for tackles which can be related with other values such as positioning, bravery, decisions, determination, ambition, pace, anticipation ( concentration ) , etc.
* [TUTORIAL] How to install and run the game CM0102?> viewtopic.php?f=85&t=3571
* [TUTORIAL] How to patch your game? Nick's CM0102Patcher,Tapani Patcher,Saturn,John Locke,OllyDbg> viewtopic.php?f=85&t=2956
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

AtomicAnt wrote: Sun Feb 21, 2021 7:18 pm I think I may have found out why, but it's still just a hypothesis, haven't been able to verify it 100% yet.
I just verifyed it 100% in debug mode in olly, as I describe below. You are absolutelly right, once again great finding @ant.


Short explanation:

There is a bug with positioning and marking attributes in the game: When the in_match value of positioning (and marking) as seen by the match engine is approximatelly above 25 (due to a high intrinsic + high CA), then the match engine will give a wrong in_match value of positioning (and marking) to him.

This causes players with very high intrinsic values for positioning (and marking) to perform poor and make few tackles.

The fix may not be so simple.


Long explanation (highelly technical):

The cause of the bug is there is a mega boost to the in_match values of positioning and marking attributes in the match engine, and this mega boost causes their in_match values to become above 127 (they can go up to 600!), but the in_match variable is only 1 byte long so it cant store values above 127, so it ends up storing a wrong value.

I confirmed this in debug mode with the following test:

I created a 200 CA player with a insane intrinsic for positioning, which results in a in_match value of positioning of 437.40 (after the mega boost is applied) as you can see in breakpoint below:

Image

Then function 945640 is called. This is the function that typecasts the float value to a byte value, and puts the result into AL register.

437 in hex needs 2 bytes to be represented, and is: 0x01B5

As its typecasting 437.40 to one byte, the typecast function picks only the last byte, which is B5. So it stores B5 into AL, as we can see in screenshot below.

Image

B5 is -75. So this means this player received -75 as in_match value for positioning. This is the reason for his poor performances and poor number of tackles.

I see two possible fixes: one is clamp the positioning value to some max number like 127 (but this requires extra space in the exe for the check and im not sure how to find space), other is to remove the mega boost (which i even did this fix, but its bad because positioning and marking becomes weaker for all players in the game, so the ammount of goals dramatically increased, and we dont want that - although that could be useful for fixing the lack of goals in future generations).
User avatar
Xeno
Patch Team
Posts: 1107
Joined: Wed Nov 25, 2020 5:01 am
Has thanked: 221 times
Been thanked: 336 times

Players who never tackle

Post by Xeno »

Thanks MadScientist,
What is found here also proves that positioning attributes positive variance is not the root cause of lack of goal in future generations , right?
May be another attribute such as jumping positive variance of regens causes lack of goals.
* [TUTORIAL] How to install and run the game CM0102?> viewtopic.php?f=85&t=3571
* [TUTORIAL] How to patch your game? Nick's CM0102Patcher,Tapani Patcher,Saturn,John Locke,OllyDbg> viewtopic.php?f=85&t=2956
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

xeno wrote: Sun May 30, 2021 9:11 pm Thanks MadScientist,
What is found here also proves that positioning attributes positive variance is not the root cause of lack of goal in future generations , right?
May be another attribute such as jumping positive variance of regens causes lack of goals.
In future generations many DCs have very strong strinsics for positioning but I dont know if they are strong enough to be a 25 in the match engine so I cant say if they are affected by the bug or not (only those above 25 in_match value are affected).

However as Ive said in some other threads, positioning isnt the only root cause for lack of goals in future generations. Another very important cause is the creativity bug (where reflexes is used for creativity), because in future generations there is a huge number of players affected by the creativity bug, so their huge creativity value is useless (and this huge values still steals intrinsic points from other important attributes such as finishing and passing), resulting in less assists and chances of goals;
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

To explain whats this mega boost the match engine applies to positioning and marking:

STEP 1: it calculates the in_match value as usual for all attributes:

Code: Select all

in_match = intrinsic / 5 + CA / 20 + other_factors
STEP 2: it applies the mega boost (this only happens for positioning and marking):

Code: Select all

in_match = (in_match ^ 2.2) * 0.05 + 1.0
//note: ^ symbol means power of, so its doing the in_match value to the power of 2.2, thats the mega boost
STEP 3: it applies another small boost (which also happens for some other attributes besides positioning and marking)

Code: Select all

in_match = ((in_match - 16.0) ^ 1.2) + 16.0
So whenever the in_match value resulting from the 3 steps is higher than 127 then the bug occurs and the player will receive a wrong value and make few tackles and perform poor defensivelly.

I did a patch to remove step 2, this fixed the bug (because without step 2 the resulting value never gets above 73) but consequently it also nerfed positioning and marking so its a bad fix.
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

The screenshots below show the original game (i.e. with the bug and mega boost to positioning and marking) versus my bad fix (where the bug doesnt occur but where i removed this mega boost).

We can see in the original game the DCs perform better and there are less ammount of goals than in my bad fix, because I removed the mega boost to positioning and marking:

Tackles Original VS my bad fix:
Image
Image

Avg ratting Original VS my bad fix:
Image
Image

MoM Original VS my bad fix:
Image
Image

Table Original VS my bad fix
Image
Image

Anyway, in case someone wants to try this bad fix, this is the patch (compatible with .68, tapani and saturn):

Code: Select all

0x2ed02e 0xd0 0x90
0x2ed02f 0xd6 0x78
0x2ed039 0x88 0x90
0x2ed03f 0x90 0xa0
0x2ed040 0x78 0x89
0x2ed8a7 0xd0 0x90
0x2ed8a8 0xd6 0x78
0x2ed8b2 0x88 0x90
0x2ed8b8 0x90 0xa0
0x2ed8b9 0x78 0x89
Fiestita
Youth Team Player
Posts: 27
Joined: Fri Jan 01, 2021 1:38 pm
Been thanked: 10 times

Players who never tackle

Post by Fiestita »

In german first division, look at 005D9D31 where it checks for the year. You can jump for the second case fixtures and you get the whole first case as free space for this patch. It won't harm anything, as it's just a check to make 2001 fixtures different.

Code: Select all

005D9CD0   . 56             PUSH ESI
005D9CD1   . 68 14D49C00    PUSH cm0102.009CD414                     ;  ASCII "E:\dev\CM3\cm3 00-01\cm3\code\comp\leagues\ger_first.cpp"
005D9CD6   . E8 24B03600    CALL cm0102.00944CFF
005D9CDB   . 83C4 14        ADD ESP,14
005D9CDE   . 8D4C24 08      LEA ECX,DWORD PTR SS:[ESP+8]
005D9CE2   . 8D9424 0801000>LEA EDX,DWORD PTR SS:[ESP+108]
005D9CE9   . 68 A1000000    PUSH 0A1
005D9CEE   . 51             PUSH ECX
005D9CEF   . 52             PUSH EDX
005D9CF0   . E8 3B343300    CALL cm0102.0090D130
005D9CF5   . 50             PUSH EAX
005D9CF6   . 68 E8709800    PUSH cm0102.009870E8                     ;  ASCII "v%s %s.%s %d"
005D9CFB   . 68 D024AE00    PUSH cm0102.00AE24D0
005D9D00   . E8 9AAF3600    CALL cm0102.00944C9F
005D9D05   . 56             PUSH ESI
005D9D06   . 68 D024AE00    PUSH cm0102.00AE24D0
005D9D0B   . 68 E0709800    PUSH cm0102.009870E0                     ;  ASCII "Error"
005D9D10   . E8 7BE50000    CALL cm0102.005E8290
005D9D15   . 83C4 24        ADD ESP,24
005D9D18   . 8935 347AB600  MOV DWORD PTR DS:[B67A34],ESI
005D9D1E   > 5F             POP EDI
005D9D1F   . 33C0           XOR EAX,EAX
005D9D21   . 5E             POP ESI
005D9D22   . 81C4 00020000  ADD ESP,200
005D9D28   . C2 1000        RETN 10
005D9D2B   > 66:8B47 40     MOV AX,WORD PTR DS:[EDI+40]
005D9D2F   . 6A 00          PUSH 0
005D9D31   . 66:3D D107     CMP AX,7D1
005D9D35   . E9 680A0000    JMP cm0102.005DA7A2
005D9D3A     90             NOP
005D9D3B   . 68 D1070000    PUSH 7D1
005D9D40   . 6A 01          PUSH 1
005D9D42   . 6A 05          PUSH 5
005D9D44   . 6A 00          PUSH 0
005D9D46   . 6A 06          PUSH 6
005D9D48   . 6A 1D          PUSH 1D
005D9D4A   . 6A 00          PUSH 0
005D9D4C   . 56             PUSH ESI
005D9D4D   . E8 0E040B00    CALL cm0102.0068A160
005D9D52   . 6A 00          PUSH 0
005D9D54   . 6A 01          PUSH 1
005D9D56   . 6A 01          PUSH 1
005D9D58   . 6A 06          PUSH 6
005D9D5A   . 6A 00          PUSH 0
005D9D5C   . 6A 00          PUSH 0
005D9D5E   . 56             PUSH ESI
005D9D5F   . E8 5C040B00    CALL cm0102.0068A1C0
005D9D64   . 83C4 40        ADD ESP,40
005D9D67   . 6A 00          PUSH 0
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

Another example of this bug was reported here: viewtopic.php?f=31&t=3670
Nick+Co
Patch Team
Posts: 567
Joined: Tue Apr 14, 2020 2:11 pm
Has thanked: 55 times
Been thanked: 537 times

Players who never tackle

Post by Nick+Co »

Oooh I didn't know about this bug - well done MadScientist & AtomicAnt for finding it! This needs fixing.

So I used my expanded exe patch to make space and did:

Code: Select all

006EF63F  |> \E8 FC5F2500            CALL 00945640
006EF644      E9 CF7D6F00            JMP 00DE7418         <---- replace MOV BYTE PTR DS:[ESI+110],AL with Jump
006EF649      90                     NOP
006EF64A  |.  B8 56555555            MOV EAX,55555556
.....
00DE7400      83F8 7E                CMP EAX,7E                               <--- simple clamp for EAX from -126 to 126
00DE7403      7D 06                  JGE SHORT 00DE740B
00DE7405      83F8 82                CMP EAX,-7E
00DE7408      7E 07                  JLE SHORT 00DE7411
00DE740A      C3                     RETN
00DE740B      B8 7E000000            MOV EAX,7E
00DE7410      C3                     RETN
00DE7411      B8 82FFFFFF            MOV EAX,-7E
00DE7416      C3                     RETN
00DE7417      00                     DB 00
00DE7418      E8 E3FFFFFF            CALL 00DE7400                    <---- Call clamp
00DE741D      8886 10010000          MOV BYTE PTR DS:[ESI+110],AL     <----- move value now clamped to -126 to 126 into AL
00DE7423    ^ E9 228290FF            JMP 006EF64A                            <------ jump back
Seems to work? Spot any issues? And are there other areas this should apply to? (I'll review CALL 00945640 as it's done a lot).

A patch for the above to use in my patcher would look like:

Code: Select all

EXPANDEXE
002EF644: 88 E9
002EF645: 86 CF
002EF646: 10 7D
002EF647: 01 6F
002EF649: 00 90
006DC400: 00 83
006DC401: 00 F8
006DC402: 00 7E
006DC403: 00 7D
006DC404: 00 06
006DC405: 00 83
006DC406: 00 F8
006DC407: 00 82
006DC408: 00 7E
006DC409: 00 07
006DC40A: 00 C3
006DC40B: 00 B8
006DC40C: 00 7E
006DC410: 00 C3
006DC411: 00 B8
006DC412: 00 82
006DC413: 00 FF
006DC414: 00 FF
006DC415: 00 FF
006DC416: 00 C3
006DC418: 00 E8
006DC419: 00 E3
006DC41A: 00 FF
006DC41B: 00 FF
006DC41C: 00 FF
006DC41D: 00 88
006DC41E: 00 86
006DC41F: 00 10
006DC420: 00 01
006DC423: 00 E9
006DC424: 00 22
006DC425: 00 82
006DC426: 00 90
006DC427: 00 FF
EDIT: Oh and I picked 126 rather than 127 because in my head I seem to remember something about 127 having issues - but that could be completely wrong. But shouldn't make any real difference here.
Cam F
Reserve Team Player
Posts: 331
Joined: Wed Nov 25, 2020 6:52 pm
Has thanked: 171 times
Been thanked: 177 times

Players who never tackle

Post by Cam F »

Here was me thinking this was a thread dedicated to Paul Scholes.
redgreenblue
Youth Team Player
Posts: 7
Joined: Tue Nov 24, 2020 9:48 pm
Been thanked: 2 times

Players who never tackle

Post by redgreenblue »

Cam F wrote: Tue Jan 11, 2022 3:32 pm Here was me thinking this was a thread dedicated to Paul Scholes.
It might actually, if you read between the lines.
Tomck
Youth Team Player
Posts: 32
Joined: Fri Dec 11, 2020 6:56 pm
Has thanked: 6 times
Been thanked: 5 times

Players who never tackle

Post by Tomck »

So with the creativity bug and the high positioning thing with defenders in games further down the line is there a way of changing this via the GK in game editor,like specific player attributes I can change to help the goals flow again?
Got some long term saves I'd like to continue.
MadScientist
Patch Team
Posts: 153
Joined: Sun Apr 19, 2020 5:25 pm
Location: Brazil
Has thanked: 407 times
Been thanked: 101 times

Players who never tackle

Post by MadScientist »

Nick+Co wrote: Tue Jan 11, 2022 12:28 pm Seems to work? Spot any issues?
Your code seems correct to me, nice one! When I have some time i will test in debug mode.

The negative clamp isnt needed because some lines above the value is clamped to a min of 2, so its always positive.
Nick+Co wrote: Tue Jan 11, 2022 12:28 pm And are there other areas this should apply to? (I'll review CALL 00945640 as it's done a lot).
The same bug occurs to 'marking' attribute, just a few lines below:

Code: Select all

006EF68D      |> E8 AE5F2500                  CALL cm0102.00945640
006EF692      |. 8886 11010000                MOV BYTE PTR DS:[ESI+111],AL
006EF698      |. B8 56555555                  MOV EAX,55555556
The other attributes dont suffer from this bug because they dont receive the megaboost so their max in_match value is aroung 75.

But for sure there are more overflow bugs out there on the game :) just hard to spot them
Nick+Co wrote: Tue Jan 11, 2022 12:28 pm EDIT: Oh and I picked 126 rather than 127 because in my head I seem to remember something about 127 having issues - but that could be completely wrong. But shouldn't make any real difference here.
126 should be fine, assuming they didnt make another overflow bug deeper down there where the value is used for match events (like summing a byte with another byte and storing in a byte without checking for overflows).

But I personally would clamp it to a lower value like 75 or 100 or 120 to help goals not drain out in future generations. Wont cause DCs to perform poor because they still receive the megaboost, just clamped to a lower value.
Post Reply