ManaPetWorld

ManaPetWorld 是一个用 C++20、raylib 和 pugixml 编写的 2D 冒险 / 宠物战斗游戏原型。项目直接读取 Tiled 地图、实体预设、任务预设、音效、音乐、字体和 UI 贴图等本地资源,启动后从 Tulimshar 地区开始探索。

ManaPetWorld

项目内容

  • 探索:加载 assets/maps 下的 TMX 地图与世界连接信息,支持城镇、洞穴、船只、沙漠等区域切换。
  • 交互:NPC 对话、宝箱、传送点、商店、任务目标和脚本化事件。
  • 宠物:初始宠物选择、野外宠物遭遇、捕捉、队伍 / 仓库、宠物图鉴和战斗。
  • 战斗:回合制战斗界面,支持技能、恢复道具、捕捉道具和逃跑。
  • 存档:进度保存到项目根目录的 savegame.txt
  • 内容审计:内置 --audit-world 模式,用于检查地图、传送、小地图和任务目标覆盖情况。

Combat

环境要求

必需工具:

  • CMake 3.20+
  • 支持 C++20 的编译器
  • pkg-config / pkgconf
  • raylib
  • pugixml

Linux 上推荐直接安装系统依赖。以 Arch Linux 为例:

sudo pacman -S cmake pkgconf gcc raylib pugixml

Debian / Ubuntu 系发行版的包名可能随版本不同而不同,通常需要安装:

sudo apt install cmake pkg-config g++ libraylib-dev libpugixml-dev

仓库中也包含 vcpkg.json,声明了 raylibpugixml 依赖;如果你使用 vcpkg,请确保 CMake 能通过 pkg-config 找到对应库。

快速启动

在项目根目录运行:

./run.sh

这个脚本会执行三件事:

  1. 使用 CMake 配置 build/ 目录。
  2. 编译 mana_pet_world 可执行文件。
  3. 运行 build/mana_pet_world,并把项目根目录传给程序,让它能找到 assets/

手动构建和运行

如果你不想使用脚本,可以手动执行:

cmake -S . -B build
cmake --build build --target mana_pet_world
./build/mana_pet_world .

程序会从第一个非 - 开头的参数推断项目根目录;没有传参时,会尝试从当前目录及上级目录中查找 assets/maps/tonori/tulimshar/tulimshar.tmx

内容审计

检查地图、传送、小地图和任务目标覆盖情况:

./build/mana_pet_world --audit-world .

也可以通过启动脚本转发参数:

./run.sh --audit-world

审计输出会列出地图数量、出生点、传送数量、缺失传送、小地图覆盖和任务目标地图覆盖等信息。这个命令适合在修改 TMX 地图、传送对象、任务目标或小地图资源后运行。

操作键位

场景 操作
移动 W A S D
奔跑 Shift
对话 / 交互 / 确认入口 E
暂停 / 返回 EscB
世界地图 M
任务日志 L
背包 / 队伍 I
背包页面切换 Tab
道具分类切换 Q / E
宠物图鉴 P
观察模式 O
坐标调试 F3
保存 F5
读取存档 F9
召唤 / 收回首发宠物 R
投掷捕捉符 F
战斗选择 1-4、方向键或鼠标
战斗捕捉道具 C
战斗逃跑 Esc

目录结构

.
├── CMakeLists.txt          # CMake 构建配置
├── run.sh                  # 一键配置、编译并启动
├── vcpkg.json              # vcpkg 依赖声明
├── src/
│   ├── app/                # 主程序、运行时状态、渲染和输入循环
│   ├── assets/             # 资源目录解析、图标、动画、音乐和音效索引
│   ├── battle/             # 战斗状态、布局和战斗界面
│   ├── content/            # 内置道具等游戏内容
│   ├── core/               # 宠物、元素、成长和核心数据模型
│   ├── dialogue/           # 对话脚本与对话效果
│   ├── quest/              # 任务定义和任务进度
│   ├── save/               # 存档读写
│   ├── ui/                 # 背包等 UI 模型和视觉辅助
│   └── world/              # TMX 地图、世界索引、传送和野外生成
└── assets/
    ├── maps/               # Tiled TMX 地图与 world 文件
    ├── tilesets/           # Tiled tileset 定义
    ├── presets/            # 实体、任务、物品、调色板等预设
    ├── scripts/            # 地图 / NPC 交互脚本
    ├── sprites/            # 玩家、NPC、怪物、装备等精灵图
    ├── ui/                 # UI 贴图
    ├── minimap/            # 小地图资源
    ├── battle/             # 战斗相关资源
    ├── music/              # 背景音乐
    ├── sounds/             # 音效
    ├── fonts/              # 字体
    └── press/              # README 和启动界面用图

开发提示

  • 修改 C++ 后运行 cmake --build build --target mana_pet_world 重新编译。
  • 修改地图、传送、小地图或任务后运行 ./build/mana_pet_world --audit-world . 做内容检查。
  • 资源路径大多相对项目根目录解析;从其他目录启动时,建议显式传入项目根目录。
  • 存档文件是 savegame.txt,位于项目根目录。需要重新开始时,可以在游戏标题界面选择新游戏覆盖存档。

常见问题

CMake 找不到 raylib 或 pugixml

确认 pkg-config 能找到依赖:

pkg-config --modversion raylib
pkg-config --modversion pugixml

如果命令失败,说明依赖没有安装,或者 pkg-config 搜索路径没有包含对应 .pc 文件。

启动后资源缺失或地图加载失败

请从项目根目录运行 ./run.sh,或手动运行时传入项目根目录:

./build/mana_pet_world /path/to/ManaPetWorld

程序需要通过根目录访问 assets/ 下的地图、贴图、字体、音乐和预设文件。

想清理构建产物

删除 build/ 后重新配置即可:

rm -rf build
cmake -S . -B build
S
Description
No description provided
Readme 55 MiB
Languages
C++ 83.2%
GDScript 16%
CMake 0.6%
Batchfile 0.2%