Just in time for CAX I'm happy to share details about the Mission Pinball Framework (MPF) project, an open source (MIT License) python-based pinball machine framework for writing your own game software (for either custom games or new software for existing games).
One of the goals of the MPF project is to be platform-independent. It supports the P-ROC today and we'll support the FAST controllers as soon as they're available. (The game code is 100% the same across both.)
We've been using pyprocgame with the P-ROC for awhile and while we love it, we felt that pyprocgame was more like a development environment for creating your own pinball game and had a steep learning curve. So when we started writing the software for our own game, we tried to make it generic enough so that other people could use it.
Then time moved on and we had a pretty hacked-up version of pyprocgame that wasn't really compatible with the core anymore, and then all of the sudden FAST announces that they're releasing hardware too so we thought, "You know, we should just take everything we've been working on and make it into its own project, make it hardware independent, and go for it."
So we did that.
So MPF is not a fork of pyprocgame or anything. It's totally new code written from scratch (though we were able to pull in a lot of the extensions we'd written for pyprocgame and to adapt them to MPF, like our LED controller, OSC interface, keyboard interface, ball controller, etc.)
The current status of MPF is that it's probably about 5% done. You can use the config files to get a machine up and running. You can start games and cycle through players and it knows where the balls are and everything, but that's about it. No DMD. No lights. No sound. No scoring. But hey, it's a start. (And really we just decided to write our own framework on June 1, so it's been a fast process.)
We're working like crazy on it (well, in our "spare" time outside of our day jobs in IT) and we hope to have a more complete version ready for the Chicago Expo in October.
Here's a quick look at our goals:
- Support all the “traditional” pinball components, including ball and game handling, ball search, ball save, tilt, drop targets, lane change, pop bumpers, credit and coin counting, audits, service menus, etc.
- Support the “new” pinball concepts, like player profiles, web-based reporting and control for operators, social media integration.
- Support as many different types of pinball machines as possible, from EM-games through DMD through modern LCD-based games. (JJP, etc.)
- Be easy enough for non-programmers so that anyone without programming skills can get a machine up and running.
- Bulk of the configuration should be done via text-based config files.
- Game creators should be able to specify their own fonts, language strings, dots, and sounds for common components, all without “real” programming.
- Be extensible so the framework can be used to power more advanced and customs things.
- Be well-documented, both in terms of step-by-step “how to” guides for beginners, as well as more advanced references for hard-core programmers.
- Be extremely modular, allowing game programmers to subclass, extend, and replace certain built-in functionality without breaking the rest. (Hopefully without requiring forking which would make future updates difficult to integrate.)
- Code should be hardware-independent. (Literally you should be able to swap hardware platforms and have all your code run.)
- Robust enough to run on commercially-available games, including games that are in revenue service in public locations.
- Ensure that the more advanced configuration stuff doesn't interfere with people who want to do more manual stuff on their own.
So check it out at http://missionpinball.org.
We also have a PDF version of the documentation (102 pages so far!) from http://docs.missionpinball.org.
Brian Madden & Gabe Knuth