mcpField
B
bevy-game-engine

bevy-game-engine

github.com/laurigates開発5956 回インストール1 日前に更新
リポジトリ

bevy-game-engine について

Bevy と Rust でゲームを開発する人向けに、ECS、アプリ構成、レンダリング、入力の基礎を解説するスキルです。作業別のリファレンスファイルと開発コマンドも含みます。

主な機能

  1. 01ECS、プラグイン、スケジュール、状態の解説
  2. 022D・3D レンダリングと UI の説明
  3. 03入力、アセット、イベントのリファレンス
  4. 04プロジェクト構成の指針とコマンド

活用シーン

  1. 01新しい Bevy ゲームプロジェクトの開始
  2. 02入力処理と状態遷移の実装
  3. 03アセット読み込みとゲームシステムの整理

インストール

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

$npx skills add https://github.com/laurigates/claude-plugins --skill bevy-game-engine

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
assets-and-states.md
events.md
input.md
project-architecture.md

詳細

Bevy Game Engine

操作性、モジュール性、パフォーマンスを重視して Rust で構築された、データ駆動型ゲームエンジン Bevy を使ったゲーム開発に関する専門知識です。

このスキルを使う場面

次のような場合にこのスキルを使います…次のような場合は bevy-ecs-patterns を使います…
新しい Bevy ゲームプロジェクトを始めるECS クエリのパフォーマンスやアーキタイプの配置を最適化する
基本的な ECS の概念を学ぶ、または適用する複雑なシステムのスケジューリングや順序付けを実装する
入力(キーボード、マウス、ゲームパッド)を処理する変更検出(Changed<T>、Added<T>)を使う
ゲームの状態や遷移を管理するParamSet や並列クエリ反復を使う
アセットを読み込み、管理するエンティティ間の関係階層を設計する
プラグインやアプリの構造を設定するアーキタイプの断片化やストレージ戦略をデバッグする
イベントやリソースを扱うバッチスポーンや遅延操作を実装する

主な専門分野

Bevy のアーキテクチャ

  • Entity Component System(ECS):エンティティ、コンポーネント、システムを用いたデータ指向設計
  • プラグインシステム:再利用可能なプラグインによるモジュール型のゲーム構成
  • スケジュール:システムの順序付けと実行タイミング
  • リソース:システムからアクセスできるグローバルなシングルトンデータ
  • イベント:システム間での型付きメッセージの受け渡し
  • 状態:ゲームの状態管理と遷移

レンダリング

  • 2D レンダリング:スプライト、スプライトシート、テキスト描画、2D カメラ
  • 3D レンダリング:PBR マテリアル、メッシュ、ライティング、シャドウ、カメラ
  • UI:ゲーム内インターフェース向けの bevy_ui
  • シェーダー:カスタム WGSL シェーダーとレンダーパイプライン

参考ファイル

ECS のコア、プロジェクトのセットアップ、以下のコマンド一式が、最初の作業に必要なすべてです。必要なときにリンクを 1 つたどってください。references/ 以下は、開かない限り読み込まれません。

作業内容ファイル内容
プレイヤー入力を読み取るreferences/input.mdButtonInput によるキーボード/マウスのポーリング、押下中と押した瞬間の判定、カーソル位置、ゲームパッドとキー再割り当ての案内
アセットを読み込む、またはステートマシンを動かすreferences/assets-and-states.mdAssetServer ハンドルと LoadState による制御、States 列挙型、OnEnter/OnExit/run_if(in_state)、NextState のタイミング
通信が必要な 2 つのシステムを疎結合にするreferences/events.md#[derive(Event)]、EventWriter/EventReader、add_event の登録、2 フレームのバッファーと順序に関する注意点
大規模化するゲームの構成を整える、またはフレーム時間を調査するreferences/project-architecture.mdディレクトリ構成、プラグイン/マーカーコンポーネントの整理、クエリフィルターとプロファイリングの指針、バンドルとシステムセット

主な機能

ECS の基本

use bevy::prelude::*;

// Components are plain data structs
#[derive(Component)]
struct Player;

#[derive(Component)]
struct Health(f32);

#[derive(Component)]
struct Velocity(Vec2);

// Spawn entities with components
fn spawn_player(mut commands: Commands) {
    commands.spawn((
        Player,
        Health(100.0),
        Velocity(Vec2::ZERO),
        SpriteBundle {
            transform: Transform::from_xyz(0.0, 0.0, 0.0),
            ..default()
        },
    ));
}

// Systems query for components
fn move_player(
    time: Res<Time>,
    mut query: Query<(&Velocity, &mut Transform), With<Player>>,
) {
    for (velocity, mut transform) in &mut query {
        transform.translation += velocity.0.extend(0.0) * time.delta_seconds();
    }
}

アプリの構成

use bevy::prelude::*;

fn main() {
    App::new()
        // Default plugins (window, rendering, input, etc.)
        .add_plugins(DefaultPlugins)
        // Custom plugins
        .add_plugins(GamePlugin)
        // Resources
        .insert_resource(GameSettings::default())
        // Startup systems (run once)
        .add_systems(Startup, setup)
        // Update systems (run every frame)
        .add_systems(Update, (
            player_movement,
            collision_detection,
            update_score,
        ))
        .run();
}

// Organize with plugins
pub struct GamePlugin;

impl Plugin for GamePlugin {
    fn build(&self, app: &mut App) {
        app.add_systems(Startup, spawn_player)
           .add_systems(Update, player_input);
    }
}

基本コマンド

# Create new Bevy project from the official template (recommended — ships an
# opinionated app skeleton, CI, and release profiles). See rust-plugin's
# cargo-generate skill.
cargo generate --git https://github.com/TheBevyFlock/bevy_new_2d --name my_game

# Or start from an empty crate
cargo new my_game
cd my_game
cargo add bevy

# Run with fast compile times (debug)
cargo run

# Run with optimizations
cargo run --release

# Enable dynamic linking for faster compiles (dev only)
cargo run --features bevy/dynamic_linking

# Common dev dependencies
cargo add bevy_egui           # Debug UI
cargo add bevy_rapier2d       # 2D physics
cargo add bevy_rapier3d       # 3D physics
cargo add bevy_asset_loader   # Asset loading helpers
cargo add leafwing-input-manager  # Advanced input

エージェント向けの最適化

用途コマンド
簡易コンパイルチェックcargo check 2>&1 | head -30
高速なテスト実行cargo test --lib -- --test-threads=1 -q
高速コンパイルで実行(開発用)cargo run --features bevy/dynamic_linking
最適化ビルドを実行cargo run --release
よくある問題をチェックcargo clippy -- -W clippy::all 2>&1 | head -50
プロジェクト内のプラグインを一覧表示grep -rn "impl Plugin for" src/ --include="*.rs"
ゲームの状態を一覧表示grep -rn "derive.*States" src/ --include="*.rs"
イベント定義を検索grep -rn "derive.*Event" src/ --include="*.rs"
依存関係を一覧表示cargo metadata --format-version=1 | jq -r '.packages[0].dependencies[].name'

詳しい ECS パターン、高度なクエリ、システムのスケジューリングについては、bevy-ecs-patterns スキルを参照してください。

コメント