03 · Native
On a device,
in a hand
A world in a browser tab is a sketch. The same world on a phone, on a battery, at sixty frames, is the test. We run that test early and often.
Live budget
- Target60fps
- Frame16.6ms
- Measured60fps
- Pixel ratio2x
The screen on the left is the same raymarched world as the index page, scaled to a phone viewport with a reduced step count. The numbers are read from this browser right now.
What we are learning
The device changes the design.
- N.01
Thermal is the real frame rate
A scene that holds sixty frames for ten seconds and forty after two minutes is a forty frame scene. We measure after the phone is warm.
- N.02
Thumbs are not cursors
Hover does not exist. Precision is lower. Half the screen is covered by the hand using it. Interaction built for a desk has to be rethought, not shrunk.
- N.03
Metal when it earns it
The rule: a world ships as WebGL inside a native shell until it proves it cannot, and only then is it rewritten in Metal. SwiftUI holds the interface around it.
- N.04
Ship to TestFlight before it is pretty
A rough build on a real device teaches more than a polished build in a simulator. We put it on a phone in the first week.
Next
Studio