#Unity3d hardware usage + implications – Summer 2015

There’s tonnes of blogs out there, so I only talk about the bits that other people have missed, or were too polite or inexperienced to cover. Often that means I’m the one pointing out the flaws (most people don’t want to write bad things. Screw that; ignoring the bad points does you no favours!).

Sometimes I get to talk about the good bits that – sadly – few people have noticed. Here’s one of those.

Unity hardware survey

Every quarter, Unity publishes a regular round-up of what hardware people are using to run Unity3D games etc (I normally see it via @ArasP – I think he prepares the page each time?). This is hugely important.

There are flaws in Unity that affect us as developers – both the software (bugs, architectural problems) and the company (tech strategies, documentation ethos). A lot of the time we have to second-guess what has happened (“why is this bug happening? Can we workaround it?”) and what will happen (“how likely is it that Unity will fix it? Will similar bugs happen again in future?”). We need data to do this extrapolation – and the hardware survey is a valuable primary source that it’s worth learning to use.

Thanks, Unity, for publishing this – don’t stop! It’s a great resource for all Unity game developers!

For instance … if you find a major rendering bug on a hardware platform that you suspect is very expensive to fix, and that platform is 0.001% of the userbase — you’re better-off working around it with changes to your game-design, than filing a bug report and waiting for Unity to eventually fix it. With the best will in the world, such a small impact / high cost task is always going to be low on the todo-list, and lose out to the thousands of high-impact / low cost bugfixes they’re working on instead.

Mobile: Android is 70% of all gaming phones

…and iOS is the remaining 30%.

Windows Phone?

What is this “Windows Phone” that you speak of?

(building for WP8 on Unity didn’t work properly last time I tried – you had to do a bunch of manual fixes to workaround some Microsoft policy on library inclusions. Does anyone care?

It certainly matters – I refunded someone an asset-store purchase because they were struggling to get WP working, and neither I nor they were 100% if my code was causing the problem – the WP process was a bit odd.

But does it matter enough? No. I’d rather do the odd refund / freebie for WP builders than have Unity waste time they could be fixing the big bugs)

If you have an Android bug on more than one phone

…I’m betting it’ll get fixed quickly. In practice, most Android bugs are one manufacturer (e.g. Samsung, I’m lookig at you) or one chipset (e.g. Tegra); if you can show it crosses manufacturers or chipsets = win.

Or if you can show it’s Android OS version-dependent: there is a large block of users for each version, and aside from the x.0 release, they don’t shrink much.

Multi-threading

5 years ago it was embarassing that Unity was still a hardcoded single-threaded game-engine; today I don’t even have the words.

Look at that graph: 6% of mobile devices and 1% of desktop devices are single-threaded. Unity can’t hold out as single-threaded for much longer, surely?

More importantly – since they have held out so long – look at the pace of change. In the last 12 months, both mobile (32% -> 47%) and desktop (40% -> 60%) have greatly increased the percentage of devices that have four or more threads.

If the engine didn’t get a core re-write and become fully threadsafe soon … it’d be time to abandon it, I think. I am convinced multi-threading will see big catch-up improvements in Unity in the next 6 months. Unity corp has the courage to roll-out all the non-backwards-compatible changes they do each major release each 12-18 months. I don’t believe they lack the courage to re-write the core … e.g. because they’ve decided it’s too amazingly expensive.

If they couldn’t do it, we as game-develoeprs would abandon their engine in favour of a modern one that is not hamstrung.

Mobile GPUs: a shattered space

Android fragmentation per se is not a problem – despite the many naive commentators who love to line up and say “there’s over 9,000 different hardware devices!”. 9,000 isn’t a problem; 9,000 with equal market-share is a problem.

GPU’s are looking like a 4-way race of equivalent shares – nightmare for developers. And they overlap in very non-predictable ways – some of the lowest-end devices have hardware specs of the high-end devices. Previously, the ImgTec share was split into multiple radically different abilities – but they were monotonically better: each was always considerably better than the previous. With ImgTec declining, deciding what rendering-path to use is even less a “if / then / else” thing, but more a complex balancing-act of heuristics.

At this point, I’m thankful that Unity takes care of it for me.

To be fair: Unity’s mobile performance is usually terrible, but I’m always grateful that it WORKS at all – i.e. renders what I expected to see! (that’s a very valuable point to start from when writing your own usable shaders to replace the Unity ones)

…But I haven’t shipped anything to mobile that uses the new rendering pipeline – GI etc. My suspicion – given all the above, and the modifications to shader development in Unity 5 – is that we’ll see mobile render performance on Unity over the next 12-24 months catching-up to be within 20-30% of what it ought to be, across the board. Or it may be there already (that’s not what I’ve heard on the grapevine of people doing high-end mobile games, but rumour is rumour – if you have any published sources on this, please share!)

i.e. “more than good enough” for all except the biggest game projects (all of whom are writing their own shaders, and customizing the render pipeline, anyway – or certainly should be! If you’re a big project, you should be pushing the tech envelope, not waiting for a game-engine company to do it for you!)

Windows, … and DX10

Can you ship DX10-only assets yet? 27% of end-users say “no”. Games may decide to drop that quarter of their sales, but asset-authors (who often take the easy route) still have to support older generations of DX, or get slammed by unhappy purchasers.

Apple, what happens when you **** on gamers?

Answer: “two thirds of them stop using OS X for games”, maybe?

I don’t know what’s caused that drop – in my experience, most of Apple’s actions against computer-owners were 2-4 years ago (deliberately selling GPUs that had already been end-of-lifed by the manufacturer, being very slow to update their graphics drivers, making laptops non-fixable, non-upgradeable, etc).

Anyone else know?

64bit vs 32bit

Apple went all-in here a long time ago; Microsoft somehow is still carrying 38% of users on 32bit. That would be all the Windows XP users, then.

Why are they still using XP? Guess: a lot of them can’t upgrade. Many GPU’s that run most games fine (on medium or low quality settings, but still look great) didn’t get updated drivers for Windows7 and Windows8. I’ve got a gaming PC that still runs XP for exactly this reason – Windows 8 is installed, but without a graphics driver, it’s impossible to play any games (thanks, AMD! Althought nVidia seems to be equally as bad).

And if you look at the games industry today, “sales are based on graphical effects” is no longer the all-encompassing thing it used to be. Graphics are now good enough that often old hardware is fine – the game studio can focus spending money on story, artistic styling, gameplay, etc.

2 thoughts on “#Unity3d hardware usage + implications – Summer 2015

  1. Dev

    They are probably looking to sell to Microsoft. In which case all the problems will be not for them to solve.

Leave a Reply

Your email address will not be published. Required fields are marked *