I’m reaching the point where my “technical debt” is finally catching up with me. The Spaceteam codebase is now 3 years old, using an out-of-date customized version of cocos2d for iOS (notably not cocos2d-x). I’m stuck with this code primarily so I can get the Android version for “free”. My Android build is reliant on the Apportable SDK, which I can still use and still works ok, but I can no longer update it or request new features. And it is difficult to debug.
But I’m trying to move on from Spaceteam, so why does this matter?
Well I still want to support the current players, and I’m starting to get Android bugs that are much harder (and in some cases, potentially impossible) for me to fix on my own. Some of them are just annoying but some are hard crashes, preventing the game from starting. Even if I can fix these bugs they end up taking a lot of time to diagnose and test. I can’t really get help from experienced Android programmers because there is no Android code to work with.
If my Android “solution” no longer works then this not only impacts Spaceteam and its various incarnations (Spaceteam ESL, Spaceteam Kids, etc.), but also my new projects like Blabyrinth that are based on the Spaceteam code. If I can’t easily get Blabyrinth to run on Android then I have no reason to stick with my ancient, cobbled-together, spaghetti Frankenstein code.
So I’m seriously considering rebuilding Spaceteam with new technology. It will take some intense work (at least a month) and if I do it right then nobody will notice that the game has changed. There won’t be any new features. Except that everything will work better. It’s a big investment in the future. Here are the advantages:
- Lots of major bugs will no longer exist (…with a few minor ones to replace them)
- The game will be much easier to maintain and extend
- I’ll have control over the Android version
- Lots of community support, both locally (friends in my co-working space and Montreal in general) and online
- Much easier to find and hire development help if I need it
- Opportunity to use better networking libraries
- Possibility of a Windows Phone version!
- I’ll feel a lot more comfortable and proud sharing the project source code with people 😃
If I can make it work then it will be a much happier note on which to end the main Spaceteam saga and finally move on to other things. So I’ve been investigating this over the past week.
The obvious engine choices are:
cocos2d-x: The cross-platform variant of the engine I’m currently using. This would be the most straightforward port because it’s very similar and supports almost all the same features. It’s tailored for 2D games, which is good for Spaceteam and Blabyrinth.
Unity: Unity has even more community support than cocos. I love Unity and I want to use it for future games, so getting more experience now is another bonus. They have recently improved their 2D, UI, and networking components, all of which are critical for my games. And they have high-quality reusable components available in their Asset Store.
I’ve experimented with both and so far I’m leaning towards Unity.
A Finer Mess
The other project that would be affected (positively) by this change is CaptainsMess, the much-delayed local multiplayer networking library that I want to make freely available.
The delays were due to higher priorities but also to the fact that in its current state it is iOS-only and still has connection issues so I wasn’t confident releasing it at this level of incompleteness.
But if I rebuild Spaceteam then I also have to rebuild the networking and make it work cross-platform, possibly as a Unity plugin, which I think will be much more useful to people.
Whatever form it takes, it will be the version that Spaceteam actually uses and so I would continue to support it. If I go ahead with the rebuild then the old version (if I released it) would be dead on arrival.
Anyway, I’m as frustrated by the delays to Blabyrinth as you are and very eager to work on it again, but I just wanted to explain and justify what I’ve been struggling with lately.