Cross Platform Development - Plan Ahead or Wing It?

Obviously… it’s always better to plan ahead…

I run a VERY small Indie studio… Like, 3 people… I am the only coder… We are making a Facebook game. The idea is simple, I am making a game that I am completely in love with and passionate about (totally platonic, as a man can towards a video game… LOL) and I am making it for me… If other people play it and have fun, that’s good! If they spend money on premium ‘stuff’, GREAT!

So… this is going to be much more graphic intensive than any Facebook game I’ve personally played… We’re using meshes, “3d space”, pretty FX, high res textures, etc… We are building for the future of gaming on a 4k TV but letting the game engine handle scaling down for specific platforms like ‘Web’…

ANYWAY… I would VERY much like my game to be playable on iOS and Android, not just a PC Web Browser. All 3 will require a FB login. So, should I build my game to run in PC Web Browser first, just to get the game created and potentially earning some income (at least the $20/month I am spending to run my company…should be easy)? Or, should I start planning RIGHT NOW to have the game work on all 3 platforms and actually start coding for all 3 simultaneously?

Keep in mind I am the only coder and this is my first major release (I do have a BS in Game Design and Development and 4+ years practice on my own as well as a few years programming tools for a major retailer so I’m not exactly a light-weight but I’m definitely not an old pro…)

FYI: I do have practice with developing for PC and Android, no iOS experience or device to test on. Here’s a few samples: http://archongames.com/Games/UltimateWuzzleInvasion.html

Thanks in advance for feedback, opinions, advice! :sunglasses:

If you know you want to make it available on multiple platforms down the road, it would be a bit silly not to plan ahead on it, it would make the actual porting down the road much easier rather than having to modify the original project.

You do not need to actually code every version at once, you could just as well start by making the web version if that could make you guys generate revenue as soon as possible that is needed for the actual development. It’s important that you then define all the hooks into the game that the other versions of the project will need and some core functions like basic Facebook integration could be worthwhile to ensure that it works correctly on all platforms.

So if you for example have some kind of post to Facebook function in the game, the actual Facebook SDK implementation might be different depending on the platform it is running on, so in your base function that posts to Facebook, you would define how it should be handled on each platform.

Content scaling, shader optimizations and so forth also needs to be considered. In general Unity can get you very far when it comes to optimizing content, but you absolutely should not expect models designed for 4k viewing to properly scale down to mobile devices with good performance.

I finished my first iOS app a few weeks ago. I started with a simple app to teach myself the process before I make a full game. I did an Android build with zero problems and put it on the Google Play store. Submitting to the Apple store is a much longer process.

You will need a mac to build using XCode. I’ve seen people claim to use VMs but I don’t want to deal with the hassle. I have a five year old mac laptop running the latest OS and it works fine. I do most of my work on PC and use bitbucket with Mercurial to share work between my mac and PC.

There are simulators included with XCode, so you can start there for testing. I used my iPod for testing touch controls. I built the app with no problems in Unity, did a build in XCode, tested on a few simulators, and on my iPod. I can also use my wife’s older iPhone.

I submitted the app, waited about a week, and the Apple reviewer found a crash bug on iPhone 5s running iOS 7.1. Luckily, I have a neighbour with this combo so I can debug using his phone.

When you have a crash bug, Apple will provide you with .crash files. To use these files, you need to save certain files created during the build process. Learn about this before you lose those files.

If you are doing iOS development, you might run into similar situations. There’s a lot of small problems that require a time investment to learn about and fix.

P.S. - Design for the controls on your target platform. Game mechanics don’t necessarily transfer from mouse control to touch control. Play some of the best iPhone games and you’ll see they use touch, tilt, and tap controls effectively.

The major problem I think with running on different devices is that if you have some parts native, then that specific part of your game will “explode” with the number of different native builds you need to make.

Example

  • Android with Intel (need to put export as google ploject and add use the native activity as start [so later you wil launch other activities]) or ARM (which is supported directly by unity) going native are 2 different tool chains… even that both of them are java.
  • Windows phone plugins (ok it is just more c#)
  • blackberry native plugin it is C++.

Also see that debuging is a little pain in the ass (I think) if you are not doing it on the editor.

Wing it, because there’s lessons here you’ll only learn by doing, not by reading. Learn the hard way, but don’t be afraid to learn the hard way.

See that if you don’t need anything native… the “code explosion” of languages which I talked…

Maybe you will find some “quirks” when going to Windows phone (it seems that some classes are on mono and not on .NET MS) I have not solved this problem (I’m on a WIP)… but I guess it is only a name change or different package (I hope that is only that).