Offline
AltPlayer Project
I thought it might be useful to start a separate thread for the player progression project. I've loosely termed it "AltPlayer" for now. Many of us series creators use a variety of ways to simulate our projects and organize our player and roster management but it seems the common denominator is lack of a good player progression model outside of special games such as OOTP, Franchise Hockey Manager or other simulators.
I am envisioning a community-built template that will be made available to the community to use for their own series.
I have a roster management system that I use for my hockey series. It is scaled down and easy enough to manage but lacks any progression. Wallflower has posted examples of their system in the NAAF series. 3pttally has posted about some of his efforts with league simulators. I'm sure there are others. I think between all of us we could come up with something that works well for all sports and easy enough for the community to use once its completed and tested.
It looks like 3pttally has already made serious strides. I will copy over his post from the previous thread.
3pttally wrote:
I've been playing around with formulas today and have had some success.
Using a 1-10 player rating, I took the current year, subtracted the players birth year and if that number was 35 or lower, I divided their skill rating by 2 to determine their "expected contract length" ... This gives you the flexibility to still award contracts to anybody regardless of their age but gives you a decent idea of what somebody's "value" is based on their skill. Example, a 28 year old player who is rated an 8 would be expecting a 4 year contract in the off-season, whereas a 39 year old player who is rated a 10 would be expecting a 1 year contract because of his age. Since the contracts have to be manually entered into the team and player list however, the 39 year old can be given a 3 year contract if that's what you chose to give them.
In terms of player progression, I randomized a row of numbers from -1 to +3 ... Then I would add the previous years skill rating and the new "progression rating" to get the players new skill stat. Anything over 10 is maxed out at 10. The randomness works well because it can allow a player to slowly get better or suddenly have a great season, where the next season they may stay the same or regress back to where they were which often happens in pro sports. This new rating also plays into the previous expected contract rating. If a players skill set improves from a 5 to an 8, they will now expect a 4 year deal, where-as if a player went from a 7 to a 6, their slight decline in skill would lead to them expecting a 3 year deal. Players who had a skill set reach 0 would automatically retire. Example, a player who had a skill set rating of 6 in 2020 gets a +2 rating in 2021, therefore making them a player with an 8 rating for 2021.
The -1 max negative skill point works well IMO too, because a player that is a 10 wont just fall off the map, but can slowly decline season over season. They could also decline one season and then come back as a 10 the following year to be a consistent hall of fame type player.
THEN, I added up the skill points of all the players on the team to determine a players point percentage. Example, if there were 10 players on the team and their total skill rating was 75, a perfect 10 skill set would score 13% of that teams goals. So if that team scored 112 goals, this player would have scored 15 goals for his team. It worked perfect through every simulation I ran and thus generated scoring stats for all players on the team.
That's as far as I got today. I haven't toyed around with goalie stats and there was still some manual things that had to be done, but 90% of the data was automatically generating through the excel codes so it was a promising start. The real challenge will be making it user friendly because right now there are numbers everywhere. Once I figure out the best way to lay out the sheet and can start hiding columns it should clean up quickly.
Not sure if any of this makes sense reading it or not.
Offline
So this is what I have come up with so far.
I put together a random set of standings just to play around with it.
The Simulator tab currently has a ratings generator. After randomizing those numbers, the column needs to be copied and values only pasted into column k (cmd+shift+v on a mac). That gives every team the stat changes required.
Team 1 and Team 2 are based off of these numbers and the standings. Goals are determined by the teams goal for multiplied by the players skill point as a percentage. For assists, it's hard to determine what should be accurate there since goals can have anywhere between 0 and 2 assists, so I used the players skill stat before being capped at 10 as a percentage and multiplied that with goals for. This will allow some players to be more assist oriented players too which is a neat touch.
Goalies were a little trickier. I used their skill stat percentage to determine how many games they would have started. Then that skill stat determines how many wins, losses, and ot losses they would have had based on their starts. Their Goals against is the teams goals against multiplied by their skill stat percentage to determine how many goals were scored on them. Then of course GAA is their goals against divided by how many games they started.
The free agent list is as I explained above. All the teams free agents for the year will show up in the free agent tab. I am working on putting a retired players tab together.
The manual stuff that is still on the sheets is obviously copying and pasting the skill stats in the simular, however you cant get away from that because the RANDBETWEEN function will re-generate anytime a character on that sheet changes, therefore players stats would change everytime you did anything on the sheet.
The players previous year rating will need to be copied and pasted for every team each year. This again will need to be a paste values only otherwise it will paste the formula which wont work. This is a little bit of work but overall not too bad.
Each team will also require a new column added every year into the career section in order for that to continue. Or, the user could simply delete the career column if they dont want to keep track of the players team year by year, but I like the way that was organized on Steelman's spreadsheet.
The good news is that when moving players from one team to another, or retirement etc, the user just needs to cut the first sections of that players information and career and paste the new player into that spot since it is all text based information. This should make it fairly simple to move players from team to team via trade or free agency as you are just cutting and pasting all their information.
Let me know what you think or if you have any suggestions for things that need to be added or you would like to see added.
Offline
I've got dive more fully into it, but this looks like an amazing start!
I think the best way for me to test it is make a copy and port over a few of my THL teams and see how it translates since I'm very familiar with my teams and rosters.
Offline
I will send you a copy for sure. Let me colour code the columns so you know which columns have the formulas and should be left alone and which columns need to have stuff entered into it before I shoot it over. I'll see if I can do that tonight.
Offline
So I don't know if my system helps this out, but here we go.
Since I can't design logos and such, I have just been simulating a football league for the equivalent of 72 seasons, growing from an 8 team league to a two league, promotion/relegation style system with 48 teams. As pro football has large rosters, I don't do a lot of individual players, but I do quite a bit of research each off-season. So in my league, I use my trusty D&D dice to help out, with the home team getting a d12 and the road team getting a d10. Each team has a score that is cumulative based on their QB, Offense, Defense and Special Teams (in my current day, as I would expect passing to continue to grow and QBs being the most critical player on the team). So the QB accounts for 10%, Offense and Defense for 43% each, and Special Teams accounting for 6% (as I didn't want them to "break" a team). Now, with all that out of the way, each team gets a 0.0/10 rating in each category, using actual draft records to give each team "players", and adjusting based on those players. Offense and Defense will get a few points based on who is drafted, and if I expect them to be a player that would improve the team, or lose points if they get a "Tony Mandrich" (expect Packer references, it's what I know). They will also get a -1.0 to 1.0 modifier to account for free agency. Rating is capped at 10.0 on the positive side. No matter what, they're capped on the bottom at 3.5. 3.5 was determined to be the lowest option, as that's what my friend and I had consensus on for Brett Hundley, who wasn't good, but was solid enough to have a job. Your average starter should be about a 6.0, a.k.a. Alex Smith. You'd be okay with him as a starter, he wouldn't win you games, but you know he's not the best player out there, and he wouldn't lose you games. For the most part, the Offense and Defense scores will fall between 5.0 and 9.0. A team above 9.0 would be the game changing defenses, such as the Ravens and Buccaneers when they won their Super Bowls. Offense is similarly ranked, but doesn't include the QB. As with real football teams, a top tier QB will win with players Alex Smith wouldn't, and a lousy QB would lose with players Alex Smith wouldn't. Special Teams is based on when specific players came into the league. When the Packers got Ryan Longwell at kicker, they also drafted Brett Conway. So I would assign a positive score to one team, and a subpar score to another.
For QBs, it's based on the draft, and I'll track the QBs as they entered the league and which team they are now going to (Tom Brady is in Cincinnati), along with age. From there, the actual dice rolls are factored into things. A team with a good QB (in my history, Marcus Mariota went to a bad offensive team, was assigned a 5.5 coming out of college, and that team had really high dice rolls for that first season). As the team had high rolls with a subpar O-Rating, he got a plus rating. A couple seasons later, the O-Rating had increased for Mariota's team, so when there were bad dice rolls and low scores, Mariota gets some blame, and his score gets reduced, in story, he turned the ball over more. I probably should remove myself from that with some sort of formula, but... if I start doing that for QBs, I feel I have to find a way to make the draft more formulaic for assigning scores, and coupled with the fact I keep the draft in the same order and giving the players in that same order to the worst to best finishers from the previous year, I am not sure how I'd want to do that and keep it fair.