Pilot Roster integration
The Pilot Roster combines connected-client radio state with optional callsign, aircraft, and spawn-airfield assignments supplied by the server owner.
| Data | Source |
|---|---|
| Pilot name and coalition | Connected SRS client |
| Radio 1 and Radio 2 channels | Connected SRS client telemetry |
| Assigned callsign | Server-provided JSON |
| Aircraft or vehicle | Server-provided JSON |
| Current sortie spawn airfield | Server-provided JSON |
JSON format
Section titled “JSON format”Create UTF-8 JSON with a top-level players array:
{ "generatedAtUtc": "2026-07-15T18:30:00Z", "players": [ { "name": "=TBAS=Mayhem-1", "coalitionCode": 1, "callsign": "MANIAC-1", "vehicle": "P-51D-15", "airfield": "Bierset" }, { "name": "JG27_PilotTwo", "coalitionCode": 2, "callsign": "RAVEN-2", "vehicle": "Bf 109 G-14", "airfield": "Le Culot" } ]}name matching is case-insensitive and surrounding whitespace is ignored. coalitionCode must match the player’s current SRS coalition. Callsign, vehicle, and airfield are optional, but each record needs at least one of them. Property matching is case-insensitive, so Vehicle and Airfield are accepted.
Send the complete recognizable airfield name. Current clients map known Great Battles names and common variants to stable three-letter codes, while preserving the supplied name in a tooltip. The lookup ignores case, accents, punctuation, historical field prefixes such as B-78, and operational suffixes such as BSP or FSP. Unknown fields use a deterministic three-letter fallback, so no server-side code table is required.
Configure the server
Section titled “Configure the server”Stop the SRS server and add the path under [General Settings]:
[General Settings]ASSIGNED_CALLSIGNS_JSON_FILE=C:\IL2-SRS\data\pilot-roster.jsonLocal, relative, and UNC filesystem paths are supported. HTTP and HTTPS URLs are not. Relative paths are resolved from the directory containing IL2-SR-Server.exe.
Publish updates safely
Section titled “Publish updates safely”The server checks the file approximately once per second. Generate a complete temporary file, validate it, then atomically replace the live file. Do not gradually rewrite the file while the server is reading it.
| File condition | Server behavior |
|---|---|
| Valid JSON | Replaces assignments and advertises roster availability |
Valid empty players array |
Clears assignments |
| Missing file | Clears assignments and marks the roster unavailable |
| Invalid JSON or read error | Keeps the previous valid assignments and logs a warning |
Clear data between missions
Section titled “Clear data between missions”At mission rollover, publish a valid document with an empty players array before publishing assignments for the new mission:
{ "generatedAtUtc": "2026-08-18T12:00:00Z", "players": []}This explicitly clears the previous assignment map. Do not leave the old file in place while the next mission is loading, or clients can continue to see stale callsigns until fresh data arrives.
Validate
Section titled “Validate”- Inspect
serverlog.txtfor roster-file warnings. - Connect a client whose player name and coalition appear in the JSON.
- Open Show Pilot Roster.
- Change a callsign or airfield, publish the file, and confirm the client updates without restarting SRS.
- Publish an empty
playersarray and confirm previous-mission assignments disappear.
The complete reference guide remains available as Pilot-Roster-Server-Guide.md.