独立游戏和小型 2D 游戏项目在开发过程中,常需要同时处理实体管理、资源加载、地图构建、脚本逻辑、碰撞检测和调试观察等问题。传统从零编写游戏逻辑容易造成代码耦合、扩展困难,也不利于教学和后续功能迭代。本项目面向轻量级游戏开发与游戏引擎学习场景,设计并实现一个基于 ECS 架构的 C++ 游戏引擎,用于支撑瓦片地图、角色交互、剧情对话和运行时调试等功能。
点击空白处退出提示
独立游戏和小型 2D 游戏项目在开发过程中,常需要同时处理实体管理、资源加载、地图构建、脚本逻辑、碰撞检测和调试观察等问题。传统从零编写游戏逻辑容易造成代码耦合、扩展困难,也不利于教学和后续功能迭代。本项目面向轻量级游戏开发与游戏引擎学习场景,设计并实现一个基于 ECS 架构的 C++ 游戏引擎,用于支撑瓦片地图、角色交互、剧情对话和运行时调试等功能。
项目实现了一个轻量级 2D 游戏引擎框架,核心功能包括实体组件系统、资源管理、Lua 脚本绑定、地图加载、精灵渲染、物理更新、碰撞检测、音频播放和调试界面。引擎通过 Registry 管理实体与组件,通过 SparseSet 提供高效的组件存储和遍历;通过 ResourceManager 对纹理资源进行 ID 化管理;通过 Lua 脚本驱动场景创建、玩家控制、NPC 对话和剧情分支;通过 raylib 完成窗口、渲染、输入和音频能力,并使用 Dear ImGui 提供运行时实体检视功能。
本人负责项目整体架构设计与核心模块实现,包括 C++20 ECS 核心、Entity 句柄与版本号机制、SparseSet 组件池、Registry 查询接口、资源管理器、Lua 绑定层、渲染系统、物理系统、碰撞系统、输入系统、音频系统和调试 UI。项目采用 CMake 构建,集成 raylib、Lua、sol2、Dear ImGui 等技术。实现上使用最小组件池驱动的 View 查询提升遍历效率,使用空间哈希与 AABB 完成碰撞检测,使用 Lua 脚本加载 Tiled 地图并声明 NPC、剧情和交互逻辑,使引擎核心机制与具体游戏内容解耦。




评论