I am working on a set of multiplayer games, where different games play against each other (e.g. you play a Tetris clone, I play an Asteroids clone, but we are both competing against each other). All the games would be based on the same underlying framework written specifically for this project.
I am struggling to comprehend how I would license this so that:
- The underlying framework is open source, so other people can create new games based on it.
- Some games built on the framework are open source
- Other games are closed source
The goal is to have two bundles on something like the Android market:
- One free and open source package which has a collection of games
- Another "premium" (although I dislike that word) paid package which has a different collection of games.
Usually I am fond of permissive licenses such as MIT/BSD, however I would prefer something more in the vein of the GPL for this. This is because for software such as the snes-9x SNES emulator, which is a great piece of software, there is a ton of poor quality versions being sold, whereas it would be preferable if there was just one authoritative version which was always kept up to date, and distributed for free.
If the underlying framework was GPL'd, would I be able to build closed source games on top of it?
Thanks for your input.
Edit: @JasonMorales gave me a little more to think about. There are a couple of ways it could be put together:
- Main application, handles networking, main menu's, etc, and loads games as plugins.
- Games are all separate applications, and the framework will provide a menu, networking, etc.
The first is good because there is guaranteed to be consistency between games. It is not good, however, in the sense that I can't imagine how it would be deployed via the Android market. That is, you go to the market, and download a new game. If it was more akin to a regular package manager, this game would depend on the main application and it would install quietly. I'm not convinced the Android market works like this though.
The second would deploy easier, because each time the user downloads a new game, it does exactly what they expect: downloads a game and gives them a nice icon for them to open it from. There are obviously several downsides to this too though, such as if the framework decides to update its menu or network implementation, the other games will not get this update unless they re-release themselves.
But because I'm ranting, I may create a new question for these matters.