Chapter 11
Editing game data
You can create countries, leagues, clubs and footballers with ordinary text files. This guide starts with the smallest useful example and explains what the game does with every value when it builds a new career.
How data becomes a career
Think of the recognised Data root inside a football-world package as a set of instructions for building a new world. A league file says which country, competitions and clubs belong together. Each club name leads to a team file. A team file can list real or invented footballers, or let the game create a balanced squad. Optional player details can then describe nationality, age, ability, individual skills and personality.
When you choose the normal Start a new career route, select the package on Career football world and then choose its leagues on Select Database. Championship Soccer reads those files and creates the clubs, players, fixtures and calendar. Later changes to the text files do not rewrite a career that already exists; start another career when you want to see revised data.
Quick start opens an already prepared football world. To test a changed league or team, start a normally assembled career, select the edited package and include its league selection.
You do not have to describe everything. A short team file can produce a fully generated squad. A player may have only a nationality, only a birth year, a few favourite skills, or a complete profile. Missing information is filled in through the same footballer-creation process used elsewhere in the game.
If you are installing an existing community world, or need the supported folder, ZIP and Package.ini layouts, begin with Custom football worlds & user content. This chapter concentrates on writing the league, team and player files themselves.
Your first football-world package
Before editing
- Leave the installed
Datafolder intact. Create a separate package underDocuments\My Games\Championship Soccer\DataSets. The supplied world then remains available as a working reference and fallback. - Use a plain-text editor. Save files as
.txt, not as a word-processing document. Basic English letters and numbers are the safest choice. For accented European names, choose Western European or Windows-1252 text when your editor offers an encoding choice. - Begin from a similar working file. Copy the individual league or team file you want to use as an example into your package before editing it. A comparable competition provides valid shirt colours, timing and a useful layout.
- Change one layer at a time. First make the country and clubs appear, then add named players, and finally add detailed player values.
- Close the game before changing files. Save the complete set, then start a new career and select your package.
Files that belong to the football-world package
The examples below assume the recommended package path DataSets\My Football World\Data. A local ZIP can contain the same structure.
| Recommended location from the package folder | What belongs there | Is it required? |
|---|---|---|
Data/League | Country and competition files. These list the divisions and the clubs that will be loaded. | Yes, for a selectable custom package. |
Data/Team | One file for each club or national side named by the selected data. | Use one for every club you list. |
Data/Player | Optional separate detail files for individual footballers. | No. Details can also live inside a team file. |
Data/StartYear.txt | An optional suggested year for a newly created career. | No. The value can still be changed on Select Database. |
Files that belong to shared user Data
Generated-name pools and supported runtime replacements are global rather than private to the selected package. Put them in the fixed Documents\My Games\Championship Soccer\Data folder:
| Shared user location | What belongs there | Scope |
|---|---|---|
Data/Names | First-name and family-name lists used when the game generates footballers. | Files fall back individually to the supplied name pool when absent. |
Data/Graphics | Supported replacements such as Graphics1.bmp, color_table.txt and Pointer.bmp. | Global, independently of the selected world. |
Data/Teamsounds | Custom team entrance and goal sounds referred to by team data. | Each missing sound can fall back to the supplied file. |
Data/Fansounds | A complete custom fan-sound pool. | The custom pool is not mixed with the supplied pool. |
Do not place these files only inside a named DataSets package or package ZIP. See Shared user Data for fallback rules, supported files and boundaries.
Simple text rules
- Use one instruction, team name, player name or value per line.
- Keep names consistent. A club listed as
Example Unitedneeds the team fileData/Team/Example United.txt. - Put a comment on its own line and begin it in the first column with
;. Do not place comments after a value. - Keep quotation marks around names and paths where the examples show them.
- Blank lines are harmless. An empty optional player value is treated as information you chose not to provide.
- No format number or special version header is needed.
Creating a country and its leagues
Save the following example as Data/League/Exampleland.txt inside your package. It creates one country, points to two shared name lists and adds a four-club top division.
! Country "Exampleland"
! Names "Data/Names/Exampleland_1st.txt" "Data/Names/Exampleland_2nd.txt"
: Premier Division
+ Division 1
+ promotions 0
+ relegations 0
+ reputation 10
Example United
Riverside City
Northport Athletic
Southvale Town
| Line | Meaning |
|---|---|
! Country "Exampleland" | Creates the country name used by the league, clubs, generated players and nationality matching. |
! Names "…" "…" | Chooses first-name and family-name files from the fixed shared user Data/Names folder. |
: Premier Division | Starts a division with the displayed name “Premier Division”. |
+ Division 1 | Marks this as the first level. A second level would use + Division 2. |
+ promotions 0 | Sets how many clubs move up after the season. The top level normally uses zero. |
+ relegations 0 | Sets how many clubs move down. Use a number that makes sense for the next division, if one exists. |
+ reputation 10 | Sets the standing of the division. Existing files provide useful examples from small regional competitions to leading leagues. |
| Plain club-name lines | Add those clubs to the current division, in the order shown. |
Name lists for generated players
Keep the historical Data/Names/... path in the league file, but create the actual Exampleland_1st.txt in shared Documents\My Games\Championship Soccer\Data\Names. Put one first name on each line:
Alex
Jamie
Morgan
Sam
Taylor
Create Exampleland_2nd.txt in that same shared folder:
Brown
Green
Hill
River
Stone
The game combines these lists when it needs another footballer. Larger lists create more variety and reduce repeated names during long careers. A name file stored only inside this package or its ZIP is not used as a private package source, so give shared files distinctive names when several custom worlds are installed.
More divisions
Start another block with a new : line, set + Division 2, promotions, relegations and reputation, then list its clubs. Make sure promotion and relegation counts agree: if two clubs leave the top division, two clubs should normally arrive from the division below.
Cup competitions
Cups use several linked lines for entry rounds, team counts and calendar weeks. For a first world, it is perfectly valid to begin with leagues only. When adding a cup, copy a working cup block from an existing country with a similar number of teams and round structure. Change the displayed cup and country names carefully, then test the complete season before altering its round sizes or weeks.
A cup round placed in an unsuitable week can collide with league or international fixtures. A close existing competition is the safest starting point for a custom cup.
Creating teams and squads
Every club line in the league file should have a matching file in Data/Team. For Example United, create Data/Team/Example United.txt.
The smallest useful team file
! Name "Example United"
! Reputation 10
! 1 shirt Red1
! 1 shorts White
! 2 shirt White
! 2 shorts Red1
This is enough to identify the club, give it a football level and define two kits. If fewer than eleven named footballers are supplied, the game completes the squad with suitable positions and names from the country’s name lists.
- Name
- The club name shown in the game. Keep it the same as the league entry and filename.
- Reputation
- The club’s starting football standing. Team files normally use a scale from 1 for a very small side to 20 for an elite side.
- Kit 1
- The first-choice shirt and shorts.
- Kit 2
- The change kit used when the first colours would be confusing.
Team files can also describe stripes, sleeves, socks and a third kit. Use a supported colour name such as Red1, Blue2, White or Black. The standard kit colour palette below shows every included English name and its default rendered value.
Adding named players
Place roster lines after the team information and before any detailed $ blocks:
Taylor, Alex (1997): GK
Brown, Jamie (1998): D L
Stone, Morgan (1995): D C
River, Sam (2000): M C
Green, Taylor (1999): AM R
Hill, Alex (1996): F C
The recommended pattern is Family name, First name (birth year): Position Side. The name and year also make it easier to connect the roster line to a detailed player block or separate player file.
| Code | Position | Example |
|---|---|---|
GK | Goalkeeper | GK |
SW | Sweeper | SW C |
D | Defender | D L or D C |
DM | Defensive midfielder | DM C |
M | Midfielder | M L, M C or M R |
AM | Attacking midfielder | AM R |
F | Forward | F C |
The side letters are L for left, C for centre and R for right. If you omit a side, one is chosen when the squad is created. If you omit a position, the game uses the next position the incomplete squad needs. Explicit position and side codes make the result easier to predict.
Data/Team reference
Kit colour names
Enter a colour name in a team file. The palette below shows the English names included with the standard game and what each colour will look like. RGB and hexadecimal values are provided for reference and cannot be entered in place of a name.
To replace the kit colour-name table, put color_table.txt in shared Documents\My Games\Championship Soccer\Data\Graphics. It applies independently of the selected football world and can add different names or make the same name render in another colour. If no custom table is present, the supplied installation table remains in use. A table stored only in a named package folder or ZIP is not selected with that world.
! 1 shirt Blue3
! 1 stripes White
! 1 sleeves Blue3
! 1 shorts White
! 1 socks Blue3
- Kit number
- The first number selects kit
1,2or3. - Kit parts
- Set
shirt,stripes,sleeves,shortsandsocksseparately. - Inheritance
- A part without its own definition uses the shirt colour.
ASCII capitalisation is ignored, so Blue3, blue3 and BLUE3 are equivalent. Enter a complete name from the palette rather than a shortened form.
English descriptive names
Every English spelling shown together on one card is an alias for the same colour.
-
blackRGB 0, 0, 0#000000
-
whiteRGB 255, 255, 255#FFFFFF
-
redRGB 245, 0, 0#F50000
-
red2RGB 240, 0, 0#F00000
-
deepreddeep-reddarkreddark-redRGB 221, 0, 0#DD0000
-
orangeRGB 238, 136, 0#EE8800
-
blueRGB 16, 16, 250#1010FA
-
lightgreylightgraylight-graylight-greyRGB 187, 187, 187#BBBBBB
-
greygrayRGB 153, 153, 153#999999
-
darkgraydark-graydark-greydarkgreydeep-graydeep-greyRGB 85, 85, 85#555555
-
greenRGB 5, 170, 5#05AA05
-
lightgreenlight-greenRGB 7, 187, 7#07BB07
-
darkgreendark-greendeepgreendeep-greenRGB 0, 119, 0#007700
-
yellowRGB 253, 253, 2#FDFD02
-
dark-yellowdeep-yellowdarkyellowdeepyellowRGB 232, 237, 0#E8ED00
-
lightbluelight-blueRGB 153, 153, 252#9999FC
-
brownRGB 204, 85, 85#CC5555
-
deepbluedeep-bluedark-bluedarkblueRGB 0, 0, 153#000099
-
purplepinkRGB 207, 145, 236#CF91EC
-
violetRGB 80, 0, 80#500050
-
lightblue2light-blue2RGB 140, 188, 250#8CBCFA
-
blue-greyblue-grayRGB 177, 190, 194#B1BEC2
-
black-blueRGB 0, 0, 18#000012
-
light-brownRGB 153, 68, 68#994444
Additional unique palette names
These numbered and specialist names provide another 30 distinct colours.
Grey1RGB 128, 128, 128#808080
Grey2RGB 112, 112, 144#707090
Red1RGB 224, 0, 0#E00000
Red3RGB 144, 16, 0#901000
Orange1RGB 255, 112, 0#FF7000
Orange2RGB 224, 128, 0#E08000
Yellow1RGB 255, 240, 0#FFF000
Yellow2RGB 255, 208, 0#FFD000
Green1RGB 0, 128, 48#008030
Green2RGB 0, 96, 48#006030
Blue1RGB 0, 32, 96#002060
Blue2RGB 0, 32, 128#002080
Blue3RGB 0, 48, 160#0030A0
Blue4RGB 0, 80, 208#0050D0
Blue5RGB 96, 192, 255#60C0FF
Purple1RGB 128, 0, 64#800040
Purple2RGB 96, 0, 96#600060
Purple3RGB 128, 0, 32#800020
Brown1RGB 128, 64, 0#804000
Brown2RGB 160, 80, 0#A05000
GoldRGB 217, 177, 40#D9B128
Grey3RGB 198, 198, 198#C6C6C6
Purple4RGB 206, 132, 206#CE84CE
Green3RGB 0, 136, 136#008888
Green4RGB 128, 200, 72#80C848
AmberRGB 255, 170, 0#FFAA00
Cyan1RGB 16, 168, 168#10A8A8
Cyan2RGB 5, 97, 97#056161
Red4RGB 223, 30, 122#DF1E7A
Green5RGB 0, 62, 48#003E30
Adding player details
You can keep player details inside the team file or place them in a separate file. Both methods accept the same fields, and every field is optional.
Method 1: a detail block inside the team file
After all roster lines, begin the player’s details with $ followed by exactly the same displayed name:
$ Taylor, Alex (1997)
nationality = England
ability = 135
position = GK
dateOfBirth = 1997-06-23
handling = ++
reflexes = +++
teamwork = +
loyalty = 16
The next $ line starts another player. Keep all plain roster lines above the first detail block.
Method 2: a separate player file
Create Data/Player/Taylor, Alex (1997).txt and place only the value lines inside it:
nationality = England
ability = 135
dateOfBirth = 1997-06-23
handling = ++
reflexes = +++
If the same footballer has both a matching file in Data/Player and a $ block in the team file, the separate player file supplies the details. The two sources are not mixed. Keep one complete preferred version to avoid surprises.
General player fields
| Keyword | Example | What it means |
|---|---|---|
nationality | England | The country for which the footballer is eligible. Use the country’s displayed data name. |
ability | 135 | The intended overall football level, from 10 to 250. It is position-aware rather than a simple average of every skill. |
reputation | 130 | The player’s standing and recognition in the football world. It does not directly replace the skill profile. |
potential | 165 | The player’s development outlook. It can be above current ability for a player with room to improve. |
position | AM R | The football role. Keep it consistent with the roster line; the roster position is the clearest place to define the player’s natural role and side. |
yearOfBirth | 1997 | A birth year when the exact day and month are unknown. |
dateOfBirth | 1997-06-23 | An exact date in year-month-day order. |
skin | dark | Optional appearance. Supported descriptions are white, dark and black. |
hair | darkbrown | Optional appearance. Common supported descriptions include blond, lightbrown, darkbrown and black. |
nationality is the recommended spelling. Older files using nation remain accepted. Keywords are not sensitive to capital letters, spaces, hyphens or underscores, so yearOfBirth, year of birth and year_of_birth have the same meaning. Using the recommended spellings makes a file easier for other people to read.
Skills, personality and value hints
Every skill below is optional. You may set one, several, all of them or none. The first group describes actions and movement on the pitch. The later values give footballers different styles and career behaviour even when their visible football level is similar.
| Recommended keyword | Meaning | Useful for |
|---|---|---|
speed | Running pace | Covering ground and separating from opponents |
shotPower | Strength of strikes | Shooting and deliberate ball striking |
shotControl | Accuracy and clean contact | Finishing, passing and controlled strikes |
stamina | Resistance to fatigue | Maintaining work across a match |
dribbling | Movement while carrying the ball | Longer attacking runs |
jumping | Aerial reach | Headers and aerial contests |
anticipation | Reading and reacting to play | Loose balls, movement and positioning |
agility | Turning and movement control | Changing direction and recovering balance |
tackling | Winning direct challenges | Defensive contests |
heading | Control in the air | Attacking and defensive headers |
ballControl | Taking and keeping possession | First touches and close control |
handling | Goalkeeper catching | Taking control instead of parrying |
reflexes | Quick reactions | Goalkeeping and fast developing situations |
aggression | Competitive intensity | How readily the player commits to contests |
longShots | Preference and quality from distance | Long-range attacking play |
teamwork | Collective play | Supporting team shape and shared decisions |
offensiveness | Attacking outlook | How naturally the player favours forward play |
forwardRuns | Willingness to advance | Runs beyond the current position |
vision | Awareness of useful options | Creative and team-aware decisions |
adaptability | Adjustment to a different country | Settling after an international move |
loyalty | Attachment and commitment | Contract and career decisions |
greed | Financial ambition | Wage expectations and money-related decisions |
Exact values from 1 to 20
Use a whole number when you want to describe the profile precisely:
speed = 18
tackling = 7
vision = 16
A value of 1 describes a very weak quality and 20 an exceptional one. Do not use numeric zero for a skill. The character 0 has a different meaning: it is the neutral hint described below.
Hints with natural variation
Use hints when you want to describe the kind of footballer without fixing every detail. Each new import chooses a value within the shown band:
| Hint | Meaning | Possible starting value |
|---|---|---|
+++ | Outstanding | 18–20 |
++ | Very strong | 15–18 |
+ | Strong | 12–15 |
0 | Neutral or ordinary | 9–12 |
- | Below average | 7–9 |
-- | Weak | 4–6 |
--- | Very weak | 1–3 |
You may also use a personal range such as speed = 15-18. Both ends must remain between 1 and 20, and the smaller number must come first.
Older data files may use keeping for handling, attack-mindedness for offensiveness, adaptation for adaptability, or greediness for greed. These spellings remain accepted. The letter o is also accepted as the historical form of the neutral 0 hint.
How the final footballer is created
A data file describes your intention; the game turns that description into a complete footballer who fits the career world. This is why some individual numbers can differ from the text file even when the file has been read correctly.
Ability is the overall target
ability represents the player’s intended total football level in his natural position. A goalkeeper relies on a different combination of skills from a forward, so ability is not the simple average of every number.
If you supply both ability and skills, the skills describe the shape of the player while ability sets the total level. The game preserves the relative strengths as closely as possible, then adjusts the complete set so the player actually reaches the requested ability.
A file that asks for every important skill to be 20 but sets ability to 80 contains two conflicting wishes. Keeping all the 20s would create a far stronger footballer. The values are therefore brought down together while the strongest and weakest parts of the requested profile remain recognisable.
What happens when information is missing
| What you provide | What the game does |
|---|---|
| No player details | Creates a normal, positionally balanced footballer for the club. |
| Only nationality or birth information | Uses that identity information and generates the football profile normally. |
| Only ability | Creates a suitable positional profile at exactly that overall level. |
| A few skills, without ability | Uses them as the player’s main tendencies. The club, position and normal creation process still determine the overall level. |
| Ability and a few skills | Generates the missing qualities, preserves the requested tendencies and balances the complete profile to the ability. |
| All skills, without ability | Uses the full profile as a pattern, then fits it to the normal overall level for that created player. |
| All skills and ability | Uses ability as the final target and preserves the supplied profile as closely as the 1–20 limits allow. |
| An invalid optional value | Ignores that one value while retaining the other valid information. |
Hints are intentionally different between careers
++ means “make this a clear strength”, not “always use one fixed number”. Starting two new careers can therefore produce slightly different footballers from the same hint-based file. Exact numbers reduce this variation, although the final ability balancing described above still applies.
Ability, potential and reputation are separate
Ability describes present football quality. Potential describes the outlook for development. Reputation describes how established and recognised the player is. A young prospect can have modest ability, high potential and low reputation; an ageing star can have strong ability and reputation with little remaining development room.
Birth dates, nationality and duplicate players
Birth year or full date
Use either of these, according to how much you know:
yearOfBirth = 1997
dateOfBirth = 1997-06-23
A full date must always use four digits for the year, two for the month and two for the day. If both fields are present and disagree, the valid full date wins. The player’s age is calculated from the simulation’s start year.
How duplicate detection uses birth dates
The same normalised name and full birth date identify the same footballer across teams. If that exact identity appears again, only one copy is kept. Two players may share a name when their full dates differ. Without a full date, name matching is deliberately more cautious so that common names in different clubs are not removed by mistake.
Nationality and national-team eligibility
Use the exact displayed country name from your selected league data:
nationality = England
nationality = Brazil
nationality = Exampleland
If nationality is omitted, a club player uses the club’s country. A spelling that does not match any loaded country cannot provide valid national-team eligibility, so check spaces and country naming carefully. Nationality does not have to match the club country: an English footballer can play for a German club and still remain eligible for England.
Choosing the career start year
Create StartYear.txt directly in the recognised package data root when your world belongs to a different era. Its simplest and recommended content is one four-digit year:
2023
The file suggests the starting point for the calendar and for ages calculated from yearOfBirth or dateOfBirth. Check the value shown on Select Database: that displayed value is authoritative and may be changed before the world is created.
After import, the save contains its date, clubs, players and competitions. Changing, moving or removing StartYear.txt cannot move or recalculate an existing career; it affects only subsequently created careers.
The file should contain a year from 1000 to 9999. The initial suggestion is resolved from a previously chosen and successfully used year, then the selected package, then the installed data, and finally 2004. A start year is not a request to rewrite historical names; it supplies the calendar reference from which stated birth dates are interpreted. The package start-year guide explains this precedence in full.
Checking your work
- Check the names first. Confirm that every club line has a team file with the same name, and every player detail block or separate file matches its roster name.
- Start a new, normally assembled career. Select the edited football-world package, turn off Use only fantasy players in new careers when checking named squads, and choose the edited country and division instead of using Quick Start.
- Open the league table. Confirm the division name, club count, team names and promotion or relegation expectations.
- Open several squads. Check that generated positions are balanced, named players appear, kits are recognisable and club strength is plausible.
- Open player information. Check nationality, age, position, ability and the general shape of the requested skills.
- Advance the calendar. Check fixtures, cup rounds and the first international periods before beginning a long career.
- Save under a new filename. Keep your test career separate from an established save until the edited world behaves as intended.
Common surprises
My edited player did not change.
Start a new normally assembled career. Existing careers already contain their created player population. Also check whether a matching file in Data/Player is taking priority over the detail block in the team file.
My detailed block is being ignored.
The name after $ must match the roster name. Keep commas, spaces and the year in the same arrangement. Place all roster lines before the first $ block.
A skill is not exactly the number I entered.
The final profile must still fit the player’s overall ability. Individual values can be adjusted together so that a low-ability player does not become an elite footballer merely because many high skills were entered.
The same file creates slightly different players.
Hints and missing values include natural variation. Use more exact 1–20 values when you want a more tightly defined profile, while remembering that overall ability balancing still applies.
My footballer has the club’s nationality.
When nationality is absent, the club country is used. Add nationality = Country name and make sure that country exists in the selected data with exactly the same displayed spelling.
Accented letters look wrong.
Save the data as Western European or Windows-1252 text, matching the supplied data files. If your editor cannot do this reliably, use basic English letters while testing.
A named player disappeared from a second club.
The same name and exact birth date identify one footballer. Correct the date if these are genuinely different people, or keep only the intended club entry if they are the same person.
The career starts in a different year from my package.
Check that StartYear.txt sits directly in the recognised package data root and contains one valid four-digit year. Then check the value displayed on Select Database: a previously chosen year takes priority over the package suggestion, and the displayed value can be changed before import.