Universe data packs

Build your baseball world
in plain JSON.

Rename programs, replace logos, tune facilities, add or remove teams and conferences, and customize every division without touching player or save data. This guide covers the version 1 format used by Road to Omaha 2.0.

Schema version 1 Classic · Expanded · Full UTF-8 JSON

01 · Workflow

Start with the right universe.

Pick Classic, Expanded, or Full before uploading. The file's presetId chooses the fixed competition levels. Team and conference IDs are yours to define inside those levels.

1Pick a presetClassic has 300 programs. Expanded has 1,170. Full has 1,565.
2Export a baseThe in-game editor gives you every current ID, membership, and value.
3Edit a copyUse any plain-text editor. Keep the original export as a backup.
4Upload and readThe setup screen reports the exact field path when validation fails.
!

Competition levels stay fixed. You may add, remove, or rename team and conference IDs as long as every ID is unique and every team points to a conference in the same level. The allowed competitionId values come from the selected preset and cannot be added or removed.

Older files are accepted. Choose the universe size first, then upload a customization exported before schema version 1. A complete older Classic file replaces Division 1. Expanded and Full keep their other levels.

02 · JSON rules

JSON is strict, but predictable.

Use double quotes"school": "North State"
Separate items with commas"name": "Bears",
No trailing comma"prestige": 72
No // comments"_comment": "Your note"
Numbers stay unquoted"stadiumCapacity": 4200
True/false stay unquoted"isPowerConference": false

Save the file as UTF-8 with a .json extension. Empty override lists are valid, but the root teams, conferences, and competitions arrays must exist.

!

Choose how the arrays behave. With "replaceStructure": true, the team and conference arrays are the complete universe. Leaving an entry out deletes it. Without that setting, entries are added or updated and omitted defaults remain. Full editor exports use replacement mode automatically.

03 · Example

A complete, valid shape.

This partial Classic pack overrides one program, one conference, one division, and the national tournament names.

{
  "schemaVersion": 1,
  "presetId": "classic",
  "name": "My Classic Universe",
  "replaceStructure": false,
  "teams": [
    {
      "id": "team_001",
      "competitionId": "four-year-1",
      "conferenceId": "conf_01",
      "school": "Ridgemont University",
      "name": "Monarchs",
      "abbreviation": "RDG",
      "primaryColor": "#003DA5",
      "secondaryColor": "#FFFFFF",
      "logoUrl": "https://example.com/rdg.png",
      "stadiumName": "Crown Diamond",
      "stadiumCapacity": 5000,
      "stadiumAge": 18,
      "state": "NC",
      "region": "southeast",
      "city": "Ridgemont",
      "prestige": 72,
      "rivals": ["team_002", "team_004"],
      "facilities": {
        "stadium": 7,
        "trainingCenter": 6,
        "weightRoom": 6,
        "analyticsLab": 5
      },
      "rosterRulesId": "four-year-full"
    }
  ],
  "conferences": [
    {
      "id": "conf_01",
      "competitionId": "four-year-1",
      "name": "Atlantic Athletic Conference",
      "abbreviation": "AAC",
      "logoUrl": "",
      "tier": "power",
      "region": "southeast",
      "isPowerConference": true,
      "tournamentFormat": "double-elimination",
      "tournamentTeamCount": 12,
      "tournamentSiteType": "neutral",
      "tournamentVenueName": "Harbor Park",
      "tournamentVenueCapacity": 8500,
      "teamIds": ["team_001"]
    }
  ],
  "competitions": [
    {
      "id": "four-year-1",
      "displayName": "Division 1",
      "scheduleTemplateId": "crown-56",
      "postseasonTemplateId": "crown-championship",
      "competitionStrength": 1,
      "staffTarget": 6,
      "postseasonTeamCount": 64,
      "pollNames": {
        "poll_prestige": "Coaches Poll",
        "poll_talent": "Scouts Poll",
        "poll_results": "Computer Ranking",
        "poll_balanced": "National Top 25"
      }
    }
  ],
  "postseason": {
    "tournamentName": "National Tournament",
    "regionalName": "Regionals",
    "superRegionalName": "Super Regionals",
    "cwsName": "College Championship Series",
    "cwsLocation": "Omaha, NE",
    "cwsBallparkName": "Omaha Championship Park",
    "cwsBallparkCapacity": 24000
  }
}

04 · Root fields

The file header and sections.

Field Required Value
schemaVersion Yes 1
presetId Yes classic, expanded, or full
name No A useful name for the pack
replaceStructure No true makes the team and conference arrays authoritative, allowing deletions. Defaults to patch mode.
replaceCompetitionIds No Replaces only the listed fixed levels while keeping the others. Older files use this automatically when imported into Expanded or Full.
teams Yes Team entries. May be empty only when replacement mode is off.
conferences Yes Conference entries. May be empty only when replacement mode is off.
competitions Yes Array of division overrides; may be empty
postseason No Shared tournament and venue names

05 · Teams

Program identity and resources.

Field Type / range Notes
id Unique stable ID Required. Existing or custom text such as ridge-state.
competitionId Stable division ID Required. Must be one of the fixed levels enabled by the selected preset.
conferenceId Stable conference ID Required. Must belong to the same division.
school Text Full institution name.
name Text Nickname or mascot.
abbreviation 2–5 characters recommended Used in scoreboards and compact tables.
primaryColor, secondaryColor #RRGGBB Six-digit hex colors, including the leading #.
logoUrl HTTP(S) or local library reference Use an image you control or have permission to use. The in-game Import Logos action creates local-logo:// references automatically. Empty text removes it.
stadiumName Text Public ballpark name.
stadiumCapacity 100–30,000 recommended Custom capacity is respected independently of facility level.
stadiumAge 0–120 Older parks have lower condition ceilings and higher upkeep.
state Two-letter US code Drives recruiting geography and regional weather.
region Named region southeast, northeast, midwest, southwest, west, or plains.
city Text Displayed location.
prestige 0–100 Division-relative public rating. See the scale table below.
rivals Array of stable team IDs No duplicates and never the team's own ID.
facilities Four integers, each 0–10 stadium, trainingCenter, weightRoom, and analyticsLab.
rosterRulesId Known rules profile Advanced. Use the in-game editor dropdown so school length and eligibility remain coherent.
i

Retired fields: shortName and nilRanking are no longer used. Remove them from new files. Team abbreviations handle compact names, while NIL access is derived from division, program finances, and the live economy.

06 · Local logos

Keep image files on your own device.

Open the Universe Editor and choose Import Logos. Select one folder containing PNG, JPEG, WebP, GIF, or SVG files. Road to Omaha copies matched images into its device-local library, so absolute paths such as C:\Logos or /Users/name/Logos are never required.

i

Recommended filenames: use the team's stable ID or abbreviation, such as team_001.png or UCLA.webp. Unique school names also work. Put conference marks in a conferences subfolder and name them with the conference ID or abbreviation.

Road to Omaha Logos/
├── teams/
│   ├── team_001.png
│   ├── UCLA.webp
│   └── custom-gulf-coast.svg
└── conferences/
    ├── conf_01.png
    └── SEC.svg

The library is supported by the web, Steam, and Mac builds and remains available between sessions on that device. Exported universe JSON keeps the small local-logo:// assignments but does not embed the image files. After moving a pack or save to another device, import the same folder once to reconnect every matching logo.

07 · Scales

Local ratings, overlapping national quality.

Prestige is shown as 0–100 within a division. Facilities are shown as 0–10 within a division. Under the hood, both map to overlapping 0–1000 bands, so an elite lower-division program can be better than a struggling program one level above it.

Division ID Public name Global band Default strength Typical stadium level
four-year-1 Division 1 650–1000 1.00 5–10
four-year-2 Division 2 450–750 0.74 4–8
four-year-3 Division 3 250–550 0.55 3–6
four-year-independent NIAA 300–600 0.65 3–7
two-year-1 JUCO Division 1 250–575 0.62 3–7
two-year-2 JUCO Division 2 100–425 0.50 3–7
two-year-3 JUCO Division 3 0–275 0.42 3–6
StadiumCapacity, attendance ceiling, home environment, and game-day revenue.
Training CenterSkill development speed and offseason growth.
Weight RoomPhysical development, durability support, and injury prevention.
Analytics LabScouting accuracy and how quickly rating ranges narrow.

08 · Conferences

Names, membership, and tournament setup.

Field Allowed value Notes
id Unique stable ID Required. You may define a new ID such as great-plains.
competitionId Stable division ID Required. Must be one of the fixed levels enabled by the selected preset.
name, abbreviation, logoUrl Text / URL Public conference identity.
tier power, mid-major, low-major, small Sets the conference's starting reputation profile.
region One of the six region IDs Used for geography and scheduling.
isPowerConference true or false Explicit power-conference flag.
tournamentFormat double-elimination or single-elimination Conference postseason format.
tournamentTeamCount 2 through conference size Leave out to include all members.
tournamentSiteType neutral or regular-season-champion Controls tournament hosting.
tournamentVenueName, tournamentVenueCapacity Text / non-negative number Used for neutral-site events.
teamIds Array of stable team IDs Every listed team must be from the same division and cannot appear in two conference arrays.

09 · Divisions

Competition-wide rules.

These settings affect an entire division. The in-game editor's Divisions tab is the safest place to change them.

Field Type / range Notes
id Known division ID Required and fixed.
displayName Non-empty text Player-facing division name.
postseasonTeamCount 2 through division size Editable field size. Bracket geometry adapts automatically.
competitionStrength Greater than 0, up to 1 Cross-division strength multiplier. Defaults are in the table above.
staffTarget Positive integer Coach-pool depth target per program; defaults range from 2 to 6.
scheduleTemplateId Known template ID Controls target games, season length, series length, and travel behavior.
postseasonTemplateId Known template ID Controls base bracket style. Field size can still be overridden separately.
pollNames Object of four poll IDs Uses poll_prestige, poll_talent, poll_results, and poll_balanced.
Schedule template IDs
crown-56national-50regional-40independent-50two-year-premier-50two-year-national-44two-year-open-38

These are internal stable IDs; they are not displayed as division names in the game.

Postseason template IDs
crown-championshipnational-championshipregional-championshipindependent-championshiptwo-year-premier-championshiptwo-year-national-championshiptwo-year-open-championship

Use the template already exported for a division unless you deliberately want to change its tournament structure.

10 · Postseason names

Shared tournament labels and final-site details.

The optional postseason object accepts tournamentName, regionalName, superRegionalName, cwsName, cwsLocation, cwsBallparkName, and cwsBallparkCapacity. These are public labels and venue details; division field sizes belong in competitions.

11 · Troubleshooting

Common errors and what they mean.

Invalid JSON at line X, column Y

Look just before that location for a missing comma, extra comma, unclosed quote, or mismatched bracket.

schemaVersion: missing

Current builds convert recognized older customization files automatically. If this still appears, update the game and make sure the file contains a teams, conferences, competitions, postseason, or polls section.

Level is not part of this preset

A team or conference uses a competitionId that the chosen Classic, Expanded, or Full universe does not include. Team and conference IDs are not restricted.

belongs to another division

A team points to a conference from a different competition, or a fixed competitionId was changed.

expected #RRGGBB

Use exactly six hexadecimal digits, such as #0A3D91.

unknown template

Use one of the exact schedule or postseason template IDs listed above.

facility must be 0 to 10

Facilities are division-relative integers. Do not put the hidden 0–1000 value in the JSON file.

postseason count exceeds division size

Lower postseasonTeamCount to the number of programs in that division or less.

Still stuck?

Bring the exact error and the file.

The Discord community can usually identify a JSON mistake quickly when the full validator message is included.

Open Discord