Recently I ran across a problem with my deployed version of ottoneu: there was no programmatic limit for games played or innings pitched for any given fantasy team.
Let me back up.
Fantasy baseball games, in general, have limits around the number of games a team can ‘play’ at any given position. For example, if there are 162 games in a season, it doesn’t make much sense to allow an owner to manipulate his lineup enough to squeeze 170 games out of a given position. This might not be possible for all owners, and it doesn’t fit in with the idea of mapping fantasy baseball to real baseball. If the Yankees can’t go out on their off days and get extra games in with their backups, well, then, neither should your fantasy team that you’ve cleverly named after them.
Most games will run with limits along the lines of 162 games per lineup slot, which includes things like 162 games per OF spot (in our 5OF lineup, we have a 810 game limit at OF) as well as 162 games per special position (middle infielder, corner infielder, utility). Innings pitched can be a little bit more varied, but we went with the tried and true multiply 162*9 and add a few extra to get to a nice round number, so our limit is 1500IP.
So back to where I started – ottoneu did not have programmatic enforcement in place for when teams went over these limits. While this isn’t a gigantic problem with 12 owners, once you’re talking a game with leagues on the order of 100, then yes, we have a problem. I decided to tackle the problem last week, and immediately an interesting question arises: when does the inning limit kick in? Can you run right up to 1499.2 IP at the end of a day, and start 5 guys the next day and then the limit kicks in at the end? Should there be a rule put in place that says when you are within some arbitrary distance of the 1500 IP limit at the end of a day, you can’t play any more pitchers? Or the final option – add up stats until you hit 1500 IP, no matter if it is in the middle of a start or an appearance by a reliever or anything?
I kicked this question around with Geoff for a little bit, and we decided that first off, it made no sense to build any kind of lower buffer. A 1500 IP limit doesn’t mean “1495-1500”. We thought about calculating the inning count at the end of every day, but this solution again made a inning limit closer to “1500-1525” instead of the hard 1500IP cap that we wanted. So that leaves the last option.
The idea of these limits, like I said, is not only to put everyone on equal footing, but also to line up the game against real baseball. This last option, in which the live scoring script literally stops taking your statistics once you hit 1500IP, is the least connected to real baseball. If I’m at 1497.0 IP, and Jon Lester going on the last day of the season (I know, it would never happen), there’s a very real possibility that only half of his start will count towards my fantasy statistics. Cutting off starts in the middle divorces the idea that these player’s days line up perfectly with your team’s day.
We decided to go with this option, but where does that leave ottoneu? The first line of ottoneu’s constitution is as follows:
The intention of this league is to mimic the job of an actual general manager as closely as possible.
Clearly managing who plays and who doesn’t on a day to day level isn’t on a GM’s plate, but if we our goal is to reflect reality, this solution is actively hurting us. I don’t have any good answers here – one can go down the path of explaining the other ways ottoneu isn’t like real baseball, but I am not sure if that is a compelling defense of this solution. Clearly the alternatives we discussed were not better than what we decided on, but maybe there was something else I didn’t consider? I open it to the floor.
The best part of designing a game is that you get to run into interesting questions about the system you are building all the time. Of course, that is also the worst part.