There are plans to port my games to other platforms. Windows is easy because my games already run on Windows. XNA works great, you just have to remove the Xbox-specific stuff (related to the Guide and Gamer Services) and you’re good to go. Unfortunately there’s no turnkey solution for the other platforms, so the porting process is going to be… more of a real port.
Today I investigated two options for this task. First was MonoGame, basically a substitute for the XNA libraries that supposedly runs on Linux, OSX and iOS. Sounds too good to be true, and unfortunately at this stage, it just doesn’t look ready. To get a game to compile with it, I had to remove tons of code due to compatibility errors and missing API calls. Even once I got through the compile errors and runtime errors, the game never managed to draw anything (though it could clear the screen to a specific color). Plus the startup time for the application was about 5x compared to native XNA… so maybe there are workarounds, but so far it just doesn’t seem viable.
Unity is the other option. Now a port from XNA to Unity is a major undertaking. I got some serious protips from Brad who helped me through all those tiny things that trip up newcomers, and probably saved me a day’s worth of Googling. The good news is I have a friend who knows Unity whom I can harass with my questions. The bad news is that there will be some serious translation work to get my code from XNA to Unity. I was hoping to put everything (my whole game) in one game object and let it draw itself, since I don’t need any of the high level features of Unity. Just give me a surface to draw to. Unfortunately it’s not so simple… exactly what this will take is something I’ll be discovering over the next few days.