本仓库包含两个相对独立的部分:Unreal Engine 5 的 2D 平台游戏「Crusty Pirate」源码与配置,以及一个基于 Qt 的登录启动器(SQLite 账号校验后尝试启动游戏可执行文件)。关卡、美术与蓝图资源未纳入本仓库,仅包含 C++ 与工程配置片段。
| 路径 | 说明 |
|---|---|
source_code_of_main/ |
Unreal 工程:CrustyPirateOriginal.uproject、Source/CrustyPirate/ 游戏模块、Config/ 默认配置 |
source_code_of_gamelauncher/ |
Qt 项目(DB.pro)、登录界面与 SQLite 逻辑 |
- 引擎版本:
CrustyPirateOriginal.uproject中EngineAssociation为 5.4 - 插件:启用 PaperZD(2D 动画)、编辑器侧 ModelingToolsEditorMode
- 模块依赖(
CrustyPirate.Build.cs):Core、CoreUObject、Engine、InputCore、EnhancedInput、Paper2D等
APlayerCharacter:APaperZDCharacter,弹簧臂相机、攻击碰撞盒、Enhanced Input(移动、跳跃、攻击、退出)。与UCrustyPirateGameInstance同步血量、钻石、二段跳解锁;死亡后延时调用RestartGame()。AEnemy:检测球发现玩家后沿 X 轴追击,进入攻击距离后播放攻击动画;可对玩家造成伤害;头顶UTextRenderComponent显示 HP。ACollectableItem:可拾取类型包括钻石、生命药水(+25 HP)、二段跳升级。ALevelExit:玩家进入后播放门动画与音效,延时后通过GameInstance::ChangeLevel打开Level_N关卡(命名约定Level_1、Level_2…)。UPlayerHUD:UMG 绑定控件,显示 HP、钻石数、关卡索引。UCrustyPirateGameInstance:跨关卡持久化 PlayerHP、CollectedDiamondCount、IsDoubleJumpUnlocked、CurrentLevelIndex;RestartGame()重置并回到Level_1。
- 安装 Unreal Engine 5.4,并确保已安装/启用 PaperZD 插件(与
.uproject中一致)。 - 将本仓库中的
source_code_of_main作为完整 UE 工程目录使用,或把其中内容合并到你本地的完整工程(本仓库不含Content/下的关卡与蓝图,仅有配置中的引用,例如默认地图Level_1、GameMode / GameInstance 蓝图类路径)。 - 双击
CrustyPirateOriginal.uproject生成解决方案后在 Visual Studio 中编译,或用编辑器直接编译 C++。
默认配置摘录(Config/DefaultEngine.ini):启动地图为 /Game/Levels/Level_1,默认 GameMode 与 GameInstance 为蓝图类(路径见该文件)。
- 启动时连接 SQLite 数据库文件:
<可执行文件目录>/database.db(见login.cpp中QCoreApplication::applicationDirPath())。 - 首次无数据时自动建表
login,并插入默认用户user1/user123。 - 登录成功后:以分离进程方式启动同目录下的
CrustyPirate.exe(路径写死在login.cpp,可按实际发布文件名修改),弹出Dialog对话框,并隐藏登录窗口。
- 使用 Qt Creator 打开
source_code_of_gamelauncher/DB.pro。 - 工程使用模块:
core、gui、sql、widgets,以及network(DB.pro中声明)。 - 注意:
DB.pro的SOURCES中列出了register.cpp,但当前仓库中仅有空的register.h,没有register.cpp。若编译报错,需在工程中补全register.cpp或从.pro中移除对应条目。
dialog.cpp中一处按钮槽函数调用了sshpass与固定 SSH 命令,属于示例或开发环境遗留;在未安装sshpass或非 Linux 环境下可能无法按预期工作,使用前请按需求修改或删除。- 子目录内另有
source_code_of_gamelauncher/README.md,其中默认账号描述与当前login.cpp中的user1/user123不一致,以源码为准。
source_code_of_gamelauncher/DB.pro.user*:Qt Creator 用户本地配置,通常不应提交或可在不同机器上忽略。login.cpp中含#include <bits/stdc++.h>:主要为 GCC/MinGW 习惯用法;若使用 MSVC,可能需要改为标准头文件或调整工具链。
- 将 UE 完整工程(含
Content/、.sln生成结果等)与 启动器发布目录(CrustyPirate.exe与database.db同目录)的约定写进组内文档,避免登录成功却找不到游戏主程序。 - 生产环境应对 SQL 使用参数化查询,避免字符串拼接带来的安全风险。