Offline
I'm wondering if any of you have ever taken a simulated score, like a football score, for example, and then broken it down into a scoring summary, as a way to give a game more realism, rather than to just have a score at the end of the game. If I remember correctly, Veras used to have quarterly scoring broken down for the AFA back in the day, but I'm not sure if each quarter was simulated, or if a final score was broken down into quarters.
Here's what I'm getting at with this: I currently simulate the GSL, where the output is a single final score for each team. I would like to find a way to give "live" game updates, instead of posting the score 3 hours after the game start time. For live game updates, I would want to simulate the game at game start time, and then break down the team scores, into reasonable scoring chunks (20 points can be divided down to two touchdowns, and two field goals, or three touchdowns, and a missed extra point, etc.).
Finding a way to break down the scores is one problem. The other issue is, giving each of these scores a game time in which they were scored. There would have to be certain rules associated with scores, for example, a team probably wouldn't score a field goal in the first minute of a half, as that's very unlikely. Same with, a team probably won't score a field goal in less than a minute of game time after the other team had just scored.
By hand, I think this problem is easier to solve, but my goal would be to create a set of rules to break down scores, then give scores a game time when the score occurred, so that I can automatically break down a score at simulation time. This would make it easy for me to then also show live score updates, based on when in the game a score happened.
I'll take any and all thoughts, ideas, and experience you all may have on something like this.
Offline
I’ll let you know that I’m pretty sure Veras simulated by play. Which is how he was able to get such detailed reviews. I do something similar but much less detailed and just fill in some of the details in the write up.
I’m not sure how you’d be able to break up a final score into quarters besides just doing it arbitrarily. I think creating rules would be very complicated to achieve.
Offline
Simulating play by play would actually be a better way to do it, it's just more complicated. With play by play, I could post live play updates, instead of just live score updates.
I've done some play by play simulation in the past, but it never accounted for team offensive and defensive strengths, which is something that's very important in the GSL for league parity.
Do you simulate play by play, factoring in team strengths? I'm interested in how you've done your simulations.
Offline
Veras' simulation was different. For the regular season, he did a more generic method based on ratings.
When it came to his championship, it wasn't so much as by play as it was by time. He'd roll to determine the time of the score, using a couple dice. From there, he'd determine what type of score it is and build the story. So he determined it by the time of the score, not every play.
Offline
Dan O'Mac wrote:
Veras' simulation was different. For the regular season, he did a more generic method based on ratings.
When it came to his championship, it wasn't so much as by play as it was by time. He'd roll to determine the time of the score, using a couple dice. From there, he'd determine what type of score it is and build the story. So he determined it by the time of the score, not every play.
That's helpful to know, and it's given me some ideas.
I think I will be able to break down any score into parts, using some simplified rules. In essence, in football, the most point you can score at once is 8 points (I include extra points in with the touchdown score, because it is an untimed down). Any score greater than 8 points can be broken down in a finite number of ways, so from there, it's down to randomly selecting which individual scores add up to the final score. Since I'm automating this with code, once the rules are written once, I can always run the code to split the scores.
The next problem to solve is assigning scores to a game time. Each game is 3600 game seconds. I can randomly select a second, and assign an individual score to that second. But, the score can only be assigned to that second, if it meets another set of simple rules. For instance, a certain amount of time must pass between field goal scores (because rarely will you see a team score a field goal in less than a minute after gaining possession of the ball). So rules that account for things like that, and also when in the game a score occurs.
Once I've assigned each individual game score to a game second, I can assign a game second to a real time second. In the simplest form, if a game lasts 3 hours, each second of game time takes 3 seconds of real time, if I divide real time evenly by game time. I'd like to add in a half time, and some variability. To do that, each game second can take a variable amount of real time seconds, but I will only allow for a minimum and maximum amount of time to pass in real time for each quarter. This will make sure that every game finishes at a different time.
This is the simplest way I can think to do this, and it's not without flaws, but it allows me to keep my actual simulation the same, and split the scores into individual scores at individual game times, and map them to real time.
Offline
I've been able to successfully write a set of rules for breaking down a score into its basic individual scoring components of 2, 3, 6, 7, and 8 points, and come up with a realistic scoring summary. The output of the code looks like the following for now:
Score Summary (BAL @ LV):
Quarter 1
[3-0] 08:46 - BAL field goal
[3-3] 05:32 - LV field goal
[3-10] 03:34 - LV touchdown (PAT)
Quarter 2
[3-13] 07:26 - LV field goal
[3-20] 00:08 - LV touchdown (PAT)
Quarter 3
[10-20] 13:27 - BAL touchdown (PAT)
[17-20] 02:54 - BAL touchdown (PAT)
Quarter 4
[24-20] 00:18 - BAL touchdown (PAT)
FINAL
BAL - 24
LV - 20
How the scores took place will be part of the story telling of the game.
Now that I've got the score summary, I should be able to use the generated data to map out each second of game time, and associate that second of game time to a time in real life, which will be phase 2 of getting live score updates for the GSL.