Search Unity

Secrets to creating the best AR experiences revealed

Last updated: January 2019

What you will get from this page: Tips and tricks for working with handheld AR and a bunch of handy design and user experience points to keep in mind when creating your AR experience.

Design considerations

Apply AR-only thinking: AR is not about adding cool shiny things just for the sake of it. You want to add functionality, value and solve a real pain point.

Focus on stickiness: You can implement achievement-based rewards, social sharing options, multiplayer, and other tools that provide utility.

Think about what makes users come back and make sure to implement some achievement-based rewards for using those AR features in your app. Make it easy for them to take a quick snapshot so that they can share with their friends. Another thing worth considering is to take an existing app and add AR as an extra feature, instead of creating one from scratch.

Break it down into learning chunks: When you’re designing your app, don’t expect your users to spend a bunch of time figuring out how to use it. Invest time in learning how your users interact in the app, and you can do that by breaking the experience down into learning chunks.

Users need to understand how to interact in your AR world, so you could give them some useful hints through text cues, or create a tutorial where you explain what type of space they should be in (maybe your AR experience isn’t designed for small spaces).

User experience

Play to AR strengths

With AR you have direct control of motion tracking with your camera. Even though you may be comfortable keeping your hand stretched out for some time, that doesn’t mean your users will find it easy. Therefore, be considerate of the amount of time your users will have to do this.

Minimize wait time

A great way to onboard your users is by minimizing the wait time. For instance, you don’t have to require motion tracking to start the experience. And, instead of keeping your users waiting in case there are no objects ready at the startup time, make sure you add some text hinting at what’s going to happen next. Or, build an anchor to a feature point while the handheld device is searching for the entire plane. For example, you can start with an object following the camera as you’re scanning the room.

minimize wait time

Let your users know what they can do

Let users know what they can do by showing object "ghosts" on the planes before placing them. Once you’ve found some planes, then you can show your object appearing on the planes before you actually place it. Another way to do that is by using graphics and animations over texts.

what they can do

Account for unexpected situations

Try to avoid AR jargon and guide your users by using common language. For example, if you plan to use the word “plane” for “surface” remember that it may not be perceived the same by all users, and it can easily be mistaken for an airplane object.

Hide objects when tracking is lost. When objects start to chitter and move around, users can lose interest very fast if you don’t let them know that tracking has been lost.

Build a timeout. If users don’t get it after 10 seconds, or if they’re not doing anything in the app, you should consider giving them a hint. Bear in mind that in a mobile environment 10 seconds can translate as quite a long time.

Ensure that your objects look real. Unity provides features that make objects look like they belong where they’re placed. You can do this is by accessing the light estimation parameters in the ARCore and ARKit. We provide shaders in the ARKit plugin.

Performance optimization

AR rendering requires a lot of processing which ultimately results in high battery usage. And, if things start to drift and wobble in your scene that’s because your frame rate dropped. How can you make sure this doesn’t happen?

Testing, testing, and more testing

Make sure you test on all AR-enabled devices, especially on low-end devices, or anything that can run ARCore or ARKit functionality. This should go for any mobile app you're building, and you need to ensure that you have QA built into your production schedule. When testing make sure you are actually tracking what the frame rate is at any given time; since many AR objects are static, it won’t be obvious that you are dropping frames.

Make use of blob shadows

We recommend right off the bat to use blob shadows. That means you can use a texture which you project down onto a plane, and it’s all you need to make something look like it's grounded in the world you’re creating.

blob shadows

Estimate your light

Adjust the light estimation settings so that your device doesn’t keep pulling that information. That way, you can get a huge performance boost.

You can download the AR foundation through the Package Manager and you can find a sample repo available on the Unity GitHub.

More resources

We just gotta know! Did you like this content?

Yes. Keep it coming Meh. Could be better