Files
Loke/README.md
T

243 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ManaPetWorld
https://git.qihuanye.cn/qihuanye/Loke.git *代码仓库*
ManaPetWorld 是一个用 C++20、raylib 和 pugixml 编写的 2D 冒险 / 宠物战斗游戏原型。项目直接读取 Tiled 地图、实体预设、任务预设、音效、音乐、字体和 UI 贴图等本地资源,启动后从 Tulimshar 地区开始探索。
![ManaPetWorld](assets/press/readme/header.png)
## 项目内容
- 探索:加载 `assets/maps` 下的 TMX 地图与世界连接信息,支持城镇、洞穴、船只、沙漠等区域切换。
- 交互:NPC 对话、宝箱、传送点、商店、任务目标和脚本化事件。
- 宠物:初始宠物选择、野外宠物遭遇、捕捉、队伍 / 仓库、宠物图鉴和战斗。
- 战斗:回合制战斗界面,支持技能、恢复道具、捕捉道具和逃跑。
- 存档:进度保存到项目根目录的 `savegame.txt`
- 内容审计:内置 `--audit-world` 模式,用于检查地图、传送、小地图和任务目标覆盖情况。
## 环境要求
必需工具:
- CMake 3.20+
- 支持 C++20 的编译器
- pkg-config / pkgconf
- raylib
- pugixml
Linux 上推荐直接安装系统依赖。以 Arch Linux 为例:
```bash
sudo pacman -S cmake pkgconf gcc raylib pugixml
```
Debian / Ubuntu 系发行版的包名可能随版本不同而不同,通常需要安装:
```bash
sudo apt install cmake pkg-config g++ libraylib-dev libpugixml-dev
```
仓库中也包含 `vcpkg.json`,声明了 `raylib``pugixml` 依赖;如果你使用 vcpkg,请确保 CMake 能通过 pkg-config 找到对应库。
### Windows 构建和运行
下面给出两种 Windows 运行方式:**PowerShell + VS Code** 和 **Visual Studio 2022**。两种方式都使用 vcpkg 安装依赖。当前 CMake 配置通过 `pkg-config` 查找 `raylib``pugixml`,所以除了游戏依赖本身,还需要安装 `pkgconf`
先准备通用依赖。下面假设 vcpkg 安装在 `C:\src\vcpkg`
```powershell
git clone https://github.com/microsoft/vcpkg C:\src\vcpkg
C:\src\vcpkg\bootstrap-vcpkg.bat
C:\src\vcpkg\vcpkg.exe install raylib pugixml pkgconf --triplet x64-windows
```
#### 方式一:PowerShell + VS Code
1. 安装 Visual Studio Code。
2. 安装 VS Code 扩展:**C/C++** 和 **CMake Tools**
3. 安装 Visual Studio 2022 或 Build Tools for Visual Studio 2022,并勾选 **Desktop development with C++** 工作负载。
4. 用 VS Code 打开项目根目录,在 VS Code 终端中选择 PowerShell,然后运行:
```powershell
$env:VCPKG_ROOT = "C:\src\vcpkg"
$env:PKG_CONFIG_PATH = "$env:VCPKG_ROOT\installed\x64-windows\lib\pkgconfig;$env:VCPKG_ROOT\installed\x64-windows\share\pkgconfig"
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" `
-DPKG_CONFIG_EXECUTABLE="$env:VCPKG_ROOT\installed\x64-windows\tools\pkgconf\pkgconf.exe"
cmake --build build --config Release --target mana_pet_world
```
5. 从项目根目录启动游戏,并把 `.` 作为资源根目录传给程序:
```powershell
.\build\Release\mana_pet_world.exe .
```
#### 方式二:Visual Studio 2022
1. 安装 Visual Studio 2022,并勾选 **Desktop development with C++** 和 CMake 支持。
2. 双击项目根目录下的 `setup_vs2022.bat`。脚本会安装 vcpkg 依赖、生成 `build\vs2022\ManaPetWorld.sln`、编译 `mana_pet_world`,然后打开 Visual Studio。
3. 在 Visual Studio 中点击运行按钮即可启动游戏。CMake 已经把 `mana_pet_world` 设为启动项目,并把调试工作目录和启动参数设置为项目根目录。
如果你想手动执行,也可以打开 **Developer PowerShell for VS 2022**,进入项目根目录,运行:
```powershell
$env:VCPKG_ROOT = "C:\src\vcpkg"
$env:PKG_CONFIG_PATH = "$env:VCPKG_ROOT\installed\x64-windows\lib\pkgconfig;$env:VCPKG_ROOT\installed\x64-windows\share\pkgconfig"
cmake -S . -B build\vs2022 -G "Visual Studio 17 2022" -A x64 `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" `
-DPKG_CONFIG_EXECUTABLE="$env:VCPKG_ROOT\installed\x64-windows\tools\pkgconf\pkgconf.exe"
cmake --build build\vs2022 --config Release --target mana_pet_world
```
然后打开 `build\vs2022\ManaPetWorld.sln`,点击运行按钮;或者直接从命令行运行:
```powershell
.\build\vs2022\Release\mana_pet_world.exe .
```
如果 CMake 报告找不到 `raylib``pugixml``pkg-config`,请先确认上面的 `VCPKG_ROOT``PKG_CONFIG_PATH``PKG_CONFIG_EXECUTABLE` 路径与本机 vcpkg 安装位置一致。
## 快速启动
在项目根目录运行:
```bash
./run.sh
```
这个脚本会执行三件事:
1. 使用 CMake 配置 `build/` 目录。
2. 编译 `mana_pet_world` 可执行文件。
3. 运行 `build/mana_pet_world`,并把项目根目录传给程序,让它能找到 `assets/`
## 手动构建和运行
如果你不想使用脚本,可以手动执行:
```bash
cmake -S . -B build
cmake --build build --target mana_pet_world
./build/mana_pet_world .
```
程序会从第一个非 `-` 开头的参数推断项目根目录;没有传参时,会尝试从当前目录及上级目录中查找 `assets/maps/tonori/tulimshar/tulimshar.tmx`
## 内容审计
检查地图、传送、小地图和任务目标覆盖情况:
```bash
./build/mana_pet_world --audit-world .
```
也可以通过启动脚本转发参数:
```bash
./run.sh --audit-world
```
审计输出会列出地图数量、出生点、传送数量、缺失传送、小地图覆盖和任务目标地图覆盖等信息。这个命令适合在修改 TMX 地图、传送对象、任务目标或小地图资源后运行。
## 操作键位
| 场景 | 操作 |
| --- | --- |
| 移动 | `W` `A` `S` `D` |
| 奔跑 | `Shift` |
| 对话 / 交互 / 确认入口 | `E` |
| 暂停 / 返回 | `Esc``B` |
| 世界地图 | `M` |
| 任务日志 | `L` |
| 背包 / 队伍 | `I` |
| 背包页面切换 | `Tab` |
| 道具分类切换 | `Q` / `E` |
| 宠物图鉴 | `P` |
| 观察模式 | `O` |
| 坐标调试 | `F3` |
| 保存 | `F5` |
| 读取存档 | `F9` |
| 召唤 / 收回首发宠物 | `R` |
| 投掷捕捉符 | `F` |
| 战斗选择 | `1`-`4`、方向键或鼠标 |
| 战斗捕捉道具 | `C` |
| 战斗逃跑 | `Esc` |
## 目录结构
```text
.
├── 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` 能找到依赖:
```bash
pkg-config --modversion raylib
pkg-config --modversion pugixml
```
如果命令失败,说明依赖没有安装,或者 pkg-config 搜索路径没有包含对应 `.pc` 文件。
### 启动后资源缺失或地图加载失败
请从项目根目录运行 `./run.sh`,或手动运行时传入项目根目录:
```bash
./build/mana_pet_world /path/to/ManaPetWorld
```
程序需要通过根目录访问 `assets/` 下的地图、贴图、字体、音乐和预设文件。
### 想清理构建产物
删除 `build/` 后重新配置即可:
```bash
rm -rf build
cmake -S . -B build
```