bevy-cargo-features について
Bevy 0.19のCargo機能を選択・組み合わせる開発者向けのスキルです。ヘッドレスサーバー、カスタムレンダラー、入力、ブラウザビルド向けの構成を解説します。
主な機能
- 01アプリ構成の選択
- 02機能セットの概要
- 03ヘッドレスサーバーの設定
- 04カスタムレンダラーの設定
- 05入力とコントローラー機能
- 06ブラウザビルド構成
活用シーン
- 01未使用のデフォルト機能の削減
- 02ヘッドレスサーバーの構成
- 03カスタムレンダラーでのビルド
- 04ブラウザとコントローラー機能の選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ chrisgliddon/ bevy-skills --skill bevy-cargo-featuresインストール後、Claude Code で/bevy-cargo-featuresを入力して読み込まれたか確認します。
詳細
Bevy 0.19 — Cargo の機能
このスキルを使う場面
- デフォルトの機能一式を有効にせず、サポートされているアプリケーションプロファイルを選択します。
- カスタムレンダラーまたはヘッドレスサーバーを構成します。
- ネイティブのコントローラー入力、ウィンドウ/入力 API、またはブラウザーでのレンダリングを有効にします。
- デフォルト機能を無効にした後に型やプラグインが見つからない場合の原因を調べます。
標準プロファイル
Bevy のデフォルトは 2d + 3d + ui + audio です。プロファイルを選択するには、デフォルト機能を無効にすることが不可欠です。
# 3D game with Bevy UI, but no audio or 2D renderer
bevy = { version = "0.19", default-features = false, features = ["3d", "ui"] }
# 2D game with audio, but no 3D renderer or UI
# bevy = { version = "0.19", default-features = false, features = ["2d", "audio"] }
デフォルト機能を有効にしたまま features = ["3d"] と記述しても、機能は絞り込まれません。Cargo は機能セットを結合するためです。
機能のレイヤー
| レイヤー | 機能 | 意味 |
|---|---|---|
| プロファイル | 2d、3d、ui、audio | アプリの完全な構成 |
| 組み込みレンダリング | 2d_bevy_render、3d_bevy_render、ui_bevy_render | 各領域向けの Bevy レンダラー |
| API のみ | 2d_api、3d_api、ui_api | レンダーバックエンドなしのコンポーネント/アセット |
| 基本機能 | default_app、default_platform | アプリのコアサービスとプラットフォーム/ウィンドウ/入力サービス |
| グループ化 | scene、picking、dev | 関連する機能のコレクション |
API のみの機能では描画できません。Bevy のワールド側の型を使用するカスタム/外部レンダラー向けです。
ヘッドレスサーバー
bevy = { version = "0.19", default-features = false, features = [
"default_app",
"multi_threaded",
"serialize",
"bevy_world_serialization", # omit if the server never loads saved worlds
] }
MinimalPlugins を使い、サーバーが必要とするサービスプラグインだけを追加します。
0.19 では bevy_scene は BSN です。従来のリフレクション対応ワールドシリアライズには bevy_world_serialization を使います。
カスタムレンダラー
bevy = { version = "0.19", default-features = false, features = [
"default_app",
"3d_api",
] }
カスタムレンダラーが Bevy のウィンドウイベントループを共有する場合に限り、bevy_winit/プラットフォーム入力を追加します。Bevy の組み込みレンダラーを実際に使用する場合は、3d_api ではなく 3d_bevy_render を追加します。
入力とコントローラー
mouse、keyboard、gamepad、touch、gesturesは API の各要素を有効にします。- ネイティブのコントローラー検出/入力には、
bevy_gilrsを有効にします。これによりgamepadも有効になります。gamepad機能だけでは、プラットフォームバックエンドは有効になりません。 - 上位レベルの
default_platformコレクションには、bevy_gilrs、Winit、デスクトップウィンドウバックエンド、デフォルトフォント、webgl2が含まれます。
ブラウザープロファイル
bevy = { version = "0.19", default-features = false, features = [
"3d",
"ui",
"touch",
# "webgpu", # overrides WebGL2; use a separate WebGPU artifact
] }
3d プロファイルには、デフォルトのプラットフォームと WebGL2 の経路がすでに含まれています。webgpu を有効にすると webgl2 は置き換えられます。実行時フォールバックを含むビルドではありません。
bevy-wasm-webgpu を参照してください。
0.19 での変更点と注意事項
2dと3dはuiを暗黙的に有効にしなくなりました。uiを明示的に追加してください。2d、3d、uiはaudioを暗黙的に有効にしなくなりました。audioまたはより低レベルのコーデックの組み合わせを明示的に追加してください。sceneはbevy_world_serializationと、新しい BSN のbevy_sceneの両方を有効にするようになりました。dev、dynamic_linking、ファイルウォッチャー、トレーシング、開発ツールは、プロジェクトの開発用機能の背後に置き、誤ってリリースに含めないようにしてください。- ネイティブの Linux ウィンドウバックエンドは
x11とwaylandです。ドキュメントに記載されているモバイル向けのターゲット固有の activity 機能は、相互に排他的です。Bevy にwindowsやmacosという機能名があると考えてはいけません。 - プロファイルコレクションは、安定した出発点です。コンパイル時間、バイナリサイズ、またはカスタムレンダラーのために、保守コストに見合う場合に限り、より低レベルのコレクションを使用してください。
関連項目
bevy-rendering— レンダラー選択の判断基準。bevy-wasm-webgpu— ブラウザービルドのパイプライン。bevy-a11y— アクセシビリティに必要な入力/バックエンド。bevy-migration-0-18-to-0-19— 変更された暗黙的な機能。