← Back to the dev blog

DEV BLOG / 03

Finishing the simulation engine

The player data finally has somewhere to go: one play, one result and one season at a time.

Development post 3: Finishing the simulation engine. Artwork and captured details from Idleball.
Pixel artwork from Idleball.

Having a player engine meant I could produce a league’s worth of athletes. It didn’t mean they were playing football yet. A collection of ratings can sit there indefinitely looking organised. I needed the game to use them.

The initial Simulation Engine now has the draft-to-season loop around it. That’s a big piece of the foundation, though I’m learning to be careful with the word “finished.” It usually means I’ve reached the next set of questions.

What changed since the player-engine update

  • Games advance play by play. Possession, downs, field position, the clock, scoring and overtime belong to the same simulation.
  • Different positions contribute differently. Passing, rushing, receiving, kicking and defensive production are recorded in their proper places.
  • Kickoff inputs are fixed for the match. The game works from the prepared teams rather than letting a later menu change rewrite a game already underway.
  • Football and fantasy points have different jobs. The football score decides the winner. Contribution points help describe what a player did.
  • The draft records its decisions. The snake order, reversing rounds, queue, computer picks and passes leave a trail I can inspect.
  • The season has an ending. Standings lead to the postseason, a championship and the next season’s preparation.
  • Careers can continue beyond one year. Development respects potential; retirement preserves statistics; family successors start from inherited original talent rather than a parent’s trained peak.

I’ve put the separate cup route aside so I can concentrate on getting the normal season right. One competition that works would be a perfectly respectable start.

Numbers that mean something

Power, Finesse and Read contests sit inside the play simulation, alongside Heart and the position-specific abilities. They’re different from the manager’s broader pregame plan, which I’ll get into later.

I’m trying to keep that distinction clear because I’m building a management game. You prepare the team and watch the consequences. You aren’t being asked to press a button for every individual tackle.

The same care applies to records. A completed game needs a score, participants and production that agree with one another. An attractive results screen can’t rescue a box score that has lost track of who played.

A foundation, with plenty left to tune

This gets the first engine loop into place. It doesn’t prove every season is balanced or every long career holds together. I still need to run a complete season and see whether the results hold together, then try keeping the same league going for longer.

At least the players now have a job beyond occupying a spreadsheet. Next I’m going to see whether I can give them faces without hand-drawing an entire football civilisation.

All blog posts