Steamworks Documentation
Godot
The default engine with the built-in OpenXR integration is capable of producing both Android and Linux Arm64 builds for Steam Frame.

First, make sure you have turned on Developer Mode as described in the Setting up your Steam Frame for development this will let you deploy to the headset.
If you’d like to use the Steam Frame Controller Interaction Profile you’ll need to be on at least Godot 4.6 beta 1.

Project Setup

  • Enable OpenXR - (Project / Project settings / XR / OpenXR) and enable stereo shaders (Project / Project settings / XR / Shaders)
  • OpenXR Vendors Plugin - Optionally install the Godot OpenXR vendors plugin from the AssetLib tab. This will enable features such as foveated rendering.
    Note: If you are using Godot 4.5 this plugin is required.
  • OpenXR Action Map - You can optionally add the Steam Frame Controller profile but things will work via the Oculus Touch interaction profile as well.
  • XR Nodes - Setup XROrigin3D and XRCamera3D nodes in your scene.
  • Enable XR - Enable XR via "use_xr = true" in your viewport (see this documentation for a more detailed version)
    //Add this to your XROrigin3D node extends XROrigin3D func _ready() -> void: var xr_interface = XRServer.find_interface(“OpenXR”) if xr_interface and xr_interface.is_initialized(): get_viewport().use_xr = true

  • Export Template - Setup an Export Template if you haven't already (Project / Export)

    Android:

    • Add an Android Export Profile (Use the Add… button)
    • Rename the profile to Steam Frame
    • Enable Gradle Build - Tick the “use gradle build” tickbox
    • Set XR mode - Set the “XR Features/XR mode” to OpenXR
    • Enable Khronos plugin - If you’re using the vendor plugin, tick the "Enable Khronos plugin" tickbox
    • Android Build Template - Install the android build template (Project / Install Android Build Template). If you’re using a stable release, you will be prompted to install the templates. If you’re using a custom build, use the select file option to select the android template zip file.

      For more info: https://docs.godotengine.org/en/stable/tutorials/xr/deploying_to_android.html

    Linux Arm64:

    • Add a Linux Export Profile (Use the Add... button)
    • Rename the profile to Steam Frame Arm64
    • Set the Architecture to arm64

Eye Tracking

Steam Frame supports Eye Tracking in Godot using the Eye Gaze Interaction extension. You can enable it in Project Settings > OpenXR > Extensions.

Foveated Rendering

Steam Frame supports the Foveated Rendering functionality in Godot via the OpenXR Vendors Plugin (or releases here).
Version 4.2.x is needed for vendor extension support including foveated rendering. 4.2.3 is the minimum version with Linux Arm64 support.

Steamworks

GodotSteam 4.17 and later have the Android ARM64 and Linux ARM64 libraries and should work with Steam Frame.

Building to Steam Frame

For both Android and Linux builds you can use the Export Project... button from the export preset window to create a distributable version of your game and use the Steam DevKit Tool to upload these to your Steam Frame.

Alternatively, for Android builds you can deploy and test directly from the Godot IDE using adb. Refer to this article to get started: Connecting adb to Lepton

Once connected:
  1. Setup your export config. If you have multiple export presets setup, make sure the one for Steam Frame is set to runnable.
  2. Optionally, turn on debug capabilities (Debug / Deploy With Remote Debug).
  3. Click on Remote Deploy in the top right toolbar and select Steam Frame Lepton from the dropdown.

    steamframe-godot.webp

Official Documentation

For the most up to date information, please refer to the official documentation, and also be sure to check out the Godot XR Tools.

Notes

  • Multiple adb versions - If you get the error message:
    Unable to reconnect device. error: protocol fault (couldn't read status length): connection reset
    That probably means you have something else trying to use adb. Make sure things like Android Studio are closed.