UE 5.8 纯蓝图项目 · 节点级技术解析 · 数据截至 2026-07-23 · By JasonYang

CultivatingImmortality_RPGgame
UE 5.8 项目技术总览

一款修仙类型的第三人称RPG,由Blueprint和C++共同构建

玩家操控修仙者可全程飞行作战:五段连击、追踪子弹、蓄力链式雷电等,要在这个残酷的修仙世界先活下去。本报告基于 943 个资产文件的离线二进制解析与 UE 编辑器实时蓝图节点读取,把整棵蓝图树拆开给你看——从输入图到状态机,从贝塞尔弹道到混沌破碎。

证据分级:UE 编辑器实时蓝图读取(节点级,含引脚连接)> 离线 uasset 二进制解析 · 全部来源见文末 K1–K12 锚点表 · 所有数字忠实转录原文(All project data and production are from JasonYang)

SCROLL

§0 · 摘要 Executive summary

943 个文件、零行 C++:一个把全部筹码押在蓝图上的飞行 RPG

《CultivatingImmortality_RPGgame》是修仙题材的第三人称飞行动作 RPG——所有移动都是飞行,所有逻辑都是蓝图节点。

项目的逻辑密度高度集中在主角 BP_Nyx 上:9 个图表、39 个变量,其中输入图 InputEventGraph 一张图就有 333 个节点,五段连击图 Attack 有 290 个节点——两张图承担了主角八成的逻辑量。表现层的体量同样可观:特效库 Content/Effect 独占 495 个文件,超过总资产 943 个文件的一半;角色资产 242 个文件中仅 Nyx 的动画就有 153 个。

核心数字说明来源
资产文件总数943Content/ 全部游戏资产,逐文件离线解析K1
主角 BP_Nyx9 图 / 39 变量父类 Character,全项目逻辑最厚的蓝图K2
InputEventGraph333 节点全部输入响应与技能触发入口K2
Attack 连击图290 节点五段连击,Combo1~Combo5 蒙太奇K2
Effect 特效库495 文件特效蓝图 21 + Niagara 34 + 贴图 243 等K6
Characters 角色资产242 文件AO_Nyx 230 + Drone 12,动画 153 个K5

阅读顺序。本报告按游戏设计逻辑组织:先框架、再主角、再运动/动画、再战斗表现、再敌人与伤害,最后资产总目录。所有节点数均来自对运行中编辑器的实时读取,所有文件数均来自对 943 个 .uasset/.umap 的离线二进制解析;两路数据均截至 2026-07-23。

口径说明。资产五类子项合计 946,与总数 943 存在 3 个文件差异,本文忠实保留原文数字、未做归一;BP_Muriel(第二角色)尚未深入读取,Config 使用传统输入系统而非 Enhanced Input。

§0.5 · 知识地图 Mind map

十章内容的可折叠思维导图

从项目框架到分析方法,整份文档的骨架可以一次展开、逐层下钻。

§1 · 项目框架 Framework

纯蓝图、发丝会飘、逐节点可读:三个定义项目性格的决策

引擎 5.8、零 C++、传统输入系统——技术选型保守而集中,复杂度全部留给蓝图与表现层。

BP

BLUEPRINT-ONLY · 纯蓝图开发

整个项目没有一行 C++,所有玩法逻辑都在蓝图图表里。

GameMode、主角、敌人、子弹、特效、UI 全部为蓝图资产。这意味着逻辑的可读单元是"图表—节点—引脚",本报告的节点级数据(333/290/140…)正是逐图统计的结果。

悬停查看详情

KP

KAWAIIPHYSICS · 发丝衣物物理

角色表现的关键插件:发丝、衣物、飘带的物理摆动。

AB_Nyx 的 AnimGraph 末端串联了 6 级 KawaiiPhysics 节点,共用 DA_Kawaii_Physics 的 LimitAngleCurveData——多组骨骼链的摆动参数集中管理。

悬停查看详情

NODE

GRAPH-LEVEL READING · 逐图逐节点

整棵蓝图树被完整展开:9 张图表、39 个变量、引脚级连接。

BP_Nyx 的 InputEventGraph 有 333 个节点、Attack 连击图 290 个节点、Drone 伤害图 140 个节点——全部节点与引脚连接逐一读取、计数并制图,没有抽样估算。

悬停查看详情

启动配置与输入映射

默认地图为 RealBiomes_TestEmpty(定向光 + 高度雾的空测试场景),游戏模式 MyGameMode(GameModeBase)。输入采用传统系统而非 Enhanced Input:

输入键位类型
Move Forward / BackwardW / S
Move Right / LeftA / D
Move Up / DownQ / E轴(飞行升降)
Turn / Look Up MouseMouseX / MouseY
Sprint 冲刺LeftShift动作
Dodge 闪避SpaceBar动作
Aim 瞄准鼠标右键动作

启用插件:KawaiiPhysics、ModelingToolsEditorMode、GameplayBehaviors、编辑器数据接口插件(实验性);EditorUIScale 未启用。项目根目录另有 Houdini 工程 HillStone.hip(山体/石头程序化模型源文件)。

§2 · 主角系统 BP_Nyx

输入一张图、连击一张图:主角逻辑的两座高峰

BP_Nyx 的九个图表里,InputEventGraph 与 Attack 两张图合计 623 个节点——剩下的七张图都是辅助。

父类:Character。9 个图表、39 个变量。是全项目逻辑最厚的蓝图。

项目技术总览 · 第二章, 2026-07-23

ContextBP_Nyx 包揽输入、连击、瞄准、雷电、相机与后处理。 Why it matters逻辑集中于单蓝图意味着任何改动都要在这 9 张图里定位——节点密度图就是这张地图。

五段连击:蒙太奇选段 + 通知帧管理状态

ComboAttackST_AnimMontage 结构体拆出 Combo1~Combo5 五段蒙太奇,按 ComboNumber 选段播放;ReadyToCombo 窗口内再次输入则续段,否则 ResetAttack 清零。攻击状态由动画通知驱动:BPAN_ComboAttack 进入攻击(IsAttacking=true、关闭朝向跟随、限速 300),BPAN_ResetAttack 退出并恢复 HoverFlySpeed。连击同时生成 EF_BP_BezierBullet 贝塞尔追踪弹与 Attack03/05 特效。

瞄准与雷电

右键 CE_AimStart 进入瞄准(相机拉近、UW_Aim 准星显示),CE_AimTrace 定时扫描敌人填入 AimTargetArray 并分配锁定目标。雷电是蓄力链式攻击:ChargeCompleted 后沿 DroneArray 在多个 Drone 间链接(分叉 _Branch / 弹射 _Bounce),UW_LightningTrace 绘制连线 UI,技能期间切换后处理材质。39 个变量按移动 / 连击 / 镜头 / 瞄准 / 雷电 / 后处理六组组织。

§3 · 运动系统 BPC_MotionComponent

两套飞行参数、一个倾斜量:运动组件只做三件事

挂在 BP_Nyx 上的 ActorComponent:27 个变量、10 个函数,管双速态飞行、Lean 倾斜与相机弹簧臂。

状态参数组
悬停HoverFlySpeed / HoverAcceleration / HoverRotationRate
冲刺SprintFlySpeed / SprintAcceleration / SprintRotationRate

双速态由 SetSprintEvent / SetAimingEvent 切换,IsAiming 时进入瞄准飞行参数。Tick 中记录前后两帧速度朝向,由 YawVelocityDifference / PitchVelocityDifference 实时算出 Lean 倾斜量,供动画蓝图驱动身体倾斜。相机弹簧臂合成图(61 节点)按 TargetSocketOffset / TargetLength / InterpSpeed 平滑插值:瞄准时拉近、冲刺时拉远。HitEvent 负责受击时打断当前运动状态。

§4 · 动画系统 AB_Nyx

四态六转移:一台没有"地面"的状态机

数据流单向而清晰——BP_Nyx / BPC 计算状态变量,AB_Nyx 每帧读取并驱动骨骼姿势。

AnimGraph 26 节点 + EventGraph 127 节点。主姿势管线:Default 状态机缓存为 LocalMotionCR_NyxHead 注视(IsLookAt 且 InRange 时混入)→ Montage Slot(连击注入点)→ CR_NyxAim 瞄准姿态(IsAim 时混入)→ 6 级 KawaiiPhysics 串联 → 输出姿势。EventGraph 由 BlueprintUpdateAnimation 驱动,其中 SetNextSection 出现 6 处——连击蒙太奇段落衔接、连击流畅度全靠它。

转移条件
Idle/Hover → StartIsSprint = true
Start → MoveLoopStart 动画剩余时间比例 < 阈值
MoveLoop → MoveEndNOT IsSprint
MoveEnd → Idle/HoverMoveEnd 剩余时间比例 < 阈值
中断回退分支 ×2IsSprint / NOT IsSprint

角色资产支撑(AO_Nyx,230 文件):骨骼网格 + 物理资产、IKRig + IKRetargeter(MagicalAnimSet 动画重定向到 Nyx 骨骼)、动画 153 个(Motion / Self / Retargeter≈100 / UseMontage 13)、混合空间 5 个、材质 15、贴图 48。

§5 · 特效与弹道 Effect

子弹只有两种:直线,和会拐三个弯的贝塞尔追踪弹

495 个文件的特效库里,真正"会动"的逻辑集中在 EF_BP_Basic 继承树的四个子类上。

EF_BP_BezierBullet 是弹道系统的技术高峰:105 节点 EventGraph + 3 函数TraceTarget(27 节点)搜索敌人填入 DroneArrayCE_BezierMoveTimelineHasEnemy 驱动,用三控制点 3SpotPosition 计算贝塞尔曲线追踪目标;无敌人时退化为直线/散射。命中后 ApplyDamage(携带 DamageType)→ 生成命中特效 → 停双时间轴 → 销毁。

子目录数量作用
Textures/243噪声、遮罩、拖尾、SubUV 序列帧、光斑
MaterialInstance/88Ribbon 拖尾、Simple、Smoke、Refraction、PostProcess
Common/56通用 Niagara 发射器/模块/材质
Niagara/34NS_* 粒子系统:Attack 27 / Enemy / Motion
Meshs/30环 Ring、螺旋 Helix、锥、样条、石头
MaterialFunction/11高斯模糊、法线推导、FlipBook、消散、POM
Curve/ · VectorFields/5 / 4曲线资产 · 湍流/涡旋矢量场

§6 · 敌人系统 BP_Drone

巡逻、挨打、爆炸、重生:无人机的完整闭环

EventGraph 76 节点管巡逻,Damage 图 140 节点管受击与死亡——死亡反馈比巡逻逻辑厚一倍。

巡逻 AI 用定时器刷新随机巡逻目标点,TraceLand 向下探测地面防止撞地。受击走 AnyDamage:记录命中方向与位置 → 扣 HPColorDamage 曲线驱动动态材质受击变色。死亡 CE_Death 是一套组合拳:爆炸特效 + BP_DroneDestroy 残骸(GeometryCollection 混沌破碎)+ BP_FieldSystem 力场冲击 + BP_CS_DroneExplosion 镜头震动,最后 CE_Reborn 在刷怪点重生完成循环。

§7 · 伤害 · 镜头 · UI

一个接口统一受击,四类通知调度表现

攻击方按技能携带 Sword / Lightning 伤害类型,BPI_Damage 统一投递,Drone 按类型走不同受击反馈。

体系数量成员
Damage/8BPI_Damage 接口、DamageType ×4(Base/Lightning/Sword/通用)、EM_DamageType 枚举、颜色曲线 ×2
AnimNotify/7连击判定帧、重置连击、动画帧生成子弹、运镜一次性设置 + 持续镜头震动、技能移动锁、技能运镜
CameraShake/4Drone 爆炸、崩山爆炸、雷电爆炸、飞行
Widget/4UW_Aim 准星(81 节点,世界→屏幕坐标 + 锁定变色)、UW_AimTarget、UW_LightningTrace、C_UW_Aim 曲线

§8 · 战斗总链路 Combat chain

把前面七章串起来:一次攻击从按键到破碎走完全程

主链路每帧运转,普攻 / 瞄准 / 雷电三条技能链在伤害处合流,受击链在 Drone 侧闭环。

组成关系上,MyGameMode 只挂两棵子树:主角 BP_Nyx(带 BPC 运动组件、AB 动画实例、蒙太奇结构体、战斗 UI 与子弹生成)和敌人 BP_Drone(巡逻 AI、Damage 图、死亡破碎链)。战斗的全部复杂性都发生在这两棵树之间。

§9 · 资产总目录 Assets

943 个文件的分布:一半特效、四分之一角色、六分之一动画包

特效库 495、角色 242、MagicalAnimSet 商城动画包 152、核心玩法蓝图 32、场景素材 25。

核心玩法蓝图只有 32 个文件,却定义了全部规则;真正占体量的是"看起来和动起来"的资产——特效、动画、贴图。地图只有两张:默认启动的 RealBiomes_TestEmpty(定向光 + 高度雾的空场景)和动画包自带的 Showcase 演示关卡。

§10 · 附录 Appendix

这份分析是怎么做出来的

两条数据通路:离线二进制解析拿文件级事实,编辑器实时读取拿节点级事实。

工具(_AgentTools/)用途
editor_link.py编辑器实时数据通道客户端(Socket 直连,处理延迟响应)
editor_cli.py命令行调用编辑器数据接口工具
dump_bp.py导出任意蓝图的概览 + 全部图表节点 JSON
digest_nodes.py把节点 JSON 转成可读摘要
analyze_assets.py离线 .uasset 批量分析

复现注意。Git Bash 下运行需加 MSYS_NO_PATHCONV=1(否则 /Game/ 路径会被转成 Windows 路径);编辑器重启后需在项目设置中确认实时数据接口保持开启,方可继续读取蓝图节点。

已知限制。read_graph_dsl 对既有图表返回空(DSL 主要用于写入),节点级读取用 find_nodes / get_node_infos 替代;BP_Muriel(第二角色)尚未深入读取;Config 使用传统输入系统而非 Enhanced Input。

§11 · 技术预研 Pilot study

角色飞行遁速:一份完整的预研实现

在纯蓝图主项目之外,另有一条 C++ 预研线验证了变身、飞行、加速遁速与 Niagara 特效的完整链路。

该预研基于 UE 5.8.1,核心类为 ATransformCharacter:按 T 键进入/退出变身形态,变身后自动向前飞行并可用 W/A/S/D 操控,鼠标右键切换加速模式,FOV 在 80 与 120 之间切换,并预留了 MPC 溶解过渡。

飞行遁速

开发记录 · 9 个问题与修复

从输入绑定、形态切换、飞行控制到 Niagara 速度传递的完整实现记录,含关键参数汇总与经验总结。

点击查看

代码解析

逐行解析 · .h / .cpp

TransformCharacter.hTransformCharacter.cpp 的每一行代码进行解释,并附废弃代码清单与迁移注意事项。

点击查看