一款受 《元气骑士》 启发的射击游戏,使用 C/C++ 和 SDL2 开发。
⚠️ 声明:本项目为个人学习与兴趣开发的非商业同人作品。游戏概念、角色、美术资源等版权归原作者(凉屋游戏 ChillyRoom Inc.)所有。
Soul Knight 是一款快节奏的 Roguelike 地牢射击游戏。玩家需要在一系列随机生成的房间中战斗,击败一波波敌人,收集各种武器。本项目是从零开始,使用 C/C++ 和 SDL2 多媒体库实现的粉丝向复刻。
在游戏中,你将操控一名骑士深入危险的地牢。每个房间都有新的挑战——消灭敌人、躲避陷阱、打开宝箱。游戏采用类似“双摇杆”的射击手感,目标是清空所有敌人、打通房间、尽可能存活更久。
《元气骑士》(Soul Knight)是一款像素风格 Roguelike 射击游戏,由凉屋游戏开发,于 2017 年 2 月 17 日发布。游戏融合动作与生存要素,玩家可以在随机生成的地牢中探索、收集奇葩武器,使用双摇杆操作与独特怪物战斗。
本同人项目旨在还原原版游戏的核心玩法,同时作为学习游戏开发基础的实践项目。
- 双摇杆式射击 —— 键盘移动(8 方向),鼠标瞄准射击
- 房间式地牢系统 —— 多个相连房间,必须清空当前房间敌人才能继续前进
- 波次战斗 —— 每个房间的敌人分波次出现,击败全部敌人后房门解锁
- 敌人 AI —— 多种敌人类型,具有不同的移动和攻击方式
- 武器系统 —— 发射子弹、切换武器、管理弹药
- UI 系统 —— 生命值显示、得分追踪、交互菜单
- 音频集成 —— 射击、受伤等音效
- 视觉效果 —— 动画精灵、粒子效果、屏幕转场
| 操作 | 按键 |
|---|---|
| 移动 | W/A/S/D 或 方向键 |
| 瞄准 & 射击 | 鼠标 |
| 切换武器 | 数字键 1、2 |
| 技能 | E |
| 暂停 | ESC |
- 语言:C++(主)、C(SDL 绑定)
- 图形/音频:SDL2(Simple DirectMedia Layer)
- 构建系统:CMake / Visual Studio
- 目标平台:Windows(主要)
SoulKnight/
├── SDL2/ # SDL2 库头文件与二进制文件
├── res/ # 游戏资源(图片、音效、字体等)
├── Engine.cpp/h # 核心游戏循环与窗口管理
├── Player.cpp/h # 玩家逻辑、移动、射击
├── Enemy.cpp/h # 敌人 AI 行为
├── Bullet.cpp/h # 子弹管理
├── Level.cpp/h # 关卡生成与房间管理
├── Room.cpp/h # 单个房间逻辑
├── Entity.cpp/h # 实体基类
├── UIManager.cpp/h # UI 绘制与 HUD
├── PageManager.cpp/h # 菜单与场景管理
├── ResourceManager.cpp/h# 资源加载与缓存
├── CMakeLists.txt # CMake 构建配置
├── SoulKnight.vcxproj # Visual Studio 项目文件
└── ProjectStrcture.txt # 项目结构参考笔记
- Windows(主要支持平台)
- Visual Studio(建议 2019 或更高版本),带 C++ 开发工具
- CMake(可选,用于跨平台构建)
-
克隆仓库
git clone https://github.com/lihenger/SoulKnight.git cd SoulKnight -
打开项目
-
双击 SoulKnight.vcxproj 在 Visual Studio 中打开
-
编译运行
-
按 Ctrl+Shift+B 编译
-
按 F5 调试运行,或 Ctrl+F5 直接运行
-
ℹ️ 项目已自带 SDL2/ 目录下的 SDL2 库,通常无需额外安装。
-
使用 CMake 构建
mkdir build cd build cmake .. cmake --build . 运行游戏 编译成功后,运行生成的可执行文件,即可打开游戏窗口进入主菜单。
如果你想手动链接 SDL2 或使用其他环境,需要以下依赖:
-
SDL2 开发库 – 从 libsdl.org 下载
-
SDL2_image – 加载图片/精灵
-
SDL2_mixer – 播放音频
-
请确保在构建配置或 CMake 中正确设置库路径。
-
门开关存在 Bug —— 有时无法正确解锁
-
游戏启动后立即开始射击 —— 可能与预期行为不符
-
敌人生成节奏可能需要平衡性调整
-
这些问题在提交历史中已被提及。欢迎提交修复!
-
报告 Bug – 提交 Issue,描述问题、复现步骤及预期行为
-
修复已知问题 – 解决上述任意一个遗留 Bug
-
增强游戏玩法 – 添加新武器、敌人类型或房间变化
-
优化代码质量 – 重构、添加注释或性能优化
-
完善文档 – 帮助更多开发者理解项目
-
Fork 本仓库并创建特性分支
-
保持提交聚焦且描述清晰
-
提交前测试你的更改
-
遵循现有代码风格(统一命名、格式等)
-
Lazy Foo' SDL2 教程 – 全面的 SDL2 入门
-
SDL2 官方 Wiki
-
游戏编程模式 – 游戏开发中的设计模式
-
构建游戏引擎主循环
-
管理游戏状态(菜单、游戏、暂停)
-
处理键盘和鼠标输入
-
实现实体组件关系
-
搭建房间/地牢系统
-
代码 可用于学习用途
-
res/ 中的美术资源 可能来源于或受版权材料启发
-
原《元气骑士》游戏 版权归凉屋游戏(ChillyRoom Inc.)所有
-
凉屋游戏 – 创造了《元气骑士》原作,是本项目的灵感来源
-
SDL2 社区 – 提供了优秀的多媒体库
-
所有贡献者 – 帮助改进本项目