Developer documentation

Interaction

To make games compelling, we often have to provide ways for the player to interact with in-game items. Very often, players interact with these 3D objects through a 2D glass. We propose an interaction language that mimics how a player would naturally interact with such objects in the real world.

Selecting objects

Tap should be a lightweight way to select things in the scene. Be unambiguous of what the user is touching. Show appropriate feedback such as an outline or an animation when selected, or a touch highlight if not.

Tap

Respect the Z-order of things. When the touch point corresponds to two items, always select the one that is in front.

Tap multiple

Make sure that each tap target has an area of at least 30 by 30 pixels. Consider culling objects smaller than these dimensions (usually further away) from the selectable hierarchy.

Tap small

Avoid using Taps to change the state of the object. If the object needs to switch states, such as moving from being placed to being free floating, consider using an explicit menu to indicate to the user that the object is switching mode.

Manipulating objects

Very often, there is a need to manipulate objects in the scene. The main challenge here is that we are translating a 2D gesture on a screen into manipulating objects in 3D space.

Our recommendation here is to use the one-finger pan to move objects within the primary plane, and utilize a two-finger pan to move objects within the orthogonal plane.

For a typical configuration, we think most intuitively, objects should traverse the ground or horizontal plane. In this configuration:

  • Panning upwards should feel like a one finger push and objects should be “pushed” further away.
  • Panning downwards should feel like a one finger pull and objects should be “pull” further away.
  • Panning left or right should move the object on the horizontal axis.

Move

  • Use two-finger pan in the upwards or downwards direction to move items on the corresponding Y-axis.

Lift

  • Use two-finger pinch to resize the selected object.
  • Use two-finger turn to rotate the object whenever necessary.

Rotate

  • Since a lot of these gestures are not precise, consider providing guides that can be snapped on by the final state of the gesture.

In this scenario, we can treat the movement in the ground plane the primary or most common action that the user is taking. The rest of the gestures are considered secondary.

However, there are scenarios where it is desirable for example to let the user easily rotate and object. In those scenarios, it is helpful to lock the movement in a single axis, then allow the user to single finger pan rotate the object. An example setup:

  • The user taps the object to select it.
  • After selection, the object gets presented in the center of the screen.
  • The user uses one finger pan to rotate the object to her desired position.
  • The user confirms the action on a button and the object returns to the original position.

Because 3D affords more degrees of freedom, we recommend providing constraints and guides when manipulating objects. One common way of doing this is to allow objects to snap into place, be it placing objects onto surfaces or rotating in right angles.

Typically, and interaction requires more than 2 fingers is not really discoverable to the end user. Use with caution.

Gestural interactions

  • There are times when it is most appropriate to use a gesture that mimics a real world action. This increases player immersion in the world.
  • A good candidate for these interactions are when the user is interacting (not manipulating) with objects in the 3D space.
  • For example, use Swipe to mimic a physical action, such as opening a drawer Use a long press or force touch to push a heavy stone.