Python conversion of the original CGFS 16 Server 16 tool for FIFA 16.
This project is a community-friendly, public rewrite of the classic FIFA 16 Server 16 workflow. It provides a Windows desktop control panel and in-game overlay for managing stadium assignments, scoreboards, TV logos, movies, chants, and camera packages while FIFA 16 is running.
- Converts the legacy Server 16 behavior into Python.
- Attaches to FIFA 16 memory to read live match context.
- Applies stadium, scoreboard, TV logo, movie, chants, and camera logic based on the current match state.
- Loads assigned stadiums from normal folders or
.zip/.rararchives. - Supports an overlay-style main UI that can appear on top of FIFA 16.
- Opens secondary editors and assignment dialogs as floating windows outside the overlay flow.
- Includes tools for editing
settings.ini-driven assignment data. - Packages the project as a standalone Windows executable with PyInstaller.
This repository is intended to be public and open for community contributions.
The goal is to preserve and evolve the FIFA 16 Server 16 experience in a modern Python codebase that is easier to maintain, improve, and extend.
Main overlay:
These paths are reserved so contributors can add screenshots later without changing the documentation structure.
main.py: project entry point.server16_py/: main application source code.server16_py/app.py: primary UI, overlay management, and runtime coordination.server16_py/assignment_runtime.py: assignment flow for stadiums, scoreboards, TV logos, movies, and exclusions.server16_py/stadium_runtime.py: stadium loading and application logic, including folder and archive sources.server16_py/asset_runtime.py: scoreboard, TV logo, movie, and related routing.server16_py/chants_runtime.py: chants and audio playback runtime.server16_py/camera_runtime.py: Anth camera package discovery, preview, and application.server16_py/settings_editor.py: settings editing UI.server16_py/dialogs.py: assignment dialogs.server16_py/file_tools.py: shared file-copying, archive extraction, and setup helpers.runtime/: local runtime data such as settings and logs.legacy/: reference material from the original project/conversion process.build_exe.bat: convenience build script for Windows.Server16Python.spec: PyInstaller spec file.
- Windows
- FIFA 16 installed locally
- Python 3.10+ recommended
- The Python packages used by the project, especially:
psutilPillowpygamerarfilefor native RAR extraction when availablepyinstallerfor packaging
RAR stadium archives can also be extracted through the Windows tar command when rarfile is not installed. Depending on your environment, additional packages may be needed if they are introduced by future changes.
- Clone the repository.
- Create and activate a virtual environment.
- Install the dependencies you need.
- Run the app with Python.
Example:
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install psutil pillow pygame rarfile pyinstaller
python main.pyWhen the tool opens:
- Point it to your
FIFA 16.exeif needed. - Let it detect the game folder and related
FSW,StadiumGBD,ScoreBoardGBD,TVLogoGBD,MoviesGBD, and other data folders. - Start FIFA 16.
- Use the tool in normal window mode or arm the overlay mode.
The application stores local settings in runtime/settings.json and reads/writes Server 16 assignment data from FSW/settings.ini inside the detected FIFA 16 folder.
The runtime resolves mod folders from the selected FIFA 16.exe directory:
FIFA 16/
FSW/
settings.ini
stadium/
ScoreBoard/
TVLogo/
Nav/
Chants/
Images/
PitchMowPattern/
Nets/
Police/
StadiumGBD/
render/
thumbnail/
stadium/
ScoreBoardGBD/
TVLogoGBD/
MoviesGBD/
For pitch, net, and police assets, the current code supports both the root FSW folders and the older FSW/Images folders:
FSW/PitchMowPattern/
FSW/Nets/
FSW/Police/
FSW/Images/PitchMowPattern/
FSW/Images/Nets/
FSW/Images/Police/
Runtime bootstrap copying prefers the root FSW/PitchMowPattern, FSW/Nets, and FSW/Police folders when they exist. The stadium assignment dialog uses the FSW/Images/... folders first for selector values and preview PNGs, then falls back to the root folders.
The project supports optional preview images for stadiums.
When present, these images are shown in:
- the dashboard
Stadium Bay - the
Assign Stadiumwindow underVisual Details - the
Loading Stadiummodal during stadium application
To be detected correctly, stadium preview images now live in one shared thumbnail folder:
StadiumGBD/render/thumbnail/stadium/
Each preview file must use the stadium name as its file name. If the stadium is loaded from a .zip or .rar, use the archive stem.
StadiumGBD/render/thumbnail/stadium/<stadium name>.png
StadiumGBD/render/thumbnail/stadium/<stadium name>.jpg
StadiumGBD/render/thumbnail/stadium/<stadium name>.jpeg
Example:
StadiumGBD/ARG - Diego Armando Maradona.zip
StadiumGBD/render/thumbnail/stadium/ARG - Diego Armando Maradona.jpg
Notes:
- The preview file stem must exactly match the stadium folder name or archive stem used by the assignment.
- Supported preview extensions are
.png,.jpg,.jpeg, and.jepg. - The app also uses this folder when discovering stadium names for the assignment and settings editors, alongside normal stadium folders and
.zip/.rarfiles inStadiumGBD. - The old per-stadium layouts
StadiumGBD/<stadium name>/render/thumbnail/stadium.*andStadiumGBD/<stadium name>/render/thumbnail/stadium/stadium.*are no longer used by the current code. - If no preview image exists, the stadium still works normally; the preview area is simply hidden where applicable.
- This structure is intended to make community stadium packs easy to organize and share.
Stadium assignments are read from FSW/settings.ini. A stadium value can point to:
StadiumGBD/<stadium name>/
StadiumGBD/<stadium name>.zip
StadiumGBD/<stadium name>.rar
When an assignment points to an archive, the app extracts it into a temporary folder under runtime/, finds the first valid stadium folder inside it, applies the stadium files, and then cleans up the temporary extraction.
Valid stadium folders are expected to include normal Server 16 stadium files such as:
model.rx3
texture_day.rx3
texture_night.rx3
crowd_day.dat
crowd_night.dat
EntranceScene/
1/
3/
Optional files supported by the runtime:
NoSeats.rx3for crowd-chair replacement.StadiumMovie.vp8andStadiumBumper.bigfor stadium-specific movies.
Archive extraction is used only for loading the stadium files. Preview lookup does not extract archives, so preview images are resolved from StadiumGBD/render/thumbnail/stadium/<stadium name>.*.
The app can create and update settings.ini entries from the UI:
- stadium assignments by home team, round, or full tournament
- multi-stadium assignments for randomized stadium rotation
- scoreboard and TV logo assignments by tournament, round, or home team
- movie assignments by tournament, round, derby, or home team
- excluded competitions or rounds
- stadium net values and scoreboard display names
- chants entries under
FSW/Chants
Changes saved through the editor are applied back into the runtime immediately where possible.
The Camera tab supports the exact package folder named:
Anth's FIFA 16 AIO Camera Mod Package
The folder must contain Instructions.txt. Each camera preset is discovered from a child folder with a data/ directory, and any .png files in that preset folder are used as preview images.
When a camera is applied, the preset's data/ contents are synced into the FIFA data/ folder. If REGENERATOR.exe is found next to the selected FIFA install, the app attempts to launch it after copying the files.
You can build the standalone executable with the included batch file:
.\build_exe.batThe batch file compiles the C++ overlay helpers when Visual Studio C++ tools are available. If they
are not installed, it uses the existing helper binaries in bin/ and still runs the PyInstaller
package step.
Or run PyInstaller directly:
pyinstaller --noconfirm --clean --distpath dist --workpath build\pyinstaller Server16Python.specThe resulting executable will be created at:
dist/Server16Python.exe
Contributions are welcome.
You can help by:
- fixing runtime bugs
- improving the overlay UX
- refining stadium, scoreboard, and movie workflows
- improving audio/chants behavior
- expanding documentation
- testing on different FIFA 16 setups
Suggested contribution flow:
- Fork the repository.
- Create a feature branch.
- Make focused changes.
- Test locally.
- Open a pull request with a clear description.
- Keep Windows compatibility in mind.
- Avoid committing build outputs and local runtime artifacts.
- Prefer small, reviewable pull requests.
- If you change behavior tied to FIFA memory offsets or file routing, document it in the PR.
Suggested GitHub release contents:
Server16Python.exeRELEASE_NOTES_v0.2.1.md- release notes summarizing major fixes and improvements
- optional screenshots or changelog excerpts
- Original concept and workflow: CGFS 16 Server 16 for FIFA 16
- Python port and ongoing maintenance: this community project and its contributors
This project is an unofficial community tool for FIFA 16 modding workflows. Use it at your own risk and always keep backups of important game and mod files.