Hi guys,
Just working on porting my first game from Windows Phone to Android. In Windows Phone 8, there are two 3 types of devices … 512MB RAM, 1GB RAM and 2GB RAM. I had a problem where my game used to crash on devices with 512MB RAM and as a result I got a lot of bad reviews early on until I fixed it. I’d like to avoid that situation from occurring on Android but I’m not sure how to do this.
How can I determine how much RAM Android provides to a game if the device has only 512MB of RAM to begin with? In Windows Phone, it’s 180MB of RAM. Does Android have an equivalent or does it depend on how many programs are running in the background?
If I test it on a device with 512MB of RAM (I have a Sony Xperia and a Nexus phone for testing at the low end), is that generally sufficient or should I try to get beta testers with more devices?
The google play store creates a list of devices that my game can run on by vendor. How did it come up with this list? Is there something in the Unity build that specifies which devices it can run on?
Any help would be appreciated.
Raj
You can’t restrict by memory, and the thing is, it might run perfectly on a phone with 512MB ram, but on another phone with 512MB ram it doesn’t, because that particular device setup doesn’t allow it to have as large of a heap size etc. It’s honestly a hit or miss situation…
Thanks for the clarification. Any particular best practices you can share for this? I noticed that in Unity Player Settings, you can set minimum API. By default, I think it’s set to Jelly Bean (4.1). Do most Jelly Bean phones have 512MB or more of RAM? Is that a good way to try and prevent lots of downloads from low end hardware users?
Sort of, but there are still issues because even the new low end phones have jelly bean!
My old Atrix which has 2.3.6 on it is fine memory wise and its getting pretty old in a way. Yet a brand new phone with 4.* crashes.
I just removed all 2.* from the min API because at least I will be targeting newer hardware which will have better cpu/gpu at least.
If you REALLY wanted you could limit by screen size or resolution or something like that. Most of the “bigger” devices have more RAM.
It’s kind of a double edged sword, because you can do some things to help prevent lower end devices from getting your game, but it ends up cutting out GOOD devices and also still leaving some BAD devices.
Thanks … I’m thinking I might just leave the minimum API at 4.1 and then have some code that checks system memory on the first scene and lets the user know that the game won’t work well on his / her device due to memory.
On the Google Play Console, you can specify which devices your app is compatible with.
If I was in your shoes, I would check screen resolution/etc to determine if the phone could possibly be an “old” phone (like you’ve suggested). If it is, maybe warn them and quit the app. However, as well as this, I would disallow installs on all popular 512mb ram phones. This way, 90% of people with an slower device won’t be able to play the game, and the 10% who have some slow obscure Hawaii brand android phone will be given a message that their device isn’t supported.
Or you could sift through the thousands of devices listed on the Play Console and manualy disable all slow phones 