🥽

VR / Steam Frame

Immersive applications built for the Steam Frame headset with Godot 4 and OpenXR on ARM64 Linux.

The Steam Frame is a standalone ARM64 VR headset running SteamOS. Rather than streaming from a PC, these applications are compiled into native Linux ARM64 binaries that run directly on the device using Godot's OpenXR implementation.

Current Experiments

🌌

holodeck

An open, explorable virtual space inspired by the classic sci-fi concept. Switch between a jungle and a beach environment.

Environment Locomotion
Read More →
📦

objectViewer

A 3D model viewer for inspecting objects on a pedestal inside VR. Models are hosted on 3d.pixelsoftware.nl.

Model Loader GLB
Read More →
🔥

CampFire

A cozy, atmospheric campfire scene used as a POC for loading objects, basic collision, lighting, and audio ambience.

Atmosphere Audio
Read More →
🦾

ik-demo

An inverse-kinematics demonstration for arm and hand tracking inside VR. Evolved into a lightsaber deflection practice experience.

IK Tracking
Read More →

Tech Stack

Applications are authored in Godot 4.7.2 with the Mobile renderer and exported as a single, self-contained ARM64 binary with the PCK embedded. OpenXR provides the VR interface, while a custom locomotion rig handles walking, snap-turning, controller input, and haptic feedback.

Godot 4.7.2
OpenXR
Mobile renderer
Linux ARM64
GDScript
Procedural assets

The build pipeline stamps every export with the project version, build date, and git short hash. Headless tests run with env -u DISPLAY to avoid OpenXR startup alerts on machines without a headset attached.

Workflow

Development follows a rapid-iteration loop: prototype the scene in Godot, import only the assets the scene actually references, run the headless test suite, and export with ./tools/export.sh. The resulting binary is pushed to the Steam Frame, made executable, and launched from the SteamOS app list.

Because the exported binary must run directly on the headset, it has to be uploaded to the device. First put the Steam Frame in developer mode and create a device password by following the official setup guide: Steam Frame setup documentation.

← Back to Projects