Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs or learn how to Submit Your Own Blog Post
Developing mobile games to run great on a low-end device without compromising the experience on a high-end one can be a big challenge. Here are some tips to help you optimize your game for low-end devices.
This article was originally posted on Kongregate's Developer Blog.
One of the biggest challenges in mobile game development is having your game run great on a low-end device without compromising the experience on a high-end one. We tend to optimize and budget the best experience for our high-end devices. There are many good reasons for this: better monetization, better engagement, etc. Low-end devices seem to run away from us in scope and get poorly prioritized because of the focus on high-end devices. But they’re still important! According to a recent Mixpanel trend report, ~10% of iPhone users have an iPhone 5 or below.
You simply can’t. Give your players a comparable experience across all devices. Allow them to accomplish the same core activities that your high-end users do. The experience may not be the same, but the core progression should be close.
Think about low-end devices very early on in the project. Add checkpoints to test low-end devices at a frequency or feature check-in.
Categorize your devices in buckets like Low, Medium, and High Quality. For example, the iPhone 6s is a High Quality device, the Samsung Galaxy 3 is low-end, etc. This list will continually fluctuate as new devices come online and technology advances. Some important things to keep in mind are device specs, chip sets, video memory, video cards, etc.
Leverage the built-in Quality Settings in Unity. You can find it under Edit->Projects->Quality. Remember you can add/remove as many levels as you like. Customize it for your needs. I’d recommend going with three total: Low, Medium, and High. Unity has a bunch of controls you can tune per bucket. This is very helpful for a 3D game, but not so much on 2D.
Deliver different assets based on the device quality. High-end devices get HD; low-end ones get standard. This will help with memory footprint and performance (better FPS and fewer low-memory crashes). You can leverage iOS’s app-thinning technology or Unity’s asset bundles for this as well.
Run your game through different code paths based on the quality settings. For example, your dialogs may animate in/out when they dismiss. On low-end devices, you may want to disable the animations.
Disable masks and alpha. They can put a heavy tax on your frames per second.
Be prepared to make game-specific calls such as, "Which animations should I disable? What PFX should I enable/disable? Should I disable sound?"
Lower concurrent HTTP connections for low-end devices. They usually have fewer CPU threads to work with. Also, make fewer HTTP connections in general, since they hurt your battery life.
Create custom shaders for low-end devices. Limit extra passes and functionality. As an example, a low-end user can still function in your game without having an outline around him when selected.
Use your game engine's profiler to find hot spots on performance. Make sure to run it on the low-end device.
Feel free to reach out to me by leaving a comment below -- I’d be more than happy to share any data or code snippets we have.
Siavash Ghamaty is the VP of Engineering at Ultrabit/Kongregate. He loves big engineering challenges. When he's not racking his brain, he loves eating Mexican food and fantasizing about being an interior designer in his spare time.
Read more about:
Featured BlogsYou May Also Like