Showing posts with label Historical Seasons. Show all posts
Showing posts with label Historical Seasons. Show all posts

Friday, April 7, 2017

Improvements to Baseball Mogul 2017


Baseball Mogul 2017 includes more than 130 improvements and bug fixes. As you would expect, we have included hundreds of new major and minor league players, and all MLB player and team statistics through 2016 (including the playoffs, off-season awards, and updated contracts and salaries).

But Baseball Mogul 2017 also includes proprietary data that you can't find anywhere else:
  • Hand-edited pitch repertoires and fastball velocities for more than 6,000 pitchers from 1881 through 2017.
  • More than 600,000 lines of PITCHf/x pitch data, including velocity and usage patterns for every season from 2002 and 2016.
  • More than 1.9 million lines of minor league stats from 1880 through 2016, at every level from AAA down to the 'D' leagues.
I've also made some major improvements to the simulation engine:

The first is a new model for improvement and decline at different defensive positions. The sim continues to adjust ratings based on age and playing time, but I've added a lot more data to the model. This means that each specific ability (such as an outfielder's range or a catcher's ability to hold runners) is calculated from all available data major and minor league data (including some data from foreign leagues). Additionally, each ability at each position has its own "maturation curve" -- and these curves change over time from 1890 through 2017 according to my analysis of the historical data.

The second is a new system for normalizing historical stats, leading to much more accurate player ratings and simulation results in historical years. The game now calculates individual averages and standard deviation for each statistic by season, defensive position and stadium. (Previous code used all-time averages for standard deviation, and normalized player statistics over their entire career.)

Finally, I planned a longer beta-test cycle this year, ensuring that the initial release was much more stable and bug-free. Baseball Mogul 2017 went on sale three days ago and the most serious bug that's been reported so far is that the home and away teams are flipped in the 2017 MLB schedule (this bug has already been fixed in the version currently for sale in our store).

Anyway, here's a longer change list. I'm sorry I haven't been able to describe these improvements in more detail, but it's easier for me to code and test changes and new features than it is for me to write about them.

2017 Database

  • Updated major and minor league statistics from 1880 through 2016.
  • Added biographical data for all 2016 MLB debuts and hundreds of new minor league players.
  • Updated 40-man rosters for opening day.
  • Imported more than 600,000 additional lines of PITCHf/x pitch data.
    • Added filters to fix data errors on-the-fly

Historical Simulations (1901 – 2016)

  • Rewrote code for deriving player ratings and statistical projections from historical data.
    • Improved historical accuracy for fielding error rates.
    • Improved historical accuracy for determining pitcher "Endurance" ratings.
  • More accurate defensive ratings, especially for designated hitters and pinch hitters.
  • Incorporated more data in player aging model.
    • Created more accurate career paths in both historical and modern leagues.

Simulation Engine

  • New model for player improvement at defensive positions.
  • More realistic adjustments for playing time at all levels.
    • Improved player health model and injury rates.
    • Improved realism for platoon advantage by player type.
  • Reworked code for simulating minor league games.
  • Updated Win Expectancy data.
  • Improved logic for intentional walks.
  • New system for generating fictional players to improve long-term stability of talent pool.
  • Bug fixes (e.g. small errors in Payroll Budget related to a bug estimated concessions revenue).

Artificial Intelligence

  • Improved selection of defensive starters and starting lineup
    • More realistic use of defensive substitutes
    • Improved logic for 25-man and 40-man rosters
  • Improved long-term (multi-year) roster management
  • Improved management of pitching rotation
    • Includes better logic for picking "alternate starters" from active roster
  • Bug fixes (such as the computer over-riding changes to a player’s position)

Interface / Options

  • Improved Player Rating Editor
    • (e.g. dynamic updating of Predicted stats when ratings are changed)
  • Improvements to Sortable Stats Dialog
    • "40-Man Rosters" added as selectable category when viewing/sorting.
    • "Pitches Thrown", "Strikes Thrown", "Strike Percentage" and "Pitches/Game" added.
    • "Steal Tendency" and "Steal Success" player ratings added to Sortable Stats.
  • Improved heat maps (in Charts Tab of Scouting Report).
  • Improved interface and readability in Play-By-Play screen.
  • Optimized League Builder to increase speed by about 400%.
  • Schedule importer now supports 3-letter team abbreviations.
  • Bug fixes
    • Errors converting between rating scales (“50-100”, “20-80”, “1-20” etc.)
    • etc.

Wednesday, April 5, 2017

Baseball Mogul 2017: Schedule File Formats

Baseball Mogul 2017 now includes support for team abbreviations in schedule files, making it much easier to create or import your own schedule files (for historical and/or fictional seasons).

This is a copy of the document included in the Baseball Mogul "schedules" folder.

Schedule Filenames

The league format is converted to numbers and letters that are used to create the file name. If the schedule is from a specific year, the year is appended to the filename.

This is an example of the name of a schedule file: 162-U-555-555-I-2017.txt.

  • ‘162’ is the number of games in the season.
  • ‘U’ means the schedule is “unbalanced”. This means that teams play more games within their division, that vs. league opponents. (A ‘B’ would be used to indicate a “balanced” schedule, where all league teams play every other league team roughly the same number of times).
  • The first ‘555’ refers to the number of teams in each division of league #1 — the American League has 5 teams in each of 3 divisions. The second ‘555’ refers to the number of teams in each division of the league #2 — the National League also has 5 teams in each division.

Because this schedule is for an unbalanced league, Baseball Mogul needs to ensure that league format has the correct number of teams in each division. Thus, the schedule file includes a number for each division.

For balanced schedules, the game only cares about whether the number of teams in each league match the schedule format. This only requires one number for each league. If the above file were for a balanced schedule, it would use the following filename: 162-B-15-15-I-2017.txt.

  • The ‘I’ indicates that the schedule includes interleague games. If the schedule only features league play, this is replaced with an ‘L’.
  • By default, all schedules have a 3-day all-star break. If this schedule didn’t have an All-Star Break, '-N' would be appended to the filename (for ‘No all-star game’).
  • Finally, the specific year can be added as an optional parameter. If a year is listed, this schedule will only be loaded for that season.
The Baseball Mogul "schedules" folder

Examples

162-B-14-16-I = 162 games, balanced, 14-team AL, 16-team NL, with interleague play.
162-U-554-565-I = 162 games, unbalanced, 5-5-4 AL, 5-6-5 NL, with interleague play.
154-U-77-66-L = 154 games, unbalanced, 7-7 AL, 6-6 NL, no interleague play.
154-U-77-66-L-N = 154 games, unbalanced, 7-7 AL, 6-6 NL, no interleague play, no All-Star Break.

Schedule Formats

All schedule files use one line per scheduled game. Each group of games is preceded by a single
specifying the date on which those games occur.

This date must always be in the format “XXX M/D/Y”. For example, “Wed 4/5/2017” refers to
Wednesday April 5th, 2017. The month and day are the only data used; the year and day of week are
ignored.

Individual games on each day can be represented in one of two formats:

1. Numerical Team Indexes

Teams are represented by numbers, starting at 0, such as the following lines:

Sun 4/3/2017
0 @ 6
1 @ 3

Each number specifies a team in the database, with the teams grouped by division.1 For example, in a
template for the 1977 season:

- Teams 0-6 are the AL East
- Teams 7-13 are the AL West
- Teams 14-19 are the NL East
- Teams 20-25 are the NL West

Teams are ranked alphabetically within each division. Using 1977 again as an example:

- Team 0 is the Baltimore Orioles
- Team 1 is the Boston Red Sox
- Team 2 is the Cleveland Indians
- etc.

Note: Baseball Mogul assumes that leagues are sorted alphabetically, and divisions are sorted from East to West. The “American League” will be listed before the “National League”; the “AL East” will be listed before the “AL Central” and the “AL West”; etc.

2. Team Abbreviations

New for Baseball Mogul 2017, schedule files now support 3-letter abbreviations. For example:

Sun 4/3/2017
SFG @ ARI
NYY @ TBR

Team abbreviations can be viewed (or edited) in the League Editor inside Baseball Mogul.

Schedule Files as Templates

If the specific year is omitted, Baseball Mogul will use the schedule file as a template. Instead of
scheduling the games exactly as specified in the file, it will load the schedule file and then randomize
team schedules within each division. This allows the game to create unique schedules for future years, or for historical years for which we do not yet have specific data.

Schedules are shuffled WITHIN each division. So, in the 1977 example above, if Team 0 is scheduled to play the first game of the season, then the schedule created from that template will feature ANY ONE of the first seven teams to play the first game of the season.

Double-Headers

Baseball Mogul doesn’t currently support teams with more than one game schedules on the same day.
If you are creating a schedule file for a historical year with scheduled double-headers, you will need to move the 2nd game to a day where those teams have a day off (such as by moving the 2nd game of a Sunday double-header to the following Monday).

Missing Schedule Files

If there is no matching schedule file, Baseball Mogul fabricates a schedule using an algorithm than can produce some unrealistic schedules (with large gaps between games played). I am trying to expand the number of schedule files available inside Baseball Mogul. If you have created a file for a missing year or format, please forward it to cjd@sportsmogul.com and/or post it to our mod forums.

Thank you!

Appendix A: Numbers Used in Schedule Files for 2014-2016 Seasons

Note that teams are ordered:

  1. Alphaterically by League (AL then NL).
  2. Then by division from east to west.
  3. Then alphabetically within each division.


AL East
BAL 0
BOS 1
NYA 2
TBR 3
TOR 4

AL Central

CHA 5
CLE 6
DET 7
KCR 8
MIN 9

AL West

HOU 10
LAA 11
OAK 12
SEA 13
TEX 14

NL East

ATL 15
MIA 16
NYN 17
PHI 18
WAS 19

NL Central

CHN 20
CIN 21
MIL 22
PIT 23
STL 24

NL West

ARZ 25
COL 26
LAD 27
SDP 28
SFG 29

Tuesday, November 22, 2016

Football Mogul 17: Historical Seasons, Part 2

Here's some more info on the upgraded historical database in Football Mogul 17:
Lets go back to 1996 again -- a year when Brett Favre would win the MVP and lead his Green Bay Packers to a 13-3 record and 35-21 win over the Patriots in Super Bowl XXXI.

This is Green Bay's offense at the beginning of the 1996 season -- as viewed in last year's version of Football Mogul:


Here are a few problems I see with this screen:

1. All the ratings are too low. Future Hall-Of-Famer Brett Favre only has a 77 Overall rating.

2. Dorsey Levens is listed as the starting fullback, even though Levens was never a fullback.

3. Mark Chmura is riding the bench behind Keith Jackson (Chmura started 13 games for the Packers in 1996).

4. Starting tackles Earl Dotson and John Michels are shown as second-stringers.

And here's the 1996 Green Bay offense in Football Mogul 2017:


As you can see. the starting lineup is correct and the player ratings are more accurate.

Friday, November 4, 2016

Football Mogul 17 Preview: Historical Seasons

Football Mogul 17 has been delayed due to some personal issues in my life. However, we are doing final testing and expect to launch the game on Tuesday (November 8th).

This year's biggest upgrade is an entirely new historical database including over 250,000 lines of season data. Previous versions of Football Mogul included historical teams, but our database had a lot of errors and missing stats so we went back to the drawing board and assembled an entirely new database.

We were able to incorporate some stats, such as snap counts and Yards After Catch, that you can't find at sites like Pro-Football-Reference.com and NFL.com. But the most important result of this upgrade is that the historical team and player ratings are much more accurate.

This is a screen shot from last year's version of Football Mogul, showing the AFC at the beginning of the 1996 season:


If you remember 1996, you may notice that the ratings are way off. The Patriots beat the Jaguars in the 1996 AFC Championship game, but the Jaguars are ranked 21st and the Patriots are ranked 24th (out of 31 teams in the league). 1996 was Drew Bledsoe's best season, but New England's "Quarterbacks" have a grade of "C-".

These problems have been fixed for Football Mogul 17. In addition to having more data, we've also rewritten the way that player ratings are calculated, correcting every line of a player's stats for that year's league averages and that team's strength of schedule.


This results in much more accurate ratings for individual players and across entire teams. The Patroits are now the 2nd best team in the AFC (behind Denver who went 13-3 that year and had a better point differential). The "Quarterbacks" column now has 4 teams with an A-minus or better: New England (Bledsoe), Miami (Marino), Denver (Elway) and Jacksonville (Brunell), Marino and Elway are now in the Hall Of Fame, and Brunell was at his peak in 1996, leading the NFL in passing yards and yards per attempt.



Tuesday, April 5, 2016

Baseball Mogul 2016: Rating Calibration

Baseball Mogul 2016 has a new feature that adjusts all stats for the statistical environment in which they are accrued before assigning player ratings. This applies to the current season and to historical seasons, but it also calculates major league equivalencies (MLEs) for the 1.2 million lines of minor league stats included in the game.

The New Rating Scale

The first thing you will notice is that everyone’s ratings have dropped by about 6-8 points. The average rating for a major league player in Baseball Mogul Diamond was about 82. The first version of Baseball Mogul was originally designed with the average player rating set at 75 (corresponding to a grade of "C" in an academic environment). But it crept up over the years until more than half of all players were clumped between 81 and 86, making it difficult to differentiate between an average player and a very good player. In last year's game, the distribution of ratings for major league players looked like this:

Player Rating Distribution in Baseball Mogul Diamond
Making league and stadium adjustments for every stat gives us the ability to rate all players on the same scale, in the same way that a stat like OPS+ defines '100' as the league average. In addition (and unlike OPS) we can specify the distribution of player ratings on this scale. That is, we can specify the degree to which all player ratings are either clumped near the average rating or spread out over the entire scale.

I used this opportunity to re-establish 75 as the major league average for all player ratings and to set the standard deviation at 7. Assuming a normal distribution, ratings for players at the major league level are now distributed on a “bell curve” like this:
Player Rating Distribution in Baseball Mogul 2016
As you can see on the graph, about two thirds of ratings fall between 68 and 82. Any rating of 90 or higher describes an ability in the top 2% of major league talent.

Fitting all player ratings to this scale means that any specific number has the same meaning regardless of whether you are playing in 1927 or 2027. 
For example, a pitcher's Power rating is primarily based on their projected strikeout rate. If a pitcher strikes out batters at a rate that is one standard deviation above the league average, he is assigned a Power rating of 82 (75 + 7).

Historical Adjustments

Player ratings now use the same scale regardless of which season you are playing in (and regardless of how many seasons you play into the future). This differs from previous versions of Baseball Mogul which had different average ratings in different seasons. As league averages went up and down, so did player ratings. For example, the strikeout rate in Major League Baseball has risen more than 65% over the last 25 years. This translated to a big jump in Power ratings for all pitchers. If you start a new game in 2015 using Baseball Mogul Diamond, the average pitcher has a Power rating of 83. But if you start in 1981, the average Power rating is only 70. This discrepancy means that the 1981 season has only nine pitchers with an Overall rating of 90 or more, compared to 56 such players in 2015!

Impact on Gameplay

This volatility was more than just a cosmetic problem. It could lead to a serious imbalance between batters and pitchers. If you start a game in 1969 you will see that pitching ratings are noticeably higher than batting ratings -- because run-scoring was at an all-time low in the late 1960s. Of forty players rated 90 or higher in the 1969 database, only seven (17%) are batters. Because player ratings are part of the game’s artificial intelligence and salary negotiations, this imbalance made it possible to take advantage of the computer-controlled general managers by trading away below-average pitchers in return for above-average hitters (and then signing those hitters at lower salaries than pitchers with the same win value were asking for).

The Shocker!

Baseball Mogul 2016 re-calibrates all ratings when loading a game saved in the previous versions. This means that a team of players rated between 82 and 88 could become a team with of players rated in the high 70s. These rating changes may come as a shock -- in the same way that you would be stunned if your employer suddenly cut your pay by 8% for no reason. I have noticed that I can rewrite the code for determining team revenue or ticket sales or player salaries without getting a single complaint. If the number of outfield assists or complete games goes down by 8% between versions, no one notices. But if the ratings for your players on your team drop by 8%, it seems like the game has undone all the hard work you put into building your team. It's worth remembering that the underlying player talent level is completely unaffected by this adjustment, which applies equally to every player in the database. This is a significant change, but it was a long-awaited fix to the problems of inexact player ratings and unpredictable talent distribution – problems that leaked over into everything from player evaluation to managerial decisions.

Tuesday, September 15, 2015

Five Reasons You SHOULDN'T Buy Football Mogul 16

Update: We have fixed the problems with Windows 10 and Windows XP that are described below!

1. You are Running Windows XP

We weren't able to test Football Mogul 16 on multiple Windows XP systems. We aren't specifically aware of any problems, but if you encounter any, please post them to the Football Mogul bug report forum.

2. You are Running Windows 10

We are not the only software publisher to encounter serious problems with Windows 10 (an operating system that is supposed to be "compatible with your existing software").

The first problem is that Windows 10 is likely to complain that we are an "unknown publisher" (even though we just renewed our certificate). This document might help with that problem.

We are also getting some users reporting that Football Mogul 16 simply won't run on Windows 10. Unfortunately, we haven't been able to replicate this problem on our own computers.

This is a high priority, so we will have this fixed as soon as possible (my best guess would be next week: September 21st-25th).

3. You're Waiting for Improvements to Historical Seasons

There are problems with the historical databases used in Football Mogul. For example, if you start the game in 1970, ten teams have fictional kickers that were created by our database tool (because of missing kicker data from 1970 and/or missing stats that they accumulated in the 1950s and 1960s).

Football Mogul in 1970: The top 19 kickers are real; the bottom 10 never existed.
This is something we weren't able to address in Football Mogul 16. If you were waiting to upgrade until these problems were fixed, you should wait another year. Being able to play historical seasons is an important feature, and I do enjoy it myself (especially in the 1980s and 1990s). But the rosters and stats still have holes in them, and these holes get bigger the farther back you go in time.

4. You Wanted a New Interface

We didn't create a new background skin for Football Mogul 16. Instead, we tweaked the "autumn" skin that was available in Football Mogul 2014, and we are also including the "winter" skin that was introduced with Football Mogul 15.
Autumn Skin
Winter Skin
You can still create your skin, or download one from our forums (such as the RoboDark Skin Mod).

5. You Would Rather Spend Your Money on Baseball Mogul

It seems like half the comments about Football Mogul sound something like this:
"Football Mogul would be great if you just invested as much effort into it as you have into Baseball Mogul."
The other half sound like this:
"I love Baseball Mogul! Please stop wasting time on Football Mogul."
The second comment more closely reflects reality. Baseball Mogul is our best product and the one that pays my salary.

However, I'm a huge football fan and I love playing Football Mogul. So I want to continue to improve the game and fix problems that you are kind enough to point out. And my brain needs a break from Baseball Mogul every summer anyway (this is what led to the creation of Masters of the Gridiron).

Football Mogul does pay most of Connor's salary, and it's a product where he is able to do most of work (updating rosters and ratings, reading and collecting bug reports, and regressing bug fixes). And we like having Connor around. He's better with customer support than my wife (Dee) and makes it possible for me to primarily focus on Baseball Mogul.




Monday, February 16, 2015

Baseball Mogul’s League Builder Feature

Although we are busy working on Baseball Mogul Diamond, we often get questions asking about existing features in Baseball Mogul. I got an email yesterday asking if it was possible to "combine teams from different years".

It is possible. It's called the "League Builder" and it's one of the primary ways you can customize your league. The League Builder lets you build a league with any team from the 1901 season through the present day. To access this feature, you first must choose to “Start a New Game” in Baseball Mogul. Then select “Custom” (as shown below):


After selecting the “Custom” option, you will be prompted with four more choices to build a league. Choose the “League Builder”:


The League Builder consists of a dialog box that lets you select any season and any team from that season. Then click "Add Team >>" to add that team to your league.


Continue until your league is complete. You can use teams from all different years, or have a few from the same year. You can even pick 30 different years from the same franchise, letting you test which year was the best team for any select organization, like this:


The League Builder supports leagues as small as four or as large as thirty. When you finish selecting the teams of your choosing, click “Done” and the league will finish setting up, after which you’ll be able to play with or against your favorite teams of all time from year to year.