So let’s say I want my game to be able to run (at least sort of smoothly) on as broad range of phones and tablets as possible. How good is Unity for that?
When I was developing a game in a small team 4-5 years ago, I remember us running in issues like long loading times, device overheating, quick battery drain and had to optimize a lot of elements because of low framerate when trying to run the project on older phones and even on some midrange Android ones. How good are things with this today?
I’m thinking of a casual 2D game which should do pretty well built on, let’s say, Corona SDK, or some other lighter engine. But what I like about Unity is the great built-in animation editor, although on course of our past development we had to replace the animations with spritesheets for the sake of optimization anyway. So can I count on using Unity’s built-in animation tools without burning down Android 5-ish gadgets as well as avoiding other aforementioned problems?
Why don’t you grab some older devices and try apps on them? Obviously, don’t expect modern apps perform as well on older devices. So you need match app age and processing power required for most adequate results.
Low quality / performance device will overheat no matter what. Some got that issue, other manage it well, dropping FPS.
I have two mobile games nearing completion. They are very different (one a shoot-em-up, the other puzzle) but both run smoothly at 60 FPS on every device I have tried. That includes an iPad 4 (released over 7 years ago) and Samsung Galaxy Tab S (released nearly 6 years ago and known for a GPU not up to the number of pixels, hence the choice as a test device). There has been a lot of optimisation done obviously. I don’t know about about the animation tools as I don’t use them, but you have experience of a backup plan.
The thing is, the demands of every tool depends on your usage for each individual game, so you will need to test for your needs. My shoot-em-up ran at 60 FPS straight away, and just needed to deal with the occasional thing I added that caused performance problems. The puzzle game ran at 2 FPS originally and I had to take a different approach that didn’t have excessive overdraw. The new approach was quick to test, although it took time to set up fully, but did work as intended.
Unity is perfect for doing 2D games for low end phones but you’re going to have to profile from day 1 and get used to the idea that you don’t get to run all the bells and whistles like you would on a desktop.
I have an app that’s been downloaded about 9 million times and, at one point, I started getting lots of complaints that it didn’t row on low end Android phones. The particular model of phone was super popular in Europe, India and Russia so I bought one on Ebay for $65 and figured out the issue. I had hard coded some limit on minimum screen resolution. Turns out the screen was 320x240. Once I fixed that, my 3D game ran like a charm or about as well as one would expect on a low end phone. Users were pretty happy and I saw a noticeable, non-trivial uptick in sales from those regions.
Thanks for your replies and especially for sharing your personal experiences, that’s what I was looking for!
Okay, I will be able to sort framerate problems, but what about launch time, device overheating and battery drain? Those are some much more complex issues to deal with, as they all depend on the engine itself. As far as I can remember, they were absolutely ridiculous, I remember the literal pain of playing on some phones as they burn through your hands. Thankfully it didn’t last long because the battery died in moments. And I’m talking about a 2D game! Is this still a thing?
How were these factors playing out in your games? Also, how long does it take for your games to launch?
Learn Unity DOTS. Getting “performance by default” allows you to minimize the time the device spends loading, the time the device spends processing data, and all of this minimizes battery drain and heat output.
Learn Unity SRP. A “scriptable render pipeline” means that you can completely disable graphical features you don’t need in your game as opposed to traditional rendering pipelines (Unity’s builtin as well as every other game engine) where a feature always has at least some degree of overhead.
IMHO, DOTS isn’t ‘perfomance by default’. It’s ‘performance in quite specific situations, via a completely new workflow’.
While there’s cases where DOTS will bring significant performance gains, there’s also a lot of common situations where DOTS will be completely the wrong answer to a performance problem.
The most common causes of poor performance on mobile are likely to be things like inappropriate use of expensive shaders/lighting, use of postprocessing, excessive polygon counts, heavy use of alpha blending on a silly-DPI screen, and complex/unoptimised UIs.
Oh wow, this could be a decisive feature! It’s amazing that they let people edit all that stuff! Sounds like much more work than I thought. Also, not that many tutorials out there yet as I can see.
Anyway, I guess that does it, Imma download Unity and start messing with it right now! Thanks everyone for your replies!