Major League Baseball 2K10

The eighth game in the MLB 2K series, Major League Baseball 2K10 celebrates the immortal battle on the baseball diamond between pitcher and batter. The Nintendo DS version distills this into the fundamentals: Total Control Hitting uses DS controls to let you control your swings to hit for power, make contact or swing defensively, while Total Control Pitching allows you to feel every pitch and put the ball exactly where you want it.

Note: this video originally had no sound, so I put in some thematic background music instead!
Major League Baseball 2K10
Platform Nintendo DS
Publisher 2K Games
Released 2010
Language C++
Credited Role Technical Director

This was an interesting title to develop. The schedule was extremely tight, so we tried to limit the scope to what we all felt were the most important aspects of the game: pitching and batting. We kept referring to this process as "distilling" the design, which definitely helped a lot. Because resources were so limited, planning was extremely important for this project, and knowing which features to keep and which to cut early on was a huge help.

The animation system for this game was based on the one used for Imagine: Soccer Captain, with a few extra tweaks to handle some of the effects, like player shadows. We used some features that we had to eschew for the 5-on-5 soccer game, such as animation blending and interpolation, and we were able to have much higher-poly models, with more complex skeletons, due to the fact that there were never more than three characters on screen. We reserved the highest quality models for the character in the foreground—the batter on offense, the pitcher on defense—and used simpler models for the other characters, plus extremely simple shadow models. All the environment graphics were prerendered from the original console assets, as we decided that was the best way to preserve the MLB-approved look of the stadiums.

With as many as 750 players in the Major Leagues, keeping each player's stats (real world and in-game) was no small task. We built an in-game database on the DS, which would pull relevant information from different places depending where the information could be found, either in the game or in your save data. The sheer amount of data meant we couldn't keep it all in memory, so we pulled files from the Game Card whenever it was needed.

Late in development, we realized that all this file access was causing slowdown and frame stutters (you can see some of it in the early-build video above). I wrote a tool to analyze file loading times while the game would run, and was able to identify which files were the most accessed and should be cached. Choosing exactly which of the files to cache, and when, was a bit of a struggle, as finding the right balance between memory (very limited) and cpu (also limited) took some development time (the most limited of all), but in the end we managed to make the database lookups happen smoothly without running out of memory.

I'm a firm supporter of gathering and using data, and I have often found that simple data analysis can tell you a lot more about what's happening in your code than just "eyeballing it". I've spent countless hours analyzing profiler results, RAM allocation logs, VRAM memory maps, and similar (Excel is definitely my friend), and that time was definitely not wasted.

Major League Baseball 2K10 was developed by Powerhead Games and published by 2K Games.

← Back to My Projects