bevy-game-engine について
Bevy と Rust でゲームを開発する人向けに、ECS、アプリ構成、レンダリング、入力の基礎を解説するスキルです。作業別のリファレンスファイルと開発コマンドも含みます。
主な機能
- 01ECS、プラグイン、スケジュール、状態の解説
- 022D・3D レンダリングと UI の説明
- 03入力、アセット、イベントのリファレンス
- 04プロジェクト構成の指針とコマンド
活用シーン
- 01新しい Bevy ゲームプロジェクトの開始
- 02入力処理と状態遷移の実装
- 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.mdevents.mdinput.mdproject-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.md | ButtonInput によるキーボード/マウスのポーリング、押下中と押した瞬間の判定、カーソル位置、ゲームパッドとキー再割り当ての案内 |
| アセットを読み込む、またはステートマシンを動かす | references/assets-and-states.md | AssetServer ハンドルと 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 スキルを参照してください。
コメント
Markdown 対応