一款基于终端的 Roguelike 地牢爬行游戏,灵感来自 Shattered Pixel Dungeon,使用 Rust 和 ECS(实体组件系统)架构构建。游戏完全在终端中运行,具备经典 Roguelike 玩法,包括回合制战斗、物品收集和地牢探索。
- 基于终端的界面:使用
ratatui渲染,直接在终端中游玩 - ECS 架构:实体-组件-系统设计,灵活且易维护的游戏逻辑
- Roguelike 元素:随机地牢生成、永久死亡和具有挑战性的敌人
- 回合制战斗:具有能量管理的策略性战斗系统
- 物品系统:收集和使用各种物品、武器和护甲
- 视野系统:高级视线系统用于探索
- AI 系统:具有不同行为的敌人 AI(激进、被动等)
- 可扩展设计:易于添加新系统、组件和实体
游戏遵循 ECS(实体-组件-系统)模式:
组件是表示实体属性的纯数据结构:
Position:x、y、z 坐标Actor:包含名称和阵营Renderable:视觉属性,如符号和颜色Stats:生命值、攻击、防御等Inventory:物品管理Viewshed:视野系统Energy:基于回合的移动系统AI:敌人行为Effects:激活的状态效果Tile:地形属性
实体是组件的集合,表示游戏对象,如:
- 玩家角色
- 敌人(哥布林等)
- 物品(药水、武器等)
- 地牢瓦片(墙壁、地板、楼梯)
系统包含游戏逻辑,操作具有特定组件组合的实体:
MovementSystem:处理实体移动和碰撞AISystem:处理敌人 AI 行为CombatSystem:处理战斗交互FOVSystem:计算实体的视野EffectSystem:管理激活的效果和状态条件EnergySystem:基于能量管理回合调度InventorySystem:处理物品管理RenderingSystem:为渲染准备数据InputSystem:处理玩家输入TimeSystem:管理游戏时间进程DungeonSystem:管理地牢生成和关卡管理
有关能量驱动的回合调度器、阶段顺序和扩展点的详细说明,请参阅 docs/turn_system.md。
- Rust(最新稳定版本)
- Git
- 支持 UTF-8 字符的终端
- 克隆仓库:
git clone https://github.com/your-username/terminal-pixel-dungeon.git
cd terminal-pixel-dungeon- 构建项目:
cargo build --release- 运行游戏:
cargo run游戏目前正在开发中,尚未完全可玩。您可以探索 ECS 架构并参与开发过程。要运行当前版本:
cargo run --release- 回合制移动:每个动作根据您的能量水平消耗时间
- 视野:仅渲染可见的瓦片,营造氛围和策略
- 物品管理:在您的库存中收集、使用和管理各种物品
- 战斗系统:具有攻击、防御和准确度机制的策略性回合制战斗
- 敌人 AI:具有独特行为和策略的不同敌人类型
- 地牢推进:探索难度递增的多个关卡
- 获得经验并升级
- 随时间改善属性
- 深入地牢时发现更好的装备
游戏使用 vi 键和数字键盘进行移动:
| 按键 | 动作 |
|---|---|
k、↑ |
向北移动 |
j、↓ |
向南移动 |
h、← |
向西移动 |
l、→ |
向东移动 |
y、7 |
向西北移动 |
u、9 |
向东北移动 |
b、1 |
向西南移动 |
n、3 |
向东南移动 |
. |
等待/跳过回合 |
> |
下楼梯 |
< |
上楼梯 |
Shift+K/J/H/L/Y/U/B/N |
向某方向攻击 |
1-9 |
使用库存中的物品 |
d |
丢弃物品 |
q |
退出游戏 |
- 运行中:正常游戏
- 暂停:临时暂停
- 游戏结束:当玩家死亡时
- 胜利:当玩家获胜时
├── src/
│ ├── ecs.rs # ECS 框架和核心组件
│ ├── systems.rs # 游戏系统实现
│ ├── game_loop.rs # 主游戏循环
│ ├── renderer.rs # 使用 ratatui 进行终端渲染
│ ├── input.rs # 输入处理和事件处理
│ ├── main.rs # 入口点
│ ├── combat/ # 战斗系统模块
│ ├── dungeon/ # 地牢生成模块
│ ├── hero/ # 英雄系统模块
│ ├── items/ # 物品系统模块
│ ├── save/ # 存档系统模块
│ ├── error/ # 错误处理模块
│ └── achievements/ # 成就系统模块
├── docs/ # 详细文档
├── Cargo.toml # 项目依赖和配置
├── README.md # 本文件
└── LICENSE # 项目许可证
项目结合了 ECS(实体-组件-系统)架构和模块化 crate 结构:
- ECS 实现:基于
hecs构建,实现灵活的游戏实体管理 - 模块化设计:为不同的游戏系统(战斗、地牢、英雄等)提供独立的 crate
- 核心集成:中央
core模块协调 ECS 和模块化系统 - 优势:
- 解耦的游戏逻辑
- 灵活的实体组合
- 高效的系统执行
- 清晰的模块边界
- 易于测试和维护
游戏使用 ratatui 进行终端渲染,提供:
- 响应式终端 UI
- 可自定义的布局
- 颜色和样式支持
- 基于小部件的渲染
输入通过 crossterm crate 管理,提供:
- 跨平台终端支持
- 实时输入检测
- 基于事件的输入处理
我们欢迎为终端像素地牢做出贡献!以下是您可以提供帮助的方式:
- Fork 仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 进行更改
- 确保您的代码遵循项目的风格和约定
- 根据需要添加或更新测试
- 提交更改(
git commit -m '添加惊人的功能') - 推送到分支(
git push origin feature/amazing-feature) - 打开 Pull Request
- 遵循 Rust 最佳实践和惯用法
- 使用
rustfmt格式化您的代码 - 编写有意义的提交消息
- 为新功能添加文档
- 为新功能编写测试
- 在提交之前确保所有测试通过
- 游戏机制:实现缺失的游戏功能
- 地牢生成:创建有趣且多样的地牢布局
- 平衡:调整属性、物品和敌人难度
- 艺术和文本:描述、风味文本和游戏传说
- 错误修复:识别和解决问题
- 性能:优化系统以获得更好的性能
- 功能:添加新物品、能力和内容
本项目根据 LICENSE 文件中的条款获得许可。
- 灵感来自 Shattered Pixel Dungeon
- 使用 Rust 构建
- 使用 ratatui 实现终端 UI
- 使用 crossterm 实现跨平台终端操作
- 使用 hecs 实现 ECS 架构
- 实现完整的战斗系统
- 设计和实现地牢生成
- 添加更多敌人类型和 AI 行为
- 实现物品发现和识别系统
- 创建多个地牢关卡
- 添加角色职业和能力
- 实现保存/加载功能
- 添加更多物品和装备类型
- 平衡游戏机制
- 创建完全可玩的演示版本
如果您遇到任何问题或对项目有疑问,请在 GitHub 仓库中提交 issue。
终端像素地牢 - 一个基于 Rust 的终端 Roguelike 游戏,灵感来自 Shattered Pixel Dungeon