mcpField
B
bevy-game-engine

bevy-game-engine

github.com/laurigates开发5956 次安装1 天前更新
代码仓库

关于 bevy-game-engine

面向使用 Bevy 和 Rust 开发游戏的开发者,提供 ECS、应用结构、渲染及输入等基础指导。内容还包含按任务分类的参考文件和开发命令。

主要功能

  1. 01讲解 ECS、插件、调度与状态
  2. 02涵盖 2D、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 游戏引擎

Bevy 游戏开发方面的专家知识。Bevy 是一款使用 Rust 构建、以数据驱动的游戏引擎,注重易用性、模块化和性能。

适用场景

在以下情况下使用此技能……在以下情况下改用 bevy-ecs-patterns……
开始新的 Bevy 游戏项目优化 ECS 查询性能或原型布局
学习或应用基本 ECS 概念实现复杂的系统调度或排序
处理输入(键盘、鼠标、游戏手柄)使用更改检测(Changed<T>、Added<T>)
管理游戏状态和状态转换使用 ParamSet 或并行查询迭代
加载和管理资源设计实体关系层级
设置插件和应用结构调试原型碎片化或存储策略
处理事件和资源实现批量生成或延迟操作

核心专长

Bevy 架构

  • 实体组件系统(ECS):采用实体、组件和系统的数据导向设计
  • 插件系统:通过可复用插件实现模块化游戏组织
  • 调度:系统排序和执行时机
  • 资源:系统可访问的全局单例数据
  • 事件:系统之间的类型化消息传递
  • 状态:游戏状态管理和状态转换

渲染

  • 2D 渲染:精灵、精灵表、文本渲染、2D 摄像机
  • 3D 渲染:PBR 材质、网格、光照、阴影、摄像机
  • UI:用于游戏内界面的 bevy_ui
  • 着色器:自定义 WGSL 着色器和渲染管线

参考文件

ECS 核心、项目设置和下方的命令集足以满足初步需求。根据任务需要打开一个链接即可——除非打开,否则不会加载 references/ 下的任何内容。

当前任务文件内容
读取玩家输入references/input.mdButtonInput 键盘/鼠标轮询、按下与刚按下状态、光标位置、游戏手柄和重新绑定相关指引
加载资源或驱动状态机references/assets-and-states.mdAssetServer 句柄和 LoadState 门控、States 枚举、OnEnter/OnExit/run_if(in_state)、NextState 时机
解耦两个需要通信的系统references/events.md#[derive(Event)]、EventWriter/EventReader、add_event 注册、两帧缓冲区及排序注意事项
规划不断扩大的游戏,或排查帧耗时references/project-architecture.md目录布局、插件/标记组件组织、查询过滤和性能分析指引、bundle 和系统集

关键能力

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

Agent 优化

场景命令
快速编译检查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