Luscofusco Studio background image

Devlog #2 – Football Legends: putting a face to the players (literally)

Today I want to talk about a visual aspect of Football Legends that might seem minor, but actually carries a lot of weight: your players’ faces.

Quick math

Let’s crunch some numbers to put things into perspective:

  • 10 countries
  • 8,192 teams per country
  • 25 players per team

That gives us 2,048,000 players in main squads.
And if we add a youth team for each club, with, say, 18 more players, the total goes up to 3,522,560 players.
And I’m not even counting staff faces!

Yep — over three and a half million unique faces.

And here’s the big question:

How the heck do you generate 3.5 million different images?

An old idea, a new solution

Luckily, I remembered a technique we used years ago on an animation project. Back then, we created facial expressions using flat images of eyes and mouths, layering them like “stickers” on top of a base model.

It wasn’t exactly what I needed… but it was the perfect starting point.I also looked into how other games tackle this, and everything clicked — this was the ideal solution.

How I apply it in Football Legends

The idea was to break each face down into different interchangeable parts, and create variations for each one.
Then, when generating a new player, I combine those pieces following specific rules to ensure variety and consistency.

Here are the parts I’m using right now:

  • backface
  • headbase
  • facehair
  • hair
  • eyebrows
  • eyes
  • nose
  • mouth
  • facedetails

👉 Here are some examples in Illustrator:

The importance of organization

Each image has a very clear naming structure:
partName_skinTone_variantNumber_hairColor.png

This allows for some super useful things:

  • Apply specific rules for certain combinations (for example, red-haired players are very rare in some countries).
  • Control how common or rare certain features are based on a player’s nationality.
  • Automate the entire image generation and management system.

System advantages

  • Lightweight: Each piece takes between 2 and 15 KB, so even with thousands of combinations, disk space stays reasonable.
  • Scalable: Creating a new variant is as simple as designing it, naming it properly, and exporting it with a script. Then, just upload it to the server — the game can use it automatically.

How many variants do I have?

Not as many as I’d like. I know the system is visually limited right now, but the important thing is that it works, and it can be expanded with no issues.

All it needs is time — time to keep adding more parts and make player (and staff) faces even richer.

And personally, I’m pretty proud of the result.
What started as an overwhelming problem turned into a flexible, lightweight, and scalable system.


Got feedback or ideas? Get in touch here — I’d love to hear from you!

See you in the next devlog!

Leave a Reply

Your email address will not be published. Required fields are marked *