MSWL UNITEDMSWL U2WCTMVL
Thursday, July 23rd, 2026 - 10:10:54 PM (gmt)
 
ball MSWL UNITED WORLD CUP    2026 // Landing
 
Home Blog Bracket Forum LoginScores Stats TablesTeams
 
Coaches Directory Donate Guest Rules Schedule Wall
 
GROUP AGROUP BGROUP CGROUP D
GROUP EGROUP FGROUP GGROUP H
GROUP IGROUP JGROUP KGROUP L
Join
MSWL
UNITED!

Recent Entries

Allan Sellers
21 Comments
Vick Hall
3 Comments
Allan Sellers
6 Comments
Allan Sellers
4 Comments
Mike Parnaby
2 Comments
Allan Sellers
3 Comments
Dave Gittins
2 Comments
 
WC Rosters - How We Got Here
Posted by Allan Sellers on Monday, Jun. 8th, 2026 at 9:46 PM

Below you will see how I worked with the AI to gather rosters.  We had to wait until Tuesday (as in 6 days ago) until all rosters were official and on the FIFA site/Wiki.

I decided on an "approach" for Sweepers (when the AI says Olmec only allows 2 Sweepers that was the AI interpretation of me requesting just 2 as some rosters had 7).

If this goes well I want to do it again for other competitions such as UEFA EURO 2028.

I'm interested in feedback/ideas on roster creation and also takes on Sweepers.  Maybe we can find a database on fitness/injuries to setup FIT properly?   Thanks!

 

=============================

WC 2026 Roster Setup

Player Source & Generation Pipeline

Rosters were built in a multi-step SQL pipeline (wc-setup/ folder):

  1. 06_players.sql — Bulk-inserts generic squads for all 48 teams (names sourced from Wikipedia API)
  2. 07_players_real.sql — Overwrites 14 key nations with real player data (Argentina, Brazil, England, France, Spain, Germany, Portugal, Netherlands, Belgium, Croatia, Uruguay, Colombia, Senegal, Morocco)
  3. 09_players_remaining.sql — Overwrites the other 34 teams with real player names
  4. 10_fix_sw_positions.sql — Trims sweepers to exactly 2 per team

The Python script generate_players.py drove the data for the 14 key teams, using this structure per player:

(first_name, last_name, position, birth_year, birth_month, quality_tier, jersey_number)

 

Skill Level Assignment

A deterministic formula based on player caliber tier × FIFA ranking band, capped by age:

Caliber

Rank 1-5

Rank 6-15

Rank 16-30

Rank 31-48

World class

16

15

14

13

Elite

14

13

12

11

Solid

12

11

10

9

Squad

10

9

8

7

Fringe

8

7

7

6

Backup

6

6

5

5

Age caps: APP9, Age I14, Age II/III16, Age IV/V15

The Sweeper Problem

Real-world squads often carry 4-6 centre-backs, but the Olmec engine only supports 2 Sw slots per team lineup. Having more than 2 Sw on a roster means the engine can't properly field them.

Solution (10_fix_sw_positions.sql):

  • Keep the highest SL Sw (best CB)
  • Keep the lowest SL Sw (depth option)
  • Convert all other Sw players to Df (fullback)

The DB trigger UpdatePlayerInfoOnUpdate automatically recalculates pos_num and nls_value when position changes from SwDf.

Squad Composition (~26 per team)

Position

Count

Gk

3

Sw

2

Df

6-7

Mf

8-9

Fw

5-6

Physio (type='B')

1

Fitness Rules

  • APP players start at fitness 2, everyone else at 1
  • Cap: +2 max, -3 or lower = too injured to play
  • Starters lose 1 fitness per match; bench players gain 1 (capped at +2)

 

Olmec Age

Real Age

Notes

APP

18–20

Young breakout players

Age I

21–24

Young professionals

Age II

25–28

Peak years — best players cluster here

Age III

29–32

Experienced internationals

Age IV

33–36

Veterans

Age V

37

Very rare, exceptional longevity

SBY

Not used for WC rosters

 

Readers Comments

Al,

Great work in the Pundit's Corner. This game is top notch!

Brian Beerman on Tuesday, Jun. 9th, 2026 at 1:54 AM
 

Looks really good to me Al.  If you want the full World Cup experience then perhaps a future upgrade is individual ref personalities to reflect the erm, 'variable' qualities of some of those who end up officiating (assuming the host nation lets them into the country of course)

Roger Mendonça on Tuesday, Jun. 9th, 2026 at 5:50 AM
 
 
 
Terms and Conditions