Steamworksドキュメント
Steam Frameのデバッグ

新バージョンを英語でお読みいただけます

翻訳が公開されてから、このページの英語版が更新されました。
このページの英語版を表示するにはこちらをクリックしてください。
Steam Frameは、ゲームに特化したArchベースのLinuxディストリビューションであるSteamOS上で動作します。 これはつまり、アプリケーションで何が起きているかを明確に把握しながらデバッグするために、コンピューターをフル活用できるということです。

開発者モード

ssh、adb、rdpを介してヘッドセットに接続するには、 steamframe/setupに記載されている開発者モードを有効にする必要があります。 これにより、ヘッドセットへの接続とデプロイが可能になります。

役立つ情報:Windowsで開発している場合、WinSCPというツールがデバイス間でのファイルの転送に便利です。

ヘッドセットビューをリモートで確認

Steamリンクを使えば、ヘッドセットの映像をリモートで確認できます。 iOSまたはAndroidアプリを使用して、frameに接続します。 デスクトップで、 「Steam」>「設定」>「リモートプレイ」を開くと、frameの横に「接続」と表示されます。 PCで初めてSteamリンクを起動すると、全画面表示になります。 alt+enterを押して、ウィンドウモードに切り替えます。 この設定は次回以降の起動時にも記憶されます。

パフォーマンスグラフ

ダッシュボードの右下にある時計ボタンをクリックし、次にパフォーマンスボタンをクリックして、下部にある「VRでパフォーマンスオーバーレイを表示」を有効にすると、ヘッドセット内のパフォーマンスグラフをオンにできます。

steamframe-perfgraph.png

緑は、ゲームが必要なフレームレートを達成していることを意味します。 上部の数値は、ゲームのGPUによる1フレームあたりの処理量をfps(1秒あたりのフレーム数)に換算したものと、片目あたりに送信されるテクスチャ解像度を示しています。 ゲームの実行速度が特に速い場合は、ミリ秒表示に切り替わります。 一番下の行は、SteamVRのコンポジターがVsyncごとに使用している時間、現在のGPUクロックレート(MHz)、および過去2秒間の平均消費電力を示しています。

一番下の行には秒数を示すための目盛りがあります。
黄色はゲームが半分の速度で動作していることを意味します(送信される各フレームの処理に1~2回のVsync間隔が必要な状態です)。
赤は、ゲームが各フレームを処理するのに2回以上のVsync間隔が必要な状態であることを意味します。
ピンクは、SteamVRのコンポジターによるGPUプリエンプションが何らかの理由で失敗したことを意味します。

深度とモーションベクトル

ゲームから送信される深度とモーションベクトルを検証するには、「VR設定」>「開発者」に移動し、 「ヘッドセットにパフォーマンス基準のゲームテクスチャを表示」の​​ドロップダウンから選択します。

steamframe-debug-textures.png

steamframe-debug-depth.png

steamframe-debug-motion.png

リモートデスクトップ

開発者モードを有効にすると、リモートデスクトップを使用してSteam Frame上でLinuxデスクトップ環境にアクセスできます。 Windowsには「リモートデスクトップ接続」というアプリケーションが含まれています。 VNCや同様のプログラムも使用できます。

接続するには、Windowsで「リモートデスクトップ接続」を開き、コンピューター名に「frame」と入力します。

steamframe-remotedesktop.png

接続が完了すると、XRDPのログイン画面が表示されます。 セッション名はデフォルトで「Xorg」、ユーザー名は「steamos」、パスワードは開発者モードの設定で以前に設定したものです。

steamframe-xrdp.png

SSHとADB

開発者モードを有効にすると、デフォルトユーザーのsteamosと開発者モード設定で設定したパスワードを使用してヘッドセットにssh接続することができます:
ssh steamos@frame

または、USBケーブルでヘッドセットをPCに直接接続して、ヘッドセットにadb接続することもできます。 adbがまだインストールされていない場合は、Android SDK Platform Toolsの一部としてインストールできます。 なお、adbはLeptonインスタンスへの接続に使用することもできます。 インストールが完了したら、次のコマンドでデバイスに接続できます:
adb shell

ヘッドセットに接続すると、以下のような便利なコマンドが利用できます。
  • cdd-便利なSteam Frameスクリプトが多く含まれるディレクトリに移動します。
  • cdl-Steamログディレクトリに移動します。
  • lepton-Leptonは、弊社のAndroid互換性レイヤーの名前です。 多くの場合、Leptonインスタンスを指定する必要があります。SteamライブラリからLepton Developmentを実行している場合は「dev」になります。 実行可能なコマンドの説明を取得するには、「lepton」を実行してください。 色分けされたlogcatを取得するには、「lepton dev logcat」を実行してください。
  • sudo pacman-PacmanはArchパッケージマネージャーです。 「sudo pacman -Ss packageName」でパッケージを検索できます。 パッケージをインストールするには、「sudo pacman -S packageName」を実行します。
  • sudo steamos-readonly disable-デフォルトのファイルシステムは読み取り専用であるため、pacmanなどは実行できません。 書き込み可能にするには、このコマンドを実行してください。 ほとんどの変更は、次回OSを更新する際に上書きされます。

コアダンプ

ネイティブアプリケーションがクラッシュしてコアダンプを取得した場合、GDBを使用してクラッシュした箇所のコールスタックを確認できます。 クラッシュが発生した後、次のコマンドを使用してコアダンプの一覧を表示します。
coredumpctl
これにより、閲覧可能なコアダンプの一覧と、それぞれのPID番号が表示されます。 プロジェクト名にちなんだ名前が付いた関連するダンプファイルを見つけ、次のコマンドを入力してダンプを表示します。数字は表示したいダンプファイルのPID番号に置き換えてください。
coredumpctl debug 1234
このコマンドはダンプを読み込みます。読み込みには時間がかかることがあります。 プロンプトが表示されたら、Enterキーを押すと、すべてのシンボルが読み込まれます。 クラッシュが発生した場所のスタックトレースを確認するには、GDBコマンドプロンプトから「bt」と入力します。

Lepton

弊社の軽量なAndroid用翻訳レイヤーであるLeptonでは、デバッグに役立ついくつかのオプションを利用できます。 ヘッドセットにSSHでアクセスし、コマンドラインオプションを取得できます。 ADBは他のモバイルデバイスと同様に動作するはずです。 それは、ADBを介して接続すると、以下へアクセスできることを意味します。
  • adb logcat-デバイスからのログのリアルタイムストリーミング
  • adb shell-Androidインスタンスのコマンドラインへのアクセス
  • adb bugreport-クラッシュダンプとログが入ったzipのダウンロード

adbを介したLepton DevelopmentでのRenderDocの使用

Androidアプリケーションを開発する場合、最初にadb経由で接続する以外は、標準のAndroidワークフローで問題ありません。 Wi-Fiで接続する場合は、ヘッドセットがPCと同じネットワークに接続されていることを確認してください。
  1. HMD内:SteamライブラリからLepton Developmentを起動し、読み込みが完了するまで待ちます。
  2. PC上:adb connect frameでframeに接続します。
  3. PC上:RenderDocを開き、左下隅でAndroid 5.xデバイスを選択します。
  4. PC上:adb installでアプリをインストールします。
  5. PC上:RenderDoc内の「Launch Application」でアプリの実行可能ファイルのパスを選択します。

RenderDoc

RenderDocを使用してSteam Frame上のWindows、Linux、またはAndroidアプリケーションからフレームをキャプチャーする最も簡単な方法は、リモートデスクトップを使用してデスクトップPCから接続し、RenderDocをFrame上で直接起動することです。

steamframe-renderdoc.png

SteamOS Devkit Toolを使用してアプリケーションをデバイスにアップロードすることをお勧めします。これにより、起動オプションを簡単に追加できるSteamエントリーが作成されます。
  • SteamOS Devkitクライアントを使用してタイトルを追加します。
  • 上記のリモートデスクトップセクションにある手順を使用して、Steam Frameにリモート接続します。
  • 次に、左下のApplication Launcherをクリックし、「renderdoc」と入力して、クリックして起動します。
  • 起動後、アイコンを右クリックしてピン留めすると、次回以降簡単にアクセスできます。
  • そこから「File」>「Attach to Running Instance」を選択します。
    Protonを介してゲームを実行すると、3つのwine_preloaderインスタンスが表示されます。 一番下の選択肢を選びます。

ゲームが表示される前に、RenderDoc Vulkanレイヤーを有効にして起動する必要があります。 これは、環境変数ENABLE_VULKAN_RENDERDOC_CAPTURE=1を設定することで実行できます。 Steamでアプリの歯車アイコンをクリックし、コマンドラインを編集して次のように設定できます。
ENABLE_VULKAN_RENDERDOC_CAPTURE=1 %command%

キャプチャーボタンが無効になっているか、または機能しておらず、APIが「Not Presenting」と表示されている場合は、起動オプションにEnableFrameEndMarkers=1を("%command%" の前に)追加してみてください。
ENABLE_VULKAN_RENDERDOC_CAPTURE=1 EnableFrameEndMarkers=1 %command%

追加のパフォーマンスツール

パフォーマンスを評価するための追加の開発者ツールは、こちらから入手できます: https://gitlab.steamos.cloud/deckard/frame-developer-tools

トラッキングエラー

トラッキングに関して深刻な問題が発生した場合は、弊社までお知らせください。 トラッキングデータセットを記録することで、問題が発生した箇所を分析し、今後のアップデートで対処することができます。 これは、特定の時間内におけるトラッキング状態の全体のスナップショットです。 これにより、トラッキング入力をリプレイして、HMDとコントローラの各位置で何が起こったかを正確に把握し、これらの入力に対して新しいトラッキングソフトウェアをテストすることができます。

記録は手動で開始および終了する必要があるため、問題が継続的に発生している場合、またはそれほど手間をかけずに問題を再現できると思われる場合に最適です。 理想的なのは、キャプチャーウィンドウ内で、トラッキングが正常に機能している状態から機能しなくなった状態に移行する瞬間が記録されていることです。 トラッキングが回復した場合は、その回復状況のデータセットを含めることも有用です。
データセットの記録の際は、ヘッドセットに搭載されたさまざまなセンサーのデータが記録されますが、カメラ映像、画面録画、音声データの記録は任意です。 任意ではありますが、データが多いほど、記録しているトラッキングの問題を特定できる可能性が高くなります。 さらに、音声データを含めることを選択すると、記録しながら状況を説明した声のデータを追加することができます。

  1. VRダッシュボードを開き、Steamオーバーレイに移動してから、「VR設定」に進みます。
  2. 詳細設定が有効になっていない場合は、有効にします。
  3. 「開発者」設定タブを開き、下にスクロールして「追跡データを記録」を見つけます。
  4. データセットにカメラ/画面/音声データを含めるかどうかを選択します。
  5. 次に、「追跡データを記録」の横にある「開始」をクリックします。
  6. 画面上部に録画アイコンが表示されます。 必要であればダッシュボードを閉じて、キャプチャーしたいトラッキングの問題を再現してください。
  7. 完了したら、同じ設定ウィンドウを開き、「停止」をクリックしてキャプチャーを終了します。
  8. その後、ファイルを取得するには、ヘッドセットにSSHで接続します:ssh steamos@frame
  9. 次のコマンドを実行して、最新のデータセットを圧縮します。
    zip -r latestDataset.zip "$(ls -td /home/steamos/.config/openvr/config/cv/xrservice/datasets/ | head -n 1)"
  10. exitと入力して、SSHを終了します。
  11. scpを使って、ヘッドセットからzipファイルを現在のディレクトリにダウンロードします。
    scp steamos@frame:/home/steamos/latestDataset.zip
  12. その後、お好きなファイルホストにアップロードして、ファイルへのリンクをメールでお送りください。

Android Mesaデバッグ

低レベルデバッグにアクセスするためにMesaデバッグドライバーをインストールしたい場合は、SSHを介してこれを実行できます。
  1. SSHでSteam Frameに接続します
    ssh steamos@frame
  2. Mesaの現在のバージョンを確認します
    mesa_version
    (「Mesa 25.3.0-devel (git-8d3763730d)」といった内容を報告するはずです)
  3. ファイルシステムを書き込み可能にします
    sudo steamos-readonly disable
  4. pacmanを使ってdebug mesaをインストールします
    sudo pacman -S deckard-mesa-android-aarch64-debug

USBケーブル

長時間の開発作業を行う場合は、コンピューターに接続できるだけでなく電源供給も可能なUSBケーブルを用意しておくと便利です。 コンピューターのUSBポートからの電力だけでは、ヘッドセットの動作を維持することはできません。