Skip to content

H-Chris233/Terminal-Pixel-Dungeon

Repository files navigation

终端像素地牢(Terminal Pixel Dungeon)

一款基于终端的 Roguelike 地牢爬行游戏,灵感来自 Shattered Pixel Dungeon,使用 Rust 和 ECS(实体组件系统)架构构建。游戏完全在终端中运行,具备经典 Roguelike 玩法,包括回合制战斗、物品收集和地牢探索。

目录

特性

  • 基于终端的界面:使用 ratatui 渲染,直接在终端中游玩
  • ECS 架构:实体-组件-系统设计,灵活且易维护的游戏逻辑
  • Roguelike 元素:随机地牢生成、永久死亡和具有挑战性的敌人
  • 回合制战斗:具有能量管理的策略性战斗系统
  • 物品系统:收集和使用各种物品、武器和护甲
  • 视野系统:高级视线系统用于探索
  • AI 系统:具有不同行为的敌人 AI(激进、被动等)
  • 可扩展设计:易于添加新系统、组件和实体

架构

游戏遵循 ECS(实体-组件-系统)模式:

组件(Components)

组件是表示实体属性的纯数据结构:

  • Position:x、y、z 坐标
  • Actor:包含名称和阵营
  • Renderable:视觉属性,如符号和颜色
  • Stats:生命值、攻击、防御等
  • Inventory:物品管理
  • Viewshed:视野系统
  • Energy:基于回合的移动系统
  • AI:敌人行为
  • Effects:激活的状态效果
  • Tile:地形属性

实体(Entities)

实体是组件的集合,表示游戏对象,如:

  • 玩家角色
  • 敌人(哥布林等)
  • 物品(药水、武器等)
  • 地牢瓦片(墙壁、地板、楼梯)

系统(Systems)

系统包含游戏逻辑,操作具有特定组件组合的实体:

  • MovementSystem:处理实体移动和碰撞
  • AISystem:处理敌人 AI 行为
  • CombatSystem:处理战斗交互
  • FOVSystem:计算实体的视野
  • EffectSystem:管理激活的效果和状态条件
  • EnergySystem:基于能量管理回合调度
  • InventorySystem:处理物品管理
  • RenderingSystem:为渲染准备数据
  • InputSystem:处理玩家输入
  • TimeSystem:管理游戏时间进程
  • DungeonSystem:管理地牢生成和关卡管理

有关能量驱动的回合调度器、阶段顺序和扩展点的详细说明,请参阅 docs/turn_system.md

安装

前置要求

  • Rust(最新稳定版本)
  • Git
  • 支持 UTF-8 字符的终端

从源码构建

  1. 克隆仓库:
git clone https://github.com/your-username/terminal-pixel-dungeon.git
cd terminal-pixel-dungeon
  1. 构建项目:
cargo build --release
  1. 运行游戏:
cargo run

使用

游戏目前正在开发中,尚未完全可玩。您可以探索 ECS 架构并参与开发过程。要运行当前版本:

cargo run --release

游戏玩法

核心机制

  • 回合制移动:每个动作根据您的能量水平消耗时间
  • 视野:仅渲染可见的瓦片,营造氛围和策略
  • 物品管理:在您的库存中收集、使用和管理各种物品
  • 战斗系统:具有攻击、防御和准确度机制的策略性回合制战斗
  • 敌人 AI:具有独特行为和策略的不同敌人类型
  • 地牢推进:探索难度递增的多个关卡

角色成长

  • 获得经验并升级
  • 随时间改善属性
  • 深入地牢时发现更好的装备

操作控制

游戏使用 vi 键和数字键盘进行移动:

按键 动作
k 向北移动
j 向南移动
h 向西移动
l 向东移动
y7 向西北移动
u9 向东北移动
b1 向西南移动
n3 向东南移动
. 等待/跳过回合
> 下楼梯
< 上楼梯
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 和模块化架构

项目结合了 ECS(实体-组件-系统)架构和模块化 crate 结构:

  • ECS 实现:基于 hecs 构建,实现灵活的游戏实体管理
  • 模块化设计:为不同的游戏系统(战斗、地牢、英雄等)提供独立的 crate
  • 核心集成:中央 core 模块协调 ECS 和模块化系统
  • 优势
    • 解耦的游戏逻辑
    • 灵活的实体组合
    • 高效的系统执行
    • 清晰的模块边界
    • 易于测试和维护

渲染

游戏使用 ratatui 进行终端渲染,提供:

  • 响应式终端 UI
  • 可自定义的布局
  • 颜色和样式支持
  • 基于小部件的渲染

输入处理

输入通过 crossterm crate 管理,提供:

  • 跨平台终端支持
  • 实时输入检测
  • 基于事件的输入处理

贡献

我们欢迎为终端像素地牢做出贡献!以下是您可以提供帮助的方式:

  1. Fork 仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature
  3. 进行更改
  4. 确保您的代码遵循项目的风格和约定
  5. 根据需要添加或更新测试
  6. 提交更改(git commit -m '添加惊人的功能'
  7. 推送到分支(git push origin feature/amazing-feature
  8. 打开 Pull Request

开发指南

  • 遵循 Rust 最佳实践和惯用法
  • 使用 rustfmt 格式化您的代码
  • 编写有意义的提交消息
  • 为新功能添加文档
  • 为新功能编写测试
  • 在提交之前确保所有测试通过

需要贡献的领域

  • 游戏机制:实现缺失的游戏功能
  • 地牢生成:创建有趣且多样的地牢布局
  • 平衡:调整属性、物品和敌人难度
  • 艺术和文本:描述、风味文本和游戏传说
  • 错误修复:识别和解决问题
  • 性能:优化系统以获得更好的性能
  • 功能:添加新物品、能力和内容

许可证

本项目根据 LICENSE 文件中的条款获得许可。

致谢

路线图

  • 实现完整的战斗系统
  • 设计和实现地牢生成
  • 添加更多敌人类型和 AI 行为
  • 实现物品发现和识别系统
  • 创建多个地牢关卡
  • 添加角色职业和能力
  • 实现保存/加载功能
  • 添加更多物品和装备类型
  • 平衡游戏机制
  • 创建完全可玩的演示版本

支持

如果您遇到任何问题或对项目有疑问,请在 GitHub 仓库中提交 issue。


终端像素地牢 - 一个基于 Rust 的终端 Roguelike 游戏,灵感来自 Shattered Pixel Dungeon

About

Terminal edition for Shattered pixel dungeon!!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages