ZenGM Baseball is a highly customizable game. Most of this is done through God Mode, where a ton of customization settings are available. However it is possible to go even further by making custom League Files, which contain the data of a ZenGM Baseball league - teams, players, stats, etc. League Files have two main purposes:
- They allow you to use League Files created by others, or create your own to share. You might find some of these on Reddit.
- They allow you to make a copy of a league you are playing. This allows you to have a backup of a league or to share a league across two computers. Within any league, go to "Tools > Export League" to create a League File.
To use a League File, create a new league and select "Upload league file" under "Customize".
It is also possible to import only a draft class or only team info (cities, names, etc) from a League File. For draft classes this is done at Players > Draft > Draft Scouting, and also read this for more information. For team info, go to Tools > Edit Team Info (only available after enabling God Mode).
Editing League Files
League Files are text files in JSON format. You can add/remove/edit nearly any part of it.
The easiest way to see what a League File looks like is to create one for one of your leagues. Within a league, go to Tools > Export League. That will bring you to a page that allows you to select which components you want to export. Note that you don't have to export everything, and that default values will be filled in for components that are not included in the League File.
What components should you include in your League File? It depends on your goal. If you want an exact copy of a specific league, you should select everything (except possibly Box Scores, since they take up a lot of space). If you want to create some customized rosters for others to use, you probably should just define the teams and the players, and then leave out most of the rest so their default values are used.
What is the best way to edit a League File? I'm not exactly sure. You can open a file in any text editor and edit it by hand. But if you're making one from scratch, you might be better off writing some code to generate it.
League Files are divided into multiple sections, which are the root elements of the JSON data structure. These sections are described below. Most are relatively simple and self-explanatory if you just look at an exported League File. Some are a bit more complicated and have links to more comprehensive information. The most important ones are
players- Player attributes, ratings, and stats. More information.
teams- Team attributes and stats. More information.
There are also a number of other sections, most of which you would leave completely out of a League File you plan on sharing with others. They mainly define the internal state of your current specific league.
version- an integer specifying the version of the league file. Currently the latest version is 43.
gameAttributes- Mostly internal variables that should be left alone, but some might be interesting to tweak. More information.
releasedPlayers- List of players who have been released from their contracts but still count against the salary cap.
awards- Offseason awards, such as MVP.
schedule- Remaining scheduled games for the current season.
playoffSeries- Playoff matchups and results for each prior season.
draftPicks- Future draft picks for the next 4 seasons. You need to include this if you want to include traded draft picks in your League File.
draftOrder- The order of picks in the current draft, including the results of the draft lottery.
trade- State of the current trade negotiation.
negotiations- State of the current contract negotiations. There can only be one entry here at a time, except when re-signing your own players in the offseason.
messages- Messages from the owner.
events- Past events viewable from Tools > Event Log.
games- Box score data from past games. This can get quite large, so it often makes sense to leave it off.
Debugging League Files
Debugging can be tricky. Ultimately, the only way to be sure is to try it out. However there is a JSON Schema file you can use to catch some errors. Here is some documentation on how to use it.