mcpField
B
bevy

bevy

github.com/chrisgliddon開発29105 回インストール5 日前に更新
リポジトリ

bevy について

bevyは、Bevy 0.20プロジェクト向けのルーティングスキルです。開発者を各分野の専門スキルに案内し、バージョン固有の書き方や移行時の注意点を示します。

主な機能

  1. 01タスクに応じたBevyスキルへの案内
  2. 02エンジンの基礎とECSの各トピック
  3. 03旧バージョン向け移行スキルの一覧
  4. 04Bevy 0.20のAPI変更点
  5. 05よくある落とし穴の説明

活用シーン

  1. 01Bevyの作業に必要なガイダンスの検索
  2. 02Bevy 0.20のコードを書く前のパターン確認
  3. 03旧バージョンからの更新時の変更点確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/chrisgliddon/bevy-skills --skill bevy

インストール後、Claude Code で/bevyを入力して読み込まれたか確認します。

詳細

Bevy 0.20 — ルーター

Bevy プロジェクトで作業する際は、まずこれをお読みください。 すべての関連スキルは Bevy 0.20(2026-10-08 に 0.20.0 がリリース、現在のパッチバージョンは 0.20.1、rustc 1.97.1 が必要)を前提としています。ユーザーの Cargo.toml で別のバージョンが指定されている場合は、いったん作業を止め、このコレクションのパターンを適用する前に確認してください。

最小限の有効なアプリ

use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera3d::default());
}

タスクに応じたスキルの選び方

タスクスキル
アプリ/プラグイン/スケジュールの基本、Update と FixedUpdate の違い、排他的システム(0.20 のあらゆる場所での &mut World)bevy-core-concepts
#[derive(Component)]、#[require(...)]、オブザーバー(On<E>、On<Add<T>>)、フック(on_add/on_discard)、ストレージbevy-ecs-components
Query、With/Without/Or、Changed/Added、par_iter、iter_many(..).matched()、クエリレンズbevy-ecs-queries
SystemParam、SystemSet、.run_if、順序付け、.chain_weak()、remove_systems_in_setbevy-ecs-systems
Cargo.toml の機能:2d/3d/ui、*_api、bevy_curve、compressed_image_saver*、WASM の軽量化bevy-cargo-features
0.19 からのアップグレード — On<Add<T>>、PointerClick、Hovered/Pressed、WESL、set_if_differentbevy-migration-0-19-to-0-20
0.18 からのアップグレード — FontSource/FontSize、bevy_world_serialization、コンポーネントとしてのリソースbevy-migration-0-18-to-0-19
0.17 からのアップグレード — MessageReader、On、RenderTarget、GlobalAmbientLightbevy-migration-0-17-to-0-18
glTF シーン向けの AssetServer、Handle<T>、load_builder、ホットリロード、WorldAssetRootbevy-assets
AssetLoader の作成(Reader::seekable が必須)bevy-custom-assets
WASM ビルドパイプライン、WebGPU と WebGL2 の比較bevy-wasm-webgpu
Camera3d、Projection、RenderTarget コンポーネント、Tonemapping::Linear、ScreenSpaceTransmission、FreeCamera、PanCamerabevy-cameras
StandardMaterial、MaterialPlugin<M>、AsBindGroup、WESL カスタムシェーダー、ライティング、大気bevy-pbr-materials
GPU パーティクル(bevy_hanabi)、ガウススプラット、フリップブック、カスタム VFX マテリアルbevy-vfx
AnimationPlayer、AnimationGraph、AnimationTransitions、AnimationMask、AnimationEvent、イージングカーブbevy-animation
カメラ映像の MP4 または PNG シーケンスへの録画(bevy_capture)bevy-capture
block-mesh-rs によるボクセルメッシュ生成、チャンクパイプライン、グリーディークワッドbevy-voxel-pipeline
RON ブロック定義、パレット、KTX2 アトラスのベイクbevy-voxel-data
再割り当て可能なアクション、エンティティの Gamepad、ホットプラグ、デッドゾーン、Steam Deck、FixedUpdate への入力bevy-input-actions
AudioPlayer、PlaybackSettings、AudioSink、空間リスナー、ミックスグループ、ブラウザーでのロック解除bevy-audio
Rapier の剛体、コライダー、固定ステップの順序付け、イベント、シーンのクエリ、ジョイント、決定性bevy-physics
組み込み/外部/ヘッドレスレンダリング、フォワード/ディファードレンダリング、レンダリングシステムbevy-rendering
DiagnosticPath、DiagnosticsStore、info_span!、RenderDiagnosticsPlugin、CPU/GPU の処理時間bevy-diagnostics-profiling
安定 ID、バージョン管理された保存 DTO、ネイティブ/ブラウザーでのアトミック書き込み、スナップショットbevy-save-load
決定的な App::update ステップ実行、TimeUpdateStrategy、MessageCursor、ヘッドレステストbevy-testing
スクリーンリーダー、アダプティブコントローラー、再マッピング、字幕、コントラスト、モーションの安全性bevy-a11y
ボクセル編集からランタイムでの再メッシュ化まで:dirty/halo のファンアウト、リビジョントークン、上限付きアップロードbevy-voxel-runtime
es-fluent-manager-bevy による i18n — FluentText<T>、BevyFluentText、LocaleChangeEvent、i18n.tomlbevy-fluent
Node、ui_widgets::Button と Hovered/Pressed、children![]、TextFont/FontSize、Val::Em、Node::border_radius、InputFocusbevy-ui
Unity、Unreal、Godot、Phaser、Flash、Defold、Roblox、GameMaker からの移植bevy-porting
コミット前のコピペコード/類似コードの検出(similarity-rs --cross-file)similarity-rs

基本ルール(Bevy 0.20 のすべてのタスク)

  1. イベントはメッセージです。 EventReader<E>/EventWriter<E> は 0.17 で MessageReader<M>/MessageWriter<M> に変わりました。オブザーバーでは Trigger<E> ではなく、必ず On<E> を使います。
  2. ライフサイクルオブザーバーでは、イベントにバンドルを指定します。 On<Add<Player>> を使います。On<Add, Player> ではありません(0.20 で変更)。Replace は 0.19 で Discard に変わりました。
  3. ポインターイベントはフラットです。 On<PointerClick> と click.pointer.position を使います。On<Pointer<Click>> ではありません(0.20)。
  4. UI のインタラクションには Hovered と Pressed を使います。 ui::Interaction と ui::widgets::Button は 0.20 で非推奨になりました。ui_widgets::Button をスポーンしてください。
  5. テキストには FontSource と FontSize を使います。 TextFont { font: handle.into(), font_size: FontSize::Px(24.0) } を使います(0.19)。デフォルトのサイズは FontSize::Rem(1.) です(0.20)。
  6. シェーダーは WESL です。 .wesl、import a::b;、@if(DEF) を使います。naga_oil の #import/#ifdef は 0.20 ではアセットの読み込み時に失敗します。
  7. リソースはコンポーネントです(0.19)。Res<T> は引き続き使えますが、同じ型を Component と Resource の両方にはできません。
  8. シーン: glTF は bevy_world_serialization の WorldAssetRoot を使ってスポーンします。bevy_scene は BSN です(0.19)。
  9. システム内で .unwrap() を使わないでください。 let ... else { return }; を使うか、適切なエラー処理を行います。
  10. スケジュールの順序は明示します。 デフォルトでは曖昧さは無視されます(ScheduleBuildSettings::ambiguity_detection は LogLevel::Ignore です)。検出するには LogLevel::Error を有効にします。組み込みセットは 0.20 で .chain_weak() を使うため、チャネルやアトミックを介したセット間の順序付けには、明示的な .after() が必要です。

注意点

  • Bevy のトレーニングデータの大部分は 0.10~0.16 のコードです。コードスニペットが自明に思えても、信用する前に 3 つの移行スキルで確認してください。
  • bevy::prelude::* ですべてが再エクスポートされるわけではありません。Hovered は bevy::picking::hover::Hovered、Pressed はマーカー bevy::ui::Pressed(Has<Pressed> でクエリします)、Tonemapping は bevy::core_pipeline::tonemapping::Tonemapping、ScreenSpaceTransmission は bevy::pbr::ScreenSpaceTransmission です。
  • bevy クレートは多くのサブクレート(bevy_camera、bevy_light、bevy_material、bevy_extract、bevy_curve、bevy_shape、bevy_world_serialization、bevy_ui_widgets、bevy_feathers)を再エクスポートします。プラグインが依存する API として、サブクレートの API は安定した選択肢です。
  • 非推奨の API(Interaction、set_if_neq、AssetId::invalid())は 0.20 では警告付きでコンパイルされますが、後のバージョンで削除されます。今のうちに修正してください。

関連項目

  • bevy-migration-0-19-to-0-20 — 改名と破壊的変更をまとめた最新のカタログです。
  • bevy-cargo-features — 上記の項目が意図どおりにコンパイルされるようにするため、Cargo.toml に記述する内容です。

コメント