I’m making a game that uses the Highlight object to point out specific parts that the player can interact with, specifically the Outline property. It works fine on a computer, but doesn’t show up on my phone because of the algorithm Roblox uses for lower end devices.
I’m just wondering if there’s any way of detecting that so I can fall back onto a different method (eg. using the FillColor if they can’t support outlines)? I know there’s some workarounds for trying to detect if it’s a phone (eg. if they have touch, don’t have a keyboard, etc.) but I’m hoping there’s something that might be more accurate.
Never knew that roblox had a specific algorithm for lower end devices - very interesting. Nevertheless, most games have opted to just ask the user if they are on a low-end device since realistically the user is the only one who can gauge how high-end / low-end their own device is.
To my knowledge, nothing in the roblox API would give you direct knowledge of a specific device being low or high end.
You can always try, like you said, detecting if touch is enabled to see if the player is using a mobile device, or alternatively maybe try Stats:GetTotalMemoryUsageMb() to see how much memory a given player is using(and making an estimated guess on if their device is lower or higher end). All of these methods though will come with drawbacks and misses.
For now, the best solution seems to be to prompt the player on what graphic settings they’d like and base what you display off of their input. Roblox doesn’t seem to be a big fan of giving developers direct knowledge on a given player’s specs, which is pretty understandable.
At worse, you can guess whether the device is able to hold up your game depending on the FPS and user graphic settings/UserSettings().GameSettings.SavedQualityLevel. If it’s low FPS on high graphics that’s not necessarily a bad device, but low FPS on a low setting, that’s where you get desperate to save their performance.