Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Soul Knight(元气骑士·同人游戏)

一款受 《元气骑士》 启发的射击游戏,使用 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(可选,用于跨平台构建)

使用 Visual Studio 构建

  1. 克隆仓库

    git clone https://github.com/lihenger/SoulKnight.git
    cd SoulKnight
  2. 打开项目

  • 双击 SoulKnight.vcxproj 在 Visual Studio 中打开

  • 编译运行

  • 按 Ctrl+Shift+B 编译

  • 按 F5 调试运行,或 Ctrl+F5 直接运行

  • ℹ️ 项目已自带 SDL2/ 目录下的 SDL2 库,通常无需额外安装。

  1. 使用 CMake 构建

    mkdir build
    cd build
    cmake ..
    cmake --build .
    运行游戏
    编译成功后,运行生成的可执行文件,即可打开游戏窗口进入主菜单。

⚙️ 源码构建(进阶)

如果你想手动链接 SDL2 或使用其他环境,需要以下依赖:

  • SDL2 开发库 – 从 libsdl.org 下载

  • SDL2_image – 加载图片/精灵

  • SDL2_mixer – 播放音频

  • 请确保在构建配置或 CMake 中正确设置库路径。

🧪 当前状态与已知问题

项目处于可玩状态,核心玩法已实现。最新提交(2025年11月12日)标记为 最终版本。

已知限制 / 待修复问题:

  • 门开关存在 Bug —— 有时无法正确解锁

  • 游戏启动后立即开始射击 —— 可能与预期行为不符

  • 敌人生成节奏可能需要平衡性调整

  • 这些问题在提交历史中已被提及。欢迎提交修复!

🤝 贡献指南

本项目偏向学习用途,但依然欢迎贡献!你可以通过以下方式帮助改进:

  • 报告 Bug – 提交 Issue,描述问题、复现步骤及预期行为

  • 修复已知问题 – 解决上述任意一个遗留 Bug

  • 增强游戏玩法 – 添加新武器、敌人类型或房间变化

  • 优化代码质量 – 重构、添加注释或性能优化

  • 完善文档 – 帮助更多开发者理解项目

贡献规范:

  • Fork 本仓库并创建特性分支

  • 保持提交聚焦且描述清晰

  • 提交前测试你的更改

  • 遵循现有代码风格(统一命名、格式等)

📚 学习资源

如果你是第一次接触 C++ 和 SDL2 游戏开发,以下资源可能对你有帮助:

  • Lazy Foo' SDL2 教程 – 全面的 SDL2 入门

  • SDL2 官方 Wiki

  • 游戏编程模式 – 游戏开发中的设计模式

本项目可以作为以下方面的参考:

  • 构建游戏引擎主循环

  • 管理游戏状态(菜单、游戏、暂停)

  • 处理键盘和鼠标输入

  • 实现实体组件关系

  • 搭建房间/地牢系统

📄 许可证

本项目仅供学习参考,源代码开放。但请注意:

  • 代码 可用于学习用途

  • res/ 中的美术资源 可能来源于或受版权材料启发

  • 原《元气骑士》游戏 版权归凉屋游戏(ChillyRoom Inc.)所有

🙏 致谢

  • 凉屋游戏 – 创造了《元气骑士》原作,是本项目的灵感来源

  • SDL2 社区 – 提供了优秀的多媒体库

  • 所有贡献者 – 帮助改进本项目

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages