After a couple of months full-time on Blabyrinth I'm back on Spaceteam maintenance for a few weeks. I want to improve the connection issues, add support for Bluetooth, and a few other things. I don't want to get too sidetracked but I'm being paid for most of this work so it's easier to justify. Although I'm starting to wish I had some kind of 'employee' to help out! Here are my priorities:
Complicated and boring, but I’ve put it off for too long. It’s time to get my hands dirty. Here’s why it’s difficult:
- The original Bluetooth code was in Objective-C on iOS, and I don’t have the Android code at all because of reasons. So... I can’t just port it to Unity.
- Unity’s High-Level Networking API (HLAPI) doesn’t support Bluetooth so... I have to find (or write) a plugin.
- There is a good Bluetooth plugin for Android that integrates with UNet HLAPI, but... it doesn’t work for iOS.
- The best iOS plugin I found that supports Bluetooth doesn’t integrate with the HLAPI so... I have to start using the Low-Level API. This requires modifying all the networking code (again) to use simple client/server messages instead of SyncVars, Commands, and ClientRPCs. Complicated, boring, and requires re-testing most of the game.
- On top of this, the iOS Bluetooth plugin seems to be broken. After further investigation it appears that it might be an Apple bug.
- At this point I’ve resigned to just writing an equivalent plugin myself. I haven’t written a Unity plugin before and while I’m sure I can figure it out, it’s not very exciting. Luckily I’ll only have to write it for iOS because I have no experience at all writing native Android code.
But once I get it working I'll be done with Bluetooth, I'll have a more flexible low-level networking layer, and I can reuse the code for Blabyrinth and CaptainsMess. It's a worthwhile investment.
Mysterious external project
More details later but a company has licensed Spaceteam in bulk to play in their venues and I’ll be doing some custom work to support it. It seems like a good fit and there is money involved so I think it's worth it!
Upgrading Spaceteam ESL
Spaceteam ESL is still on the older codebase (1.8) so it has the same Android incompatibility issues that plagued regular Spaceteam. It’s time I brought it up to code, but it also allows me to add the next interesting feature...
This will technically allow you to play with people who aren't in the same room, but I don't recommend it (you won't be able to hear each other!). This feature is designed for situations where neither local Wifi or Bluetooth will work, like school classrooms where Spaceteam ESL is primarily used. My plan is to use GameSparks Real-Time for this, but I’m also investigating other options (like Google Play Real Time Multiplayer) since GameSparks has user limits that I might eventually break.
The next logical step for Spaceteam ESL is to introduce an equivalent version for learning French! Concordia is rustling up some more grant money so I’ll be working on this for a few weeks. Since the code is mostly shared with the ESL version it won’t take too long.
...and One More Thing
The Spaceteam family is getting a little bit bigger... because Admiral Spaceteam and I are having a baby! She's almost 6 months pregnant and the due date is in June.