Blackbox for Vision ProCustom gestures, room-aware hints and materials for a Vision Pro launch game, made in a small team led by Ryan McLeod.RealityKitSwiftARKitView case studyInteraction design · Spatial computing
Finding a Wall
Choosing a readable place for a hint in an unfamiliar room, then keeping it stable.

A wall seems an obvious place for a hint. The game still has to choose one.
In Blackbox for Vision Pro, we wanted some clues to appear in the player's own room instead of on a floating interface. I built a system that used the available room data to find suitable walls and place the text.
A detected surface is only a candidate
The fact that a surface exists does not make it useful. It might be too small, outside the player's view or facing an awkward direction. I considered the size, visibility, orientation and view when choosing a placement.
Those are practical requirements for this clue. The goal was not to identify a wall in the abstract; it was to find somewhere the player could comfortably read what we were placing.
Do not keep changing your mind
A system can select a good wall and still feel unstable. Small changes in the player's position or view can make another candidate look slightly better.
I gave the chosen wall some persistence. It should not lose its hint every time a competing score improved a little. The system needed a useful distinction between finding a better option and the current option becoming unsuitable.
This is easy to miss when looking at one screenshot. It becomes obvious when a hint moves between surfaces as someone turns their head.
Make the decision visible
The development view exposed the candidate walls and the chosen placement. I could inspect what the system was considering and tune it while standing in the room.
During development I needed the surfaces and decisions to be explicit. The player only needed to see a hint in a plausible place.
A small piece of spatial interaction
The hint is not the largest effect in Blackbox. It is a useful example of the work that makes an experience feel aware of its surroundings: choose a location for a reason, account for the user's view and avoid unnecessary changes once something works.