Extracting
You'll need to have installed the FM21 Resource Archiver from Steam tools.
Once you've extracted the archive, you'll find a directory of files that includes physical_constraints.jsb in the physics sub-directory. This file is no longer a simple JSON and is now a binary file. Therefore you'll need something like HxD (on Windows) to open it.
![]()
On the left you'll see the raw bytes (in hexadecimal) and on the right you'll see a human-readable form.
We can read the name of the keys, but the actual numerical values need decoding.
Between each key there are 6 bytes.
![]()
Start Byte
The first byte seems to be a start byte
![]()
which has a decimal value of 2 and is the same for most keys we checked.
![]()
Data Value
The next 4 bytes (i.e. 32 bits) are the actual values
![]()
In this case, it translates (little-endian) to 250.
![]()
To see how it translates, you need to look at the hex values
![]()
Here was can see those 4 bytes are 0xFA 0x00 0x00 0x00. Since they are in little-endian format, we need to reverse the order
0x00 0x00 0x00 0xFA
These can be combined
0x000000FA
or just
0xFA
We can then use a hex/dec/bin converter tool online to find this is 250 in decimal.
Check-sum?
The final byte in the packet appears to be somekind of checksum.
![]()
![]()
This is different for each key in the file and so would probably need re-calculating in the event the file was edited. Unfortunatey it does not appear to be a simple partity check sum (XOR) or sum.
Editing
If someone did want to edit the file, they'd need to calculate the correct hexadecimal values to overwrite the original ones. For example, if we wanted to change the above 250 ms into 500 ms.
1. Convert 500 in decimal to hexadecimal
0x01F4
2. Pad with leading zeroes to get 8 digits (4 bytes)
0x000001F4
3. Split into bytes
0x00 0x00 0x01 0xF4
4. Reverse order
0xF4 0x01 0x00 0x00
Overwrite the original bytes with these values using your hex editor.
Compressing
Once you've done this, you'll have to compress the extracted archive back into the simatch.fmf using the Resource Archiver.
Disclaimer
In FM20, SI did not recommend modifying the physical contraints file and this is probably why it was hidden in FM21. We are posting this simply out of interest and will not be modifying the files or releasing any 'match engine fixes'. The claims in FM20 that changing these values would improve the ME were pretty much unfounded and any changes were very subjective and imperceptible.
If you do decide to try and edit, bear in mind that you'll probably have to figure out how the checksum is calculated (or if it is even a checksum - you could try just editing the 4 bytes and leave the start and end byte the same).
CAE and fc.cadoni
You'll need to have installed the FM21 Resource Archiver from Steam tools.
- Open the resource archiver
- 'Extract Archive'
- Find simatch.fmf in C:\Program Files (x86) \ Steam \ steamapps \ common \ Football Manager 2021 \ data
- Extract to somewhere like your Desktop
Once you've extracted the archive, you'll find a directory of files that includes physical_constraints.jsb in the physics sub-directory. This file is no longer a simple JSON and is now a binary file. Therefore you'll need something like HxD (on Windows) to open it.

On the left you'll see the raw bytes (in hexadecimal) and on the right you'll see a human-readable form.
We can read the name of the keys, but the actual numerical values need decoding.
Between each key there are 6 bytes.

Start Byte
The first byte seems to be a start byte

which has a decimal value of 2 and is the same for most keys we checked.

Data Value
The next 4 bytes (i.e. 32 bits) are the actual values

In this case, it translates (little-endian) to 250.

To see how it translates, you need to look at the hex values

Here was can see those 4 bytes are 0xFA 0x00 0x00 0x00. Since they are in little-endian format, we need to reverse the order
0x00 0x00 0x00 0xFA
These can be combined
0x000000FA
or just
0xFA
We can then use a hex/dec/bin converter tool online to find this is 250 in decimal.
Check-sum?
The final byte in the packet appears to be somekind of checksum.


This is different for each key in the file and so would probably need re-calculating in the event the file was edited. Unfortunatey it does not appear to be a simple partity check sum (XOR) or sum.
Editing
If someone did want to edit the file, they'd need to calculate the correct hexadecimal values to overwrite the original ones. For example, if we wanted to change the above 250 ms into 500 ms.
1. Convert 500 in decimal to hexadecimal
0x01F4
2. Pad with leading zeroes to get 8 digits (4 bytes)
0x000001F4
3. Split into bytes
0x00 0x00 0x01 0xF4
4. Reverse order
0xF4 0x01 0x00 0x00
Overwrite the original bytes with these values using your hex editor.
Compressing
Once you've done this, you'll have to compress the extracted archive back into the simatch.fmf using the Resource Archiver.
Disclaimer
In FM20, SI did not recommend modifying the physical contraints file and this is probably why it was hidden in FM21. We are posting this simply out of interest and will not be modifying the files or releasing any 'match engine fixes'. The claims in FM20 that changing these values would improve the ME were pretty much unfounded and any changes were very subjective and imperceptible.
If you do decide to try and edit, bear in mind that you'll probably have to figure out how the checksum is calculated (or if it is even a checksum - you could try just editing the 4 bytes and leave the start and end byte the same).
CAE and fc.cadoni