Alright, serious time in order for me to maybe sound smart as opposed to the fun I've been having as GOAT TANK ????. Super serious post time and not a shit post, promise.
I am really new to the league and have been having fun and getting scouted by all the teams and it's been a pretty fun experience so far. Since becoming active in some of the various team discord channels I noticed some talks around "don't put your speed at 79!" or "don't put your speed above 79!". At first I thought it was just a meme, maybe an urban legend.
However, someone eventually pointed me to no - that is not the case and linked me to a couple great articles that @`Maglubiyet` had put together where he decompiled the code in the sim and went over how current speed works and broke it down easily for people to understand:
Decompiling the Sim: CurrentSpeed, '79 Speed' and Other Speed Anamolies
Once I heard you could decompile the code, that it uses C#/.NET, and being a developer myself in that field - I immediately went to work to do the same myself and dig into the source code. I at first was mostly interested in the speed thing and if it ONLY affects QBs and also wanted to dive into if there was anything I could do with a DT to possibly get some kind of edge against Offensive Linemen.
This article will be about the 79 speed as I'm going to let Maglubiyet write about the block mechanics and how they are coded. Once he puts that together I will write up my opinion and theory about how to balance defensive linemen and offensive linemen better.
You can read over Maglubiyet's analysis of how speed works in the game and the different things it does - for the most part, these all seem like design choices made by the development team to set it up in this way. Now, there's some questionable design choices, but design choices none the less.
However, the QB speed thing is definitely not a design intention, it's a straight up bug that the person who wrote the code simply put some numbers in the wrong order.
So this is really just a series of if statements. The statement before the ? is the condition. If the condition is met, then the first thing after the ? is what happens, if the condition is not met then go after the : for what happens. In this case there are 2 if statements.
There is no way this was intended by the design team, it just straight up doesn't make sense and doesn't scale properly like you think it would.
What the developer did when they coded this is made the mistake of the order of this statement, if we switch the numbers around, this would scale properly and what you would expect it to. So here is the code fix they'll never do.
This is how I think they intended for it to work.
The developer basically put the numbers in the wrong spot thinking the condition worked like this:
condition ? false : true
Instead of how it works in reality:
condition ? true : false
This is actually a pretty common thing people can do and if it doesn't get caught in testing - well, you see what happens
Todays shit code:
Non Mobile QB
Non Mobile QB
So all that being said, make sure you check out Mag's article I linked to above to do a slightly deeper dive as there are some conditions to be aware of for other positions (running backs for example have some really weird design choices) but the MAIN thing I wanted to do was stop the myth I was seeing in Discord.
If you're not a Quarterback, you're not hit by this 79 bug. So DT Goat Tanks like me, feel free to hit that 80 speed.
I am really new to the league and have been having fun and getting scouted by all the teams and it's been a pretty fun experience so far. Since becoming active in some of the various team discord channels I noticed some talks around "don't put your speed at 79!" or "don't put your speed above 79!". At first I thought it was just a meme, maybe an urban legend.
However, someone eventually pointed me to no - that is not the case and linked me to a couple great articles that @`Maglubiyet` had put together where he decompiled the code in the sim and went over how current speed works and broke it down easily for people to understand:
Decompiling the Sim: CurrentSpeed, '79 Speed' and Other Speed Anamolies
Once I heard you could decompile the code, that it uses C#/.NET, and being a developer myself in that field - I immediately went to work to do the same myself and dig into the source code. I at first was mostly interested in the speed thing and if it ONLY affects QBs and also wanted to dive into if there was anything I could do with a DT to possibly get some kind of edge against Offensive Linemen.
This article will be about the 79 speed as I'm going to let Maglubiyet write about the block mechanics and how they are coded. Once he puts that together I will write up my opinion and theory about how to balance defensive linemen and offensive linemen better.
You can read over Maglubiyet's analysis of how speed works in the game and the different things it does - for the most part, these all seem like design choices made by the development team to set it up in this way. Now, there's some questionable design choices, but design choices none the less.
However, the QB speed thing is definitely not a design intention, it's a straight up bug that the person who wrote the code simply put some numbers in the wrong order.
Code:
num = (((PlayerFlags & Enums.PlayerFlags.RunningQB) == Enums.PlayerFlags.RunningQB) ? (num * 1.25f) : ((Speed >= 80) ? (num * 1.15f) : (num * 1.35f)));
So this is really just a series of if statements. The statement before the ? is the condition. If the condition is met, then the first thing after the ? is what happens, if the condition is not met then go after the : for what happens. In this case there are 2 if statements.
- If you're a mobile QB -> you get your current speed boosted by 125%
- If you're not a mobile QB -> Check the speed attribute to decide what is next
- If your speed is 80 or above -> you get your current speed boosted by 115%
- Otherwise your current speed is boosted by 135%
There is no way this was intended by the design team, it just straight up doesn't make sense and doesn't scale properly like you think it would.
What the developer did when they coded this is made the mistake of the order of this statement, if we switch the numbers around, this would scale properly and what you would expect it to. So here is the code fix they'll never do.
Code:
num = (((PlayerFlags & Enums.PlayerFlags.RunningQB) == Enums.PlayerFlags.RunningQB) ? (num * 1.35f) : ((Speed >= 80) ? (num * 1.25f) : (num * 1.15f)));
This is how I think they intended for it to work.
- If you're a mobile QB -> you get your current speed boosted by 135%
- If you're not a mobile QB -> Check the speed attribute to decide what is next
- If your speed is 80 or above -> you get your current speed boosted by 125%
- Otherwise your current speed is boosted by 115%
The developer basically put the numbers in the wrong spot thinking the condition worked like this:
condition ? false : true
Instead of how it works in reality:
condition ? true : false
This is actually a pretty common thing people can do and if it doesn't get caught in testing - well, you see what happens
Todays shit code:
Non Mobile QB
- 79 = current speed 3.28725
- 80 = current speed 2.8175
- 79 = current speed 3.04375
- 80 = current speed 3.0625
Non Mobile QB
- 79 = current speed 2.80025
- 80 = current speed 3.0625
- 79 = current speed 3.28725
- 80 = current speed 3.375
So all that being said, make sure you check out Mag's article I linked to above to do a slightly deeper dive as there are some conditions to be aware of for other positions (running backs for example have some really weird design choices) but the MAIN thing I wanted to do was stop the myth I was seeing in Discord.
If you're not a Quarterback, you're not hit by this 79 bug. So DT Goat Tanks like me, feel free to hit that 80 speed.