Frequently Asked Questions
ZenGM Baseball stores all game data on your computer, in your browser profile. This means that you can't play one league on multiple devices unless you export it (from the Tools menu) and then create a new league with that file. So first, make sure you're using the same browser on the same computer. This is true even if you're logged into an account - league data is currently stored only locally, not in your account.
If you are using the same browser on the same computer and your leagues are missing, the game data has probably been deleted. This can happen in places like schools and libraries that set browsers to automatically delete everything when they are closed. It also happens if you manually delete your browser data. For example, in Chrome, if you go to More tools > Clear browsing data... > Cookies and other site data, that will delete all your ZenGM Baseball data. This is true even if you tell it to only delete data from today - if you played ZenGM Baseball at all today, it will completely delete all your leagues.
Browsers may also delete data if disk space is running low. I've never seen this happen on a desktop/laptop, but it does sometimes happen on mobile browsers, especially on iPhones. To minimize the chance of this happening, you can:
- Go to the global settings page and enable Persistent Storage.
- If you're on Android, install the ZGMB app. If you're on iOS, add it to your home screen.
- Make a backup of a league at Tools > Export League
In cases where the data has been deleted from your browser profile, the only way to get it back is if you have a backup. Sorry :(
Followup: Why is this a problem for ZenGM Baseball but not for most other games?
Most other games don't have this problem of browsers deleting data because most games don't store their data inside the browser itself. So why does ZenGM Baseball different? There are tradeoffs.
The current method has some big advantages. Since the data is stored on your computer rather than on my server, my server costs are extremely low, which is what allows me to make this game free and unlimited. But still, you may think of other purely local apps that don't have this data loss problem. ZenGM Baseball is different because it runs in a web browser. A normal game you install from Steam or a mobile app store stores controls how it stores data on your hard drive, but ZGMB does not really control its own data, the web browser does. So why not make ZGMB a "normal game"? Two reasons. First, it's really nice to just be able to type a URL into your browser and start playing immediately, without installing anything. That even lets you play on devices where you are not allowed to install apps. And second, it's really nice that a web game runs on any device. As a solo developer, it'd be a lot of work to make separate UIs of the game for iOS, Android, Windows, Mac, Linux, etc.
So basically - it's all tradeoffs. I hope in the future web browsers have ways to more robustly store local data, to better support apps like ZenGM Baseball. The "Persistent Storage" option mentioned above is supposed to be that, but it doesn't always work.
Currently there's no easy way to do this, but it is possible.
You can export a league (Tools > Export League), copy the file to your other computer, and then create a new league using that file.
Sometimes your browser can get stuck on an old version of ZenGM Baseball. Here are a few things you can try to force an upgrade.
Method 1: Open ZenGM Baseball in a single tab in your web browser. Do a hard refresh (ctrl+shift+r, or ctrl+cmd+r on a Mac). If that didn't work, try again with your browser dev tools open (ctrl+shift+i, or ctrl+cmd+i on a Mac).
Method 2: Close all tabs with ZenGM Baseball open and then open ZenGM Baseball again. Or restart your browser. If this doesn't work the first time, try again.
Method 3: Try manually emptying your cache. In Chrome, from the main menu go to "More tools" > "Clear browsing data". Make sure you select "Cached images and files" and do not select "Cookies and other site data" because "other site data" is where ZenGM Baseball stores all your leagues. Then try closing all open tabs with ZenGM Baseball and opening it again, like above.
Method 4: Open ZenGM Baseball in a single tab in your web browser. Open your browser dev tools (ctrl+shift+i, or ctrl+cmd+i on a Mac). At the top of dev tools panel, click "Application" (if it's too narrow to see, you might have to click the >> to see it) and then click "Service Workers" on the left:
Then click "Unregister" to the right of https://baseball.zengm.com/:
Finally, reload ZenGM Baseball and hopefully you will see the latest version.
ZenGM Baseball is now available for Android in the Google Play Store. But it's no different than playing the game in your mobile browser, which works fine on iOS too.
Followup 1: Can you release an app for iOS (iPhone or iPad) similar to the Android app?
Maybe some day, but Apple makes it a lot harder to do than Google, so I'm not exactly eager to do it. Also, like I said above, it wouldn't actually make the game any better than just using your mobile browser.
But what if you just want it to look and feel a little more app-like? You can do that on iOS today, by following these steps:
Open https://baseball.zengm.com/ in Safari.
Tap the icon featuring a right-pointing arrow coming out of a box along the top of the Safari window to open a drop-down menu.
Tap "Add to Home Screen." The Add to Home dialog box will appear, with the icon that will be used for this website on the left side of the dialog box.
Enter the name for the shortcut using the on-screen keyboard and tap "Add". Safari will close automatically and you will be taken to where the icon is located on your desktop.
(You can also do a similar thing on Android, by going to your browser's menu and tapping "Add to homescreen"... or you could just install the Android app!)
Followup 2: Can you make a better mobile app? Like a native app designed specifically for small screens?
ZenGM Baseball already runs on your phone, in your mobile web browser. I know the UI is not perfect, but I am working on it and it has improved over the years. This is going to continue.
Making a separate native app with a very different UI than the current web app - that is not going to happen any time soon. I'm just one guy working on this project, and it'd be too much work to maintain multiple different UIs for the game at the same time. That's the beauty of the web version, it runs on any device.
If you notice something specific about the mobile UI that you think should be improved, please let me know!
No. I'm not convinced that playing time really matters for player development.
It's a chicken and egg problem. Do good young players get more playing time because they're already good? Or do young players become good if they get more playing time? It's obvious that the first scenario happens. But is it obvious that the second scenario happens? I haven't seen any convincing evidence that it does.
I know that's not really a fair argument, because it could be that it's a real effect that is just hard to see in the stats we have available. But if it's hard to see in the stats we have available, does it matter for a game like ZenGM Baseball? Because if it's so difficult to notice in reality, it'd be equally difficult to notice in ZenGM Baseball.
I can make a counterargument, though. ZenGM Baseball is a video game. Its primary purpose is to be fun, not to be realistic. So maybe it'd be fun to give unrealistically large bonuses to young players who get a lot of playing time. I don't know. It could be fun. But I also very much like to keep things simple, so I err on the side of simplicity. And doing nothing is very simple.
I also am aware that I could be wrong. Maybe there is a convincing, data-driven argument that playing time leads to quantifiable improvement. If so, please let me know!
I am very bad at planning, so I'm not going to commit to any timeline. But I would like to do other games.
Now that I've done the 4 major American sports, there's no more low hanging fruit, since other pro sports tend to have different types of leagues. For example, consider soccer. There's multiple competing leagues, cross-league tournaments, buying/selling players, relegation... a soccer management game would be a little unsatisfying without all those features.
College sports would also be fun to do, and could be my next "big" project, although I'm not exactly sure when. There's also a lot I could do to improve the existing games.
Many games, including mine, use a 0-100 rating system. However that doesn't mean they are the same scale. ZenGM Baseball generally has lower ovr ratings than other games, so 90+ ovr players will be quite rare. You can see the breakdown of how good players at different ovr ratings are in the manual.
Is this a good thing? My thought process was that if the scale is 0-100, I might as well try to use all of it. If 100 rated players are common, what happens when there is someone even better? On the other hand, maybe I should have made my ratings more similar to other games just for familiarity? I don't know. Actually I think a better system would be unbounded, so average rating would be 0 and players could go above/below that any amount. But that might be too big a change for me to make in my games at this point.
Contracts in ZenGM Baseball are indeed quite simple. They pay the same amount every season, they are all fully guaranteed with no player/team options, there are no restricted free agents, special salary cap exceptions are mostly not present, etc.
That's certainly unrealistic. I completely understand people who wish that every little contract rule from the real world was included. But I am wary of making the contract system too complicated. Sometimes there is a tradeoff between complexity and fun, and for me personally when I'm playing a game like this, I don't want to have to worry about the ever-changing ridiculously complex contract rules that pro leagues have.
Maybe some day I will include some of that stuff as options. But that's easier said than done, for something as central to the game as contracts. The AI would need to be smart enough to handle all possible combinations of settings, and the AI struggles enough already!
In general, WAR is more of a concept than a specific formula. Fangraphs and Baseball Reference both have their own formulas for WAR which are not exactly the same. And neither one of them fully publish the details of their formulas, which are quite complicated. Because of that, I use a less well-known but simpler method of calculating WAR that is fully specified in this paper, which includes formulas for all the WAR components you see in the advanced stats table:
- Rbat: batting runs
- Rbr: baserunning runs
- Rfld: fielding runs
- Rpos: positional adjustment runs
- Rpit: pitching runs saved
Add those up and you get RAA (runs above average). Scale that based on how many runs are scored per game and you get WAA (wins above average). To compare against replacement level rather than average, also add in Rrep (runs from replacement level) and then you have RAR (runs above replacement). Scaling that by runs scored gives WAR (wins above replacement).