BP
BLUEPRINT-ONLY · 纯蓝图开发
整个项目没有一行 C++,所有玩法逻辑都在蓝图图表里。
GameMode、主角、敌人、子弹、特效、UI 全部为蓝图资产。这意味着逻辑的可读单元是"图表—节点—引脚",本报告的节点级数据(333/290/140…)正是逐图统计的结果。
悬停查看详情
UE 5.8 纯蓝图项目 · 节点级技术解析 · 数据截至 2026-07-23 · By JasonYang
一款修仙类型的第三人称RPG,由Blueprint和C++共同构建
玩家操控修仙者可全程飞行作战:五段连击、追踪子弹、蓄力链式雷电等,要在这个残酷的修仙世界先活下去。本报告基于 943 个资产文件的离线二进制解析与 UE 编辑器实时蓝图节点读取,把整棵蓝图树拆开给你看——从输入图到状态机,从贝塞尔弹道到混沌破碎。
证据分级:UE 编辑器实时蓝图读取(节点级,含引脚连接)> 离线 uasset 二进制解析 · 全部来源见文末 K1–K12 锚点表 · 所有数字忠实转录原文(All project data and production are from JasonYang)
§0 · 摘要 Executive summary
《CultivatingImmortality_RPGgame》是修仙题材的第三人称飞行动作 RPG——所有移动都是飞行,所有逻辑都是蓝图节点。
项目的逻辑密度高度集中在主角 BP_Nyx 上:9 个图表、39 个变量,其中输入图 InputEventGraph 一张图就有 333 个节点,五段连击图 Attack 有 290 个节点——两张图承担了主角八成的逻辑量。表现层的体量同样可观:特效库 Content/Effect 独占 495 个文件,超过总资产 943 个文件的一半;角色资产 242 个文件中仅 Nyx 的动画就有 153 个。
| 核心数字 | 值 | 说明 | 来源 |
|---|---|---|---|
| 资产文件总数 | 943 | Content/ 全部游戏资产,逐文件离线解析 | K1 |
| 主角 BP_Nyx | 9 图 / 39 变量 | 父类 Character,全项目逻辑最厚的蓝图 | K2 |
| InputEventGraph | 333 节点 | 全部输入响应与技能触发入口 | 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++、传统输入系统——技术选型保守而集中,复杂度全部留给蓝图与表现层。
BLUEPRINT-ONLY · 纯蓝图开发
整个项目没有一行 C++,所有玩法逻辑都在蓝图图表里。
GameMode、主角、敌人、子弹、特效、UI 全部为蓝图资产。这意味着逻辑的可读单元是"图表—节点—引脚",本报告的节点级数据(333/290/140…)正是逐图统计的结果。
悬停查看详情
KAWAIIPHYSICS · 发丝衣物物理
角色表现的关键插件:发丝、衣物、飘带的物理摆动。
AB_Nyx 的 AnimGraph 末端串联了 6 级 KawaiiPhysics 节点,共用 DA_Kawaii_Physics 的 LimitAngleCurveData——多组骨骼链的摆动参数集中管理。
悬停查看详情
GRAPH-LEVEL READING · 逐图逐节点
整棵蓝图树被完整展开:9 张图表、39 个变量、引脚级连接。
BP_Nyx 的 InputEventGraph 有 333 个节点、Attack 连击图 290 个节点、Drone 伤害图 140 个节点——全部节点与引脚连接逐一读取、计数并制图,没有抽样估算。
悬停查看详情
默认地图为 RealBiomes_TestEmpty(定向光 + 高度雾的空测试场景),游戏模式 MyGameMode(GameModeBase)。输入采用传统系统而非 Enhanced Input:
| 输入 | 键位 | 类型 |
|---|---|---|
| Move Forward / Backward | W / S | 轴 |
| Move Right / Left | A / D | 轴 |
| Move Up / Down | Q / E | 轴(飞行升降) |
| Turn / Look Up Mouse | MouseX / 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 张图里定位——节点密度图就是这张地图。
ComboAttack 从 ST_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 状态机缓存为 LocalMotion → CR_NyxHead 注视(IsLookAt 且 InRange 时混入)→ Montage Slot(连击注入点)→ CR_NyxAim 瞄准姿态(IsAim 时混入)→ 6 级 KawaiiPhysics 串联 → 输出姿势。EventGraph 由 BlueprintUpdateAnimation 驱动,其中 SetNextSection 出现 6 处——连击蒙太奇段落衔接、连击流畅度全靠它。
| 转移 | 条件 |
|---|---|
| Idle/Hover → Start | IsSprint = true |
| Start → MoveLoop | Start 动画剩余时间比例 < 阈值 |
| MoveLoop → MoveEnd | NOT IsSprint |
| MoveEnd → Idle/Hover | MoveEnd 剩余时间比例 < 阈值 |
| 中断回退分支 ×2 | IsSprint / 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 节点)搜索敌人填入 DroneArray;CE_BezierMove 由 TimelineHasEnemy 驱动,用三控制点 3SpotPosition 计算贝塞尔曲线追踪目标;无敌人时退化为直线/散射。命中后 ApplyDamage(携带 DamageType)→ 生成命中特效 → 停双时间轴 → 销毁。
| 子目录 | 数量 | 作用 |
|---|---|---|
| Textures/ | 243 | 噪声、遮罩、拖尾、SubUV 序列帧、光斑 |
| MaterialInstance/ | 88 | Ribbon 拖尾、Simple、Smoke、Refraction、PostProcess |
| Common/ | 56 | 通用 Niagara 发射器/模块/材质 |
| Niagara/ | 34 | NS_* 粒子系统: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:记录命中方向与位置 → 扣 HP → ColorDamage 曲线驱动动态材质受击变色。死亡 CE_Death 是一套组合拳:爆炸特效 + BP_DroneDestroy 残骸(GeometryCollection 混沌破碎)+ BP_FieldSystem 力场冲击 + BP_CS_DroneExplosion 镜头震动,最后 CE_Reborn 在刷怪点重生完成循环。
§7 · 伤害 · 镜头 · UI
攻击方按技能携带 Sword / Lightning 伤害类型,BPI_Damage 统一投递,Drone 按类型走不同受击反馈。
| 体系 | 数量 | 成员 |
|---|---|---|
| Damage/ | 8 | BPI_Damage 接口、DamageType ×4(Base/Lightning/Sword/通用)、EM_DamageType 枚举、颜色曲线 ×2 |
| AnimNotify/ | 7 | 连击判定帧、重置连击、动画帧生成子弹、运镜一次性设置 + 持续镜头震动、技能移动锁、技能运镜 |
| CameraShake/ | 4 | Drone 爆炸、崩山爆炸、雷电爆炸、飞行 |
| Widget/ | 4 | UW_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
特效库 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.h 与 TransformCharacter.cpp 的每一行代码进行解释,并附废弃代码清单与迁移注意事项。
点击查看