I’ll try to have an inside view from a tool developer’s perspectiveHardware/software/support fragmentationWe’ll look at some cases studies
Started when all Unity was a 20-something people companyKnown as mobile specialist, cover iOS and Android, some FlashHad worked for a year just debugging and profiling user projects, got some levelupsBiz guys stole me as they understood I could speak Russian and they could notNow I am trying to make things works between Unity and the Russian-speaking countries
Lets start with spooky stories we all know and loveManufactureers – leaders are obvious, but the cool stuff is – verizon, sprint and huawei – the players you would not care about ARE NOTICEABLE
Another spooky story – the popular deciesNotice the old devices on the top – SGS2, SGS1 and one of the Google Nexus sister devicesBTW, these three run on completely different hardware with completely different GPUs, something we’ll cover a bit later
My favorite slide – it frightens everyone around. Screen resolutions.
Continuing the spooky stories, the outline – so where exactly the stuff is fragmented
Like it? Was that spooky enough for you to target iOS only? But you saw the stats and the tables, you can onlyTarget the stable and popular devicesCover paying users (means newest top devices) firstDo the rest if you careWould it work for you? Who thinks targeting only the best the popular would work for them?
So “target only the top, best, most popular” approach works for the 10$ games with stunning graphics and stuffIf your monetization approach requires you to own as many users as possible, then you have problemsUnless you’re using Unity (kinda…)But seriously, any Unit users here?OK, anyone does development for Andorid? For iOS?
And the challenge #1 is a hardware fragmentation – basically you have a very rough estimation about the hardware your game is going to run onImagine developing for a gaming console with an undefined hardware, this is pretty much itWhat is the expected performance?What cpu features are available?Unity helps, but no worries, moreover you probably won’t be CPU bound anyways…
Because you’ll be GPU bound =)The architectural differences makes it's easy to be ruin performance on one type while running fine on the others.So the advices are regular: test early, profile on different devices, know your hardware – I’ll cover that in a bit
Screen resolutions are often same on tablets and phonesThink Google Nexus phone vs Asus Transformer tabletControls feel different, ergonomics of your controls change along with the screen sizeImagine the pitch of the touch joystick control on 3” and 10”Mind it, try your game on different devices earlyTest your loading screen with different screen resolutionsOptimize controls for different DPIs, screen resolutionsIf absolutely necessary you can release high-res and low-res versions of your game
The performance can indeed be different depending on the OSBut essentially all the good stuff is available in GingerbreadHoneycomb is tablet only – brought USB joystick/mouse supportHard to support relates to typical hardware these OSes run on
Good manifest is an art, we do the 99% of it good for 99% of the usersUnity covers input from everything from touchscreen to joysticks/mouse, depending on OS version.Unity hides implementation details for peripherals that require OS specific init – like camera setup.Same as hardware – define the minimum API level you’re targeting, and develop accordingly, be it HoneyComb or Gingerbread
The cool part, especially important for the guys doing own engine, who don’t have the same power as we doGoogle Marketplace gives you enough storage, so good there, needs some hacking, but good enough otherwiseIf you’re lucky to get a deal for your game to be preinstalled on a device, you’ll probably be allocated a meg or twoYay for customized firmwares! Differentiation is a key – new unique services, new features, new bugsSoftware updates get into operator devices slower, bear with itWebuy, get, summon new hardware to run our tests as early as possibleIf you report a bug that something does not work on a certain device and we don’t have a clue what’s going on, we’ll buy a new deviceWe have 6 Samsung Galaxy S devices – differ by cellular modem, one has Qwerty keyboard, also the software versions are different – all had different issuesWe workaround the issues if feasible/possible, talk to OEMs, chip designers a lot.
In a same way you want to make a game and want to focus on a game, instead of tools to make the game.You want to just complain that something is broken and have it fixed. That’s what we do.Or we also give away free advices, on how do you make your stuff work if you’re pushing the hardware to its limits.
Just in case you missed it – bad piggies, Windows 8, Flash
Bonus slide. We found out it yesterday. So cute of them
But. Jokes aside =]
Jokes aside. So remember, we had this fragmentation nightmare and different hardware and software… good?There was a conclusion that Unity fixes lots of stuff, but you still should now a few bits about hardware and do the testworkNotice, we’ve covered bigger screens with high def resolution, smaller screens with bigger resolution, different hardwares
Just in case you missed it – bad piggies, Windows 8, Flash