欢迎来到 Ryao's Space
写点东西
最新博文
- Action System(行动系统)
Action System(行动系统)
概述
Action System 是本项目的核心技能/能力框架,类似于 UE 官方的 Gameplay Ability System (GAS),但更加轻量且易于理解。它负责管理角色的所有行动(技能、Buff/Debuff、被动效果等)以及属性系统(生命值、攻击力等)。
核心类
URogueAction
文件:
Source/ActionRoguelike/ActionSystem/RogueAction.h/.cppAction 是所有行动的基类,继承自
UObject。每个 Action 代表一个可执行的行动,如攻击、冲刺、Sprint 等。 - ActionRoguelike 项目入门指南
ActionRoguelike 项目入门指南
项目简介
ActionRoguelike 是一个基于 Unreal Engine 的 C++ 第三人称动作 Roguelike 游戏项目。项目展示了从自定义技能系统、AI 行为、网络复制到性能优化等多种 UE 开发技术。
快速导航
文档 内容 适合阅读时机 01-ActionSystem 技能/属性框架 最先阅读 - 项目核心 02-AI AI 角色与行为树 了解 Action System 后 03-Player 玩家角色与输入 了解 Action System 后 04-Projectiles 弹体系统 了解 Action 和 Player 后 05-Pickups 拾取物系统 随时 06-World 世界交互物 随时 07-SaveSystem 存档系统 随时 08-Performance 性能优化 有一定基础后 09-Core 核心框架与全局工具 需要查阅时 10-Animation 动画系统 随时 11-UI UI 系统 随时 12-StateTrees State Tree 任务 有一定基础后 13-Development 开发与调试工具 需要调试时 推荐阅读顺序
如果你是刚接触这个项目的新手,建议按照以下路径阅读:
- AI 系统
AI 系统
概述
AI 系统负责管理游戏中的敌方角色(怪物),包括角色定义、AI 控制器、行为树节点以及 AI 专用的 Action。系统使用 UE 的行为树(Behavior Tree)、感知系统(AI Perception)和环境查询系统(EQS)实现智能 AI 行为。
核心类
ARogueAICharacter
文件:
Source/ActionRoguelike/AI/RogueAICharacter.h/.cpp - State Trees(状态树系统)
State Trees(状态树系统)
概述
State Trees 模块提供基于 UE State Tree 框架的 AI Director 任务,用于替代或补充行为树实现更高层次的游戏逻辑控制,如怪物选择和生成策略。
核心类
FRogueStateTreeDirectorTask
文件:
Source/ActionRoguelike/StateTrees/RogueStateTreeTasks.h/.cppState Tree 任务的基类,标记为
Hidden不直接在编辑器中显示。所有自定义 Director 任务继承此类。FRogueSTTask_SelectMonster
文件:
Source/ActionRoguelike/StateTrees/RogueStateTreeTasks.h/.cpp从 DataTable 中选择要生成的怪物的 State Tree 任务。
- UI 系统
UI 系统
概述
UI 系统提供 HUD、世界空间 Widget 和效果图标 Widget。核心设计是将世界空间 UI 统一添加到主 HUD 的 CanvasPanel 中,通过手动投影世界坐标到屏幕坐标实现位置跟踪。
核心类
ARogueHUD
文件:
Source/ActionRoguelike/UI/RogueHUD.h/.cppHUD 类,管理暂停菜单。
暂停菜单:
TogglePauseMenu()- 切换暂停菜单显示- 显示时:创建 Widget、显示鼠标、切换到 UI 输入模式
- 隐藏时:移除 Widget、隐藏鼠标、恢复游戏输入
- 仅在单机模式(
NM_Standalone)下实际暂停游戏 - Widget 添加到 Viewport 的 ZOrder=100 确保在最顶层
URogueWorldUserWidget
文件:
Source/ActionRoguelike/UI/RogueWorldUserWidget.h/.cpp - 存档系统
存档系统
概述
存档系统负责游戏状态的保存和加载,包括玩家数据(Credits、个人记录、位置)和世界 Actor 状态(宝箱开启状态等)。使用 UE 的 SaveGame 框架,通过 GameInstance Subsystem 实现跨关卡持久化。
核心类
URogueSaveGameSubsystem
文件:
Source/ActionRoguelike/SaveSystem/RogueSaveGameSubsystem.h/.cpp保存/加载的核心子系统,继承
UGameInstanceSubsystem(随 GameInstance 生命周期存在)。 - 弹体系统
弹体系统
概述
弹体系统提供了两套实现方案:传统的 Actor 弹体和实验性的数据导向弹体。Actor 弹体方案更成熟,集成了对象池、聚合 Tick 等优化;数据导向方案通过 WorldSubsystem 管理无 Actor 的轻量级弹体数据,是一种性能探索。
Actor 弹体方案
ARogueProjectile(弹体基类)
文件:
Source/ActionRoguelike/Projectiles/RogueProjectile.h/.cpp所有 Actor 弹体的抽象基类,实现
IRogueActorPoolingInterface支持对象池。组件:
- 动画系统
动画系统
概述
动画模块包含自定义动画实例、近战检测的动画通知以及轻量级的曲线动画子系统。
核心类
URogueAnimInstance
文件:
Source/ActionRoguelike/Animation/RogueAnimInstance.h/.cpp自定义动画实例基类。
特性:
- 自动获取 ActionComponent 引用
- 每帧检查
Status.StunnedTag 更新bIsStunned(供动画蓝图使用) - 提供
OnMeleeOverlap委托,近战 AnimNotify 通过此委托通知 Action
脚步音效: 重写
HandleNotify()拦截脚步动画通知(l_foot_plant/r_foot_plant),播放配置的脚步音效。 - 核心框架
核心框架
概述
核心框架包含游戏的基础架构类:GameMode、GameState、全局函数库、接口定义、共享 GameplayTag 以及各种配置/设置类。
GameMode
ARogueGameModeBase
文件:
Source/ActionRoguelike/Core/RogueGameModeBase.h/.cpp游戏模式基类,管理游戏规则、怪物生成和道具布局。
默认类配置:
- PlayerStateClass →
ARoguePlayerState - HUDClass →
ARogueHUD - GameStateClass →
ARogueGameState
怪物生成系统: 使用积分制(Credit-based)控制怪物生成难度:
- PlayerStateClass →
- 开发工具
开发工具
概述
开发工具模块提供作弊管理器和本地开发者设置,方便在开发阶段快速调试和测试。
核心类
URogueCheatManager
文件:
Source/ActionRoguelike/Development/RogueCheatManager.h/.cpp自定义作弊管理器,通过控制台命令触发。在
ARoguePlayerController中配置为CheatClass。Exec 命令:
HealSelf- 完全恢复自身生命值(ApplyAttributeChange 设置 Health 为 HealthMax)KillAll- 杀死所有指定类的 AI 角色(默认ARogueAICharacter)DeleteSaveGame- 删除指定槽位的存档文件
使用方式: 在游戏运行时打开控制台(
~键)输入命令名即可。