59 lines
5.5 KiB
Markdown
59 lines
5.5 KiB
Markdown
---
|
||
title: "Unreal Systems Engineer"
|
||
type: source
|
||
tags: ["game-engineering", "unreal-engine", "c-plus-plus", "blueprint", "gas", "nanite", "lumen", "performance", "memory-management", "multiplayer"]
|
||
date: 2026-05-30
|
||
---
|
||
|
||
## Source File
|
||
- [[raw/Agent/agency-agents/game-development/unreal-engine/unreal-systems-engineer.md]]
|
||
|
||
## Summary(用中文描述)
|
||
- 核心主题:Unreal Engine 5 系统架构工程师 AI Agent 人格规范——C++/Blueprint 架构边界决策、AAA 级性能优化、网络就绪游戏系统构建
|
||
- 问题域:AAA 级 UE5 项目中的 Tick 性能、内存安全、网络预测、Nanite 限制、Chaos 破坏效果、Mass Entity ECS 扩展
|
||
- 方法/机制:C++/Blueprint 分层架构(Tick 逻辑必须 C++)、GAS 网络复制配置、Nanite 实例预算管理、智能指针内存安全、Unreal Build System 反射宏规范、Lyra 模块化游戏框架
|
||
- 结论/价值:建立了一套完整的 UE5 系统工程师能力标准,涵盖从内存管理到 Mass Entity/Chaos 高级能力的 AAA 级开发规范
|
||
|
||
## Key Claims(用中文描述)
|
||
- Tick 逻辑必须实现于 C++——Blueprint VM 开销与缓存未命中在每帧调用频率下构成 ~10x 性能差距,是规模级项目的性能隐患
|
||
- Nanite 单场景硬上限 1600 万实例——开放世界项目需提前规划实例预算,植被密度在 500m 视距内将超出上限
|
||
- 所有 UObject 派生指针必须声明 UPROPERTY()——缺失将导致垃圾回收意外销毁;跨帧 Actor 指针必须用 IsValid() 检查
|
||
- GAS 网络复制必须通过 UAbilitySystemComponent——禁止手动复制技能状态;FGameplayTag 优于字符串(层级结构、复制安全、可搜索)
|
||
- Nanite 不兼容骨骼网格(使用标准 LOD)、复杂 clip 操作的遮罩材质、样条网格、程序化网格组件;不存储显式切线(隐式像素着色器推导)
|
||
|
||
## Key Quotes
|
||
> "Any logic that runs every frame (`Tick`) must be implemented in C++ — Blueprint VM overhead and cache misses make per-frame Blueprint logic a performance liability at scale." — UnrealSystemsEngineer 核心原则
|
||
|
||
> "Nanite supports a hard-locked maximum of 16 million instances in a single scene — plan large open-world instance budgets accordingly." — Nanite 实例预算警告
|
||
|
||
> "All `UObject`-derived pointers must be declared with `UPROPERTY()` — raw `UObject*` without `UPROPERTY` will be garbage collected unexpectedly." — 内存安全核心规范
|
||
|
||
> "GAS project setup requires adding 'GameplayAbilities', 'GameplayTags', and 'GameplayTasks' to PublicDependencyModuleNames in the .Build.cs file." — GAS 项目配置前提
|
||
|
||
## Key Concepts
|
||
- [[GAS]]:UE5 Gameplay Ability System,通过 UGameplayAbility/UAttributeSet/UAbilitySystemComponent 实现网络就绪的技能/属性/标签管理;内置 PredictionKey 支持客户端预测和服务器回滚
|
||
- [[Nanite]]:UE5 虚拟几何体系统,支持自动 LOD 和海量实例化渲染,单场景上限 1600 万实例;不兼容骨骼网格、遮罩材质复杂 clip、样条网格;不存储显式切线
|
||
- [[Actor Replication]]:UE5 Actor 属性复制机制;Tick 逻辑必须在 C++ 中实现以避免 Blueprint VM 开销;跨帧 Actor 指针须用 IsValid() 检查有效性
|
||
- [[LumenGI]]:UE5 全局光照系统(源文档关联提及,未独立建页)
|
||
- [[Chaos-Physics]]:UE5 物理与破坏系统——Geometry Collections 实时网格破碎、Chaos constraint 类型(rigid/soft/spring/suspension)、Unreal Insights Chaos 专用 trace 通道分析
|
||
- [[Mass-Entity]]:Unreal ECS 实现,通过 UMassEntitySubsystem 处理海量 NPC/投射物/人群代理;FMassFragment 数据层、FMassTag 布尔标记、UMassRepresentationSubsystem LOD 切换 actor 渲染
|
||
- [[Lyra-Gameplay-Framework]]:Epic 模块化游戏框架模式——GameFeatureAction 运行时组件注入、Experience-based 游戏模式切换、HeroComponent 组件注入模式、Game Feature Plugins 可插拔内容
|
||
- [[Unreal-Build-System]]:Unreal 模块化构建系统——.Build.cs 显式依赖声明、`GenerateProjectFiles.bat` 修改后必须运行、UCLASS/USTRUCT/UENUM 反射宏缺失导致静默运行时失败而非编译错误
|
||
|
||
## Key Entities
|
||
- [[UnrealEngine5]]:Epic Games 开发的游戏引擎,提供 C++/Blueprint 双轨开发、GAS、Nanite、Lumen、Chaos、Mass Entity 等全栈工具链
|
||
- [[UnrealMultiplayerArchitect]]:多人网络架构师 Agent,与本 Agent 在 GAS 网络复制配置上存在职责边界互补(系统工程师负责 GAS 内部逻辑,网络架构师确保 RPC 层安全调用 GAS)
|
||
- [[UnrealTechnicalArtist]]:视觉系统工程师 Agent,与本 Agent 在 Nanite 几何优化和 Lumen GI 配置上存在协作关系(Technical Artist 负责 Nanite 资产验证和渲染配置)
|
||
|
||
## Connections
|
||
- [[UnrealMultiplayerArchitect]] ← shares_gas_architecture_with ← [[UnrealSystemsEngineer]]
|
||
- [[UnrealTechnicalArtist]] ← shares_nanite_optimization_with ← [[UnrealSystemsEngineer]]
|
||
- [[UnrealEngine5]] ← provides_engine_capabilities_to ← [[UnrealSystemsEngineer]]
|
||
|
||
## Contradictions
|
||
- 与 [[UnrealMultiplayerArchitect]] 在 GAS 职责边界:
|
||
- 冲突点:GAS 配置中技能系统实现与网络复制配置的职责归属
|
||
- 当前观点(本 Agent):系统架构师负责 UGameplayAbility/UAttributeSet C++ 实现和网络复制配置
|
||
- 对方观点:网络架构师负责 RPC 通信层面和 Server Authoritative 状态同步
|
||
- 解决方向:两者互补——系统工程师构建 GAS 内部逻辑,网络架构师确保 RPC 层安全调用 GAS
|