DEV BLOG / 09
Fifty seasons. I may have got carried away.
The first completed 50-season dynasty run, with plenty still left to improve.
Game screenshots
In the last post, getting through one season felt like landing on the moon. Then the engine made it through fifty seasons in the same dynasty.
Fifty.
This was a simulation-engine run outside the game interface, with saves and reloads between years.
I don’t have a particularly restrained explanation for how that felt. A year earlier, I was rusty enough that organising the player data was a major undertaking. Now I had a football world that could keep going for an entire coaching career. I was still the same dad trying to work out his next career move. The project, somehow, had become much bigger.
What changed since the last post
- One completed season became fifty. The engine reached the end of the long dynasty run I’d been aiming for.
- Drafting and player careers went through repeated yearly rollovers. I could look beyond the players who were there at the beginning.
- Saving and reloading were part of the run. Each year went through the normal save and reload process.
- The growing dynasty gave me much more to inspect. More seasons meant more results, more player data and a larger save to work with.
- I had a clearer job for the next stage. Getting a long simulation run through was progress; making that career readable and enjoyable in the game still needed work.
The years need somewhere to go
Views from a separate prototype save. The fifty-season engine run is recorded in the checkpoints below.


There was no victory lap around the code
The run needed help along the way. I had to stop, deal with problems, and carry on with the same dynasty. Some computer-controlled teams ran into salary-cap problems. The test runner made ordinary roster cuts and found affordable cover so that dynasty could keep going. I’d love to say I pressed a button and spent the rest of the time looking quietly competent. That would be a very generous account of my contribution.
But it got there. I didn’t need to pretend the rough parts hadn’t happened to enjoy that.
The long run also gave me a less exciting souvenir: a much better view of how the stored data and memory grew as the seasons accumulated. Not quite a moon rock. Probably more useful to the game, though.
What the run recorded
I kept checkpoints from a fifty-season engine run. The game count includes the whole league, not just one team.
| Completed seasons | League games |
|---|---|
| 1 | 285 |
| 10 | 2,850 |
| 25 | 7,125 |
| 50 | 14,250 |
Those are numbers from the simulation run, rather than scores lifted out of the screenshots. Fourteen thousand games is an absurd amount of football for a project that started with me arguing with a player profile.
Fifty seasons need to feel like a career
I want the players and decisions from earlier seasons to mean something later. A championship, a draft pick or a player who stayed with the team should have a place in that history. Running the years is part of that job. Giving you a good way to read and use what happened is another part.
I’m proud of this milestone. I’m also very aware that a completed engine run isn’t the same as having every part of the game ready. The longer I work on it, the less inclined I am to declare victory because one thing went well.
More than the final score
Earlier screens from a separate development save. The parts around a long career still need work.


The next job was working through the roster and game screens, with a lot more reason to care about the information they were showing.
