DEV BLOG / 02
Finishing the player creation engine
Getting a league’s worth of players into a form the rest of the game can actually trust.

Last week I said I’d start with the players. That sounds straightforward until you ask the game to remember which player is which, put him in the right position, save him and still recognise him when you come back.
My first job was getting the initial Player Creation Engine into useful shape. “Useful” is doing some lifting there. Generating a pile of names is easy. Generating a football population the rest of the game can depend on takes a little more care.
What changed since the introduction
- The starter data has a consistent home. The original import brought in 32 teams and 400 player entries, with stable identities and checks around positions, conferences and divisions.
- Generated players have a repeatable identity. Names and starting information come from saved seeds, so reopening a profile doesn’t create a different person.
- Starting ability and potential are separate. What a player can do now and how far he might develop aren’t the same number.
- The league has several sources of players. Founding pools fill the opening draft; annual classes supply 160 prospects; shortages can bring new free agents into the world.
- Positional supply matters. A league full of impressive receivers still needs somebody willing to kick.
- Franchises can be saved independently. Coach and team selection, nicknames, ownership and the active Dynasty survive closing the game.
Those changes give the simulation a population to work with. They also give me somewhere sensible to look when the data is wrong, instead of blaming whichever file happens to be open.
One player should remain one player
A trade should change a player’s team. It shouldn’t quietly change his identity. A new save shouldn’t inherit somebody else’s roster because two names happen to match. Those are ordinary problems, but they sit underneath everything interesting I want the game to do.
The engine also handles the defensive squads differently from individual athletes. There are 42 persistent animal-themed DST squads in the player system. Their identity needs to survive too, even though their role in the football model is different.
Keeping player generation separate from match simulation has helped. Creating a new prospect shouldn’t consume the randomness intended for the next game. Otherwise a harmless-looking change to a name bank can become a very strange way to influence a score.
Finished enough to build on
This is the initial engine, not the last player-related work I’ll ever do. Custom player creation, portraits and biographies still have their own problems waiting in line.
For now, I can create the people, keep their identities straight and feed them into a saved league. I’ll accept that as progress. My standards have become more specific than “it printed something.”
Next week I need to give all these players something to do. That means finishing the first simulation loop.
