2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🦀ひとりRustとBevyでゲーム開発🕊️Advent Calendar 2024

Day 15

【Rustのまほう2】#15 bevy_remote_inspector

Last updated at Posted at 2024-12-14

#2で bevy-inspector-egui というプラグインを紹介しました。これは Bevy 界隈ではデバッグ用に比較的よくつかわれているツールのようなのですが、Bevyのウィンドウ上に被さるように表示されるため、画面が少々見づらいです。また、bevy-inspector-egui のリストを操作するとウィンドウをクリックしたことになって魔法が発射されてしまうという難点もありました。

それで、先日リリースされた Bevy 0.15 で Bevy Remote Protocolという機能が提供されるようになったのですが、これはBevyアプリケーションに外部から接続してワールドを覗けるという共通プロトコルになっており、これをもとにしたデバッグ用ツールがいくつか新しく登場しているようです。

そこで、今回は最近登場した bevy_remote_inspector というプラグインを試してみます。

bevy_remote_inspector

bevy_remote_inspectorはリモートからBevyアプリケーションに接続できるデバッグツールです。使い方は cargo add bevy_remote_inspectorで依存関係に追加して、app.add_plugins(RemoteInspectorPlugins)でプラグインを追加するといういつもの手順です。ただし、Bevy Remote Protocolはは外部からの接続を受け入れるものですから、wasmビルドでは動きません。私の場合は、以下のように target.'cfgを使って依存関係を記述する必要がありました。

[target.'cfg(target_arch = "x86_64")'.dependencies]
bevy_remote_inspector = "0.1.0"

こうして起動すると、デフォルトでは ws://localhost:3000 で Bevy の Remote のポートが開きます。そしてここが特徴的なのですが、UIはウェブアプリケーションとしてデプロイされていますhttps://bevy-remote-inspector.pages.dev/ というURLを開くとこれがローカルのアプリケーションに接続します。なのでデバッグ用のツールを個別にローカルにインストールする必要がありません。

実際に使ってみると、こんな感じになりました。デバッグツールにはゲームの状態がリアルタイムに表示されていますし、エンティティのコンポーネント一覧からプロパティをいじると、それがリアルタイムにゲームのほうに反映されます。素晴らしい!

スクリーンショット 2024-12-14 034435.png

それでこのツールをいじっていたら、さっそく自分のゲームのバグを見つけました。ゲーム本編からメイン画面に戻ったときに、一部のエンティティ(ゲーム内にあったランタンの光源)が消去されず残ったままになっていました。printfデバッグも有用なのですが、ちゃんとGUIデバッガで観察することも大切ですね。

そのほかのデバッグツール

bevy_inspector.nvim

UIがNeovimになっているやつ。私はNeoVimは使っていないので今回はパス。

bevy-remote-devtools

TauriベースのUIのやつ。今はメンテナンスされていないようです。

bevy-inspector-egui

私も今まで使っていたやつ。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?