UGC1.0经验补全:实战、项目参与与源码复盘

自动关联目录:UGC1.0经验补全:实战、项目参与与源码复盘

这篇不是简历,也不是背诵稿,而是 UGC1.0 的完整技术底座。目标是把个人交付、项目内协作和团队源码复盘统一到一张图里:面试时能讲出平台全景,也能准确落回自己真正负责的部分。

一、先把边界说清楚

1.1 经验来源分层

层级定义面试中可以怎么说不能怎么说
X1 直接交付当年有连续个人代码、方案决策、联调或长期维护证据我负责、我设计并实现、我推动落地把团队共同成果全部说成个人主导
X2 项目内参与当年做过接入、维护或上下游联调,但不是完整主责我参与过、我负责其中的……、我与该模块联调过我独立设计了整套模块
X3 源码复盘当年处于同一项目环境,现在结合源码和全员提交系统补全团队系统是这样设计的;我后来完整复盘过;如果现在接手……我当年亲手实现了它
X4 通用学习只来自公开资料、理论学习或类比设计我的理解是……、如果设计类似系统……我在项目中做过

X1-X4 描述经验来源,不等同于事实证据等级。源码能证明系统存在和当前理解深度,但不能把同事的历史交付转成个人成果。

1.2 时间来源也要分层

当前工作区保存的是持续演进后的源码,不是 2025 年 3 月的静态快照。因此再增加一组时间标签:

标签含义使用方式
T1 当期能力在本人以 UGC1.0 为工作重心的阶段已经存在可以用于解释当时的平台架构,但仍要区分个人和团队贡献
T2 后续演进在工作重心切走后新增或显著扩展只能说“同一平台后续演进为……,我通过源码补全了它”
T? 待核时间当前源码存在,但首次落地时间和历史形态尚未核实不能说“当时就是这样”,先回查历史版本

按路径级 Git 历史核对,撤销框架、编辑操作状态机、AIGC、UI 编辑器、社区资源、自定义建模、玩家存档、质量检测、脚本框架和多层地图在 T1 已有落点;当前 Coding 服务体系、多人共创和完整编辑历史主要属于 T2。一个模块可能 T1 已有雏形、T2 才形成当前架构,回答时应明确所讲的是哪一版。

1.3 两种问题必须使用两套主语

  • 面试官问“UGC 架构是什么”:主语用“系统、平台、团队”,可以覆盖完整架构。
  • 面试官问“你做了什么”:主语切回“我”,只展开 X1,再补充明确的 X2 协作边界。
  • 面试官追问“是谁设计的、谁负责事故”:继续按事实回答,不用架构理解代替 ownership。

一句话口径:

我直接负责的是地图数据与交付、编辑交互与部分元件、AI 辅助创作、ASTC、四足生物和工程工具;平台其余能力不是都由我实现,但我已经沿着源码和全员提交把对象模型、事务历史、脚本运行时、多人共创、资源发布和质量门禁补成了完整认知。

二、UGC1.0 到底是什么系统

它不是一个“摆放物件的页面”,而是把游戏引擎能力产品化给普通创作者的内容生产平台。客户端同时承担五种角色:

  1. 创作工具:让用户选择、摆放、配置、编排和调试内容。
  2. 内容编译器:把编辑态对象、属性、逻辑和资源转成稳定、可版本化的数据。
  3. 运行时宿主:把创作数据恢复为可游玩的场景、规则、角色和 UI。
  4. 交付终端:负责保存、预检、压缩、上传、审核、发布、下载和缓存。
  5. 平台治理节点:执行权限、容量、性能、安全、兼容和线上可观测性约束。

完整业务闭环是:

进入创作大厅
  -> 选择模板 / 创建地图
  -> 场景编辑 + 属性配置 + 逻辑编排 + 资源引用
  -> 本地保存 / 云存档 / 历史快照
  -> 试玩与性能检查
  -> 发布预检 / 打包 / 上传 / 审核
  -> 广场分发 / 多人游玩
  -> 数据反馈 / 修复 / 再发布

架构设计不能只解释“编辑器怎么写”,还必须回答内容如何从编辑态安全、稳定地流到运行时和线上生态。

三、客户端总体架构

层核心职责典型状态关键边界
产品与界面层大厅、编辑器面板、属性面板、Coding、UI 编辑器、发布页、试玩 HUD页面状态、选中态、临时输入页面不应成为业务状态权威
编辑领域层操作状态机、选择与变换、对象管理、属性系统、命令、撤销重做、历史恢复编辑会话、脏标记、命令记录、对象引用编辑命令与视图解耦;所有修改可追踪
内容模型层地图 Schema、对象/元件/模板、脚本数据、资源引用、多层地图、版本迁移内容快照、版本、依赖图稳定身份、兼容性和引用完整性
运行时能力层场景恢复、角色/武器/技能/NPC、规则、网络、存档、脚本沙箱世界实例、服务端权威状态、复制状态编辑态数据不能直接等同于运行时对象
交付与平台层本地/云保存、打包、上传下载、审核、质量门禁、发布、回滚任务状态、制品、审核态、发布版本异步任务幂等、失败可恢复、版本可追溯
工具与治理层资源检查、迁移、解析、自动化、日志、埋点、Crash 分单诊断结果、指标、规则配置工具必须服务于长期内容兼容和线上治理

最重要的四条主链:

  • 操作链:输入 -> 操作状态 -> 领域命令 -> 内容模型 -> 脏标记/自动保存。
  • 内容链:对象/逻辑/资源 -> 快照 -> 序列化 -> 制品 -> 上传 -> 发布版本。
  • 运行链:发布版本 -> 下载/校验 -> 反序列化 -> 实例化 -> 服务注册 -> 联机游玩。
  • 治理链:编辑预检 -> 试玩采样 -> 内容审核 -> 运行时校验 -> 指标与故障回收。

四、完整模块图谱

下面把当前源码中的团队能力全部纳入。X3 条目是为了形成架构深度,不代表个人历史交付;表中也包含 T2 后续演进,不能把整张表原样描述为 2023–2025 的系统快照。

4.1 创作入口与编辑内核

模块层级业务价值实现抓手与深挖点
创作大厅与地图入口X2/X3串起发现、创建、续编、试玩和返回地图身份、分页缓存、入口参数、会话恢复、失败重试
模板建图与初始化X2/X3降低空白创作成本,保证地图初始合法模板版本、默认对象、基础资源、初始化事务、模板升级
编辑器生命周期X1/X3管理进入、加载、编辑、试玩、退出和清理生命周期事件、模型注册、异步任务取消、脏数据处理
简易/专家模式X1同时服务新手和高阶创作者同一内容模型上的能力裁剪、状态权威、面板互斥、模式迁移
多层地图与 LayerX1/X3支持大地图、分区内容和独立操作历史当前层身份、跨层引用、按层命令栈、加载与保存粒度
输入、镜头与选择X1/X3决定编辑器基础可用性和操作效率输入路由、射线检测、选择集、焦点、镜头模式、移动端手势
Gizmo 与对象变换X1/X3提供移动、旋转、缩放和轴向约束世界/局部坐标、吸附、枢轴、父子变换、拖拽事务合并
组合、绑定与挂接X1/X3支持复杂对象组装和层级编辑父子关系、组合身份、循环检测、解绑恢复、引用更新
对齐、镜像、复制、锁定X1/X3提升批量搭建效率批量命令、相对变换、深拷贝、锁定权限、引用重映射
操作状态机X3避免移动、选择、绑定、模板编辑等模式互相污染状态进入/退出、延迟创建、事件派发、异常退出后的清理
撤销/重做X3让高频试错可逆,是编辑器可信度基础Command、按域/按层命令池、有限历史、新操作清空 redo、自动保存联动
编辑历史与快照恢复X2/X3处理跨会话误操作、坏档和版本回退场景/Coding 分数据加载器、本地与云快照、覆盖/恢复、版本上限
自动保存与脏标记X1/X3降低崩溃和误退出造成的内容损失修改捕获、去抖、快照一致性、保存锁、失败提示、退出保护
多人共创X3支持多人分别编辑场景、Coding 或界面编辑域划分、权限、服务端通知、待同步状态、冲突与提交策略

4.2 对象、元件与创作表达

模块层级业务价值实现抓手与深挖点
可放置对象模型X1/X3为所有场景内容提供统一承载单位类型 ID、实例 ID、模板 ID、生命周期、空间信息、序列化
元件/组件模型X1/X3将玩法能力封装成低门槛配置单元组件声明、默认值、属性元数据、运行时组件、版本兼容
元件管理器X1管理搜索、分类、创建、刷新和限制注册表、筛选、实例/模板关系、依赖、上限和缓存
属性与高级配置X1/X3让同一元件表达更多行为而不写代码Schema 驱动面板、类型校验、属性变化分发、保存与运行时刷新
预制体、组合与模板X2/X3复用复杂内容,形成可分享的创作资产实例覆盖、模板升级、依赖收集、断链、引用重映射
信号与事件绑定X2/X3让元件之间形成“发生什么 -> 做什么”的逻辑事件定义、目标引用、参数类型、循环检测、运行时调度
可视化 CodingX2/X3在低代码和纯脚本之间提供可编排逻辑积木/节点定义、变量类型、引用选择、数据持久化、生成与调试
UGC 脚本运行时X3给高阶创作者开放可扩展能力沙箱、服务白名单、协程、异常隔离、日志、API 版本、配额
脚本网络层X3让创作者逻辑安全运行在多人环境属性同步、RPC、可靠/不可靠通道、权限、限流、服务端校验
自定义 UI 编辑器X3允许创作者搭建 HUD 和交互界面控件树、锚点、缩放、动画、图片资源、信号绑定、运行时恢复
自定义建模X3让用户从参数化形体进一步生产内容几何预检、占用量估算、布尔/动态网格、碰撞、平台预算
社区资源库X2/X3让组合、模型、图片等内容可复用和分发资源 ID、版本、元信息、分页缓存、下载、引用、发布任务
自定义图片/音频/材质X1/X3扩展表达能力,同时引入安全和性能风险审核状态、尺寸格式、转码、缓存、引用计数、平台变体
AI 配色/换色X1降低美术门槛,加快试错异步任务、预览确认、材质应用、任务幂等、失败恢复、埋点
AI 参考图与生成资产X1/X2/X3从灵感辅助延伸到资产生产Prompt、任务状态机、审核、产物落盘、版本、引用和撤销
四足生物与外观定制X1扩充角色型创作对象及表现空间骨骼挂接、外观数据、动画约束、碰撞、Gizmo、运行时实例化

4.3 运行时与玩法能力

模块层级业务价值实现抓手与深挖点
编辑态到试玩态转换X2/X3让创作者快速验证内容快照冻结、实例重建、服务启动、状态隔离、返回编辑恢复
规则与回合系统X2/X3支撑淘汰、积分、阵营、胜负等玩法骨架规则配置、回合状态机、开始/结束条件、结算、异常中止
生成器与出生点X2/X3控制玩家、NPC、道具和波次生成生成条件、数量上限、对象池、销毁、复活、服务端权威
NPC、怪物与行为树X2/X3提供 PVE、剧情和环境角色能力感知、行为树、轻量角色、仇恨、导航、性能分级
剧情、对话与 SequenceX2/X3支持叙事内容和演出对话图、条件分支、状态推进、演出同步、跳过、存档恢复
角色、3C 与镜头X1/X3保证不同地图仍有稳定操控和镜头体验输入、角色状态、第一/第三人称、相机约束、动画通知
武器、道具与装备X2/X3提供战斗和交互基础能力状态机、弹丸、装备槽、拾取、消耗、复制和预测
技能、效果与 BuffX2/X3组合复杂战斗规则技能阶段、目标选择、效果执行、对象池、冷却、权威校验
任务与成就X2/X3承载目标驱动和长期进度条件监听、进度聚合、奖励幂等、保存、版本迁移
商店、货币与背包X2/X3支持局内经济和内容循环服务端价格、库存、事务、断线恢复、防重复发奖
玩家存档与公共存档X3让 UGC 玩法具有跨局进度数据域拆分、限流、写入幂等、冲突、坏档与回滚
多人大厅与会话X3支撑组队、房间、地图加载和状态切换会话身份、准备任务、客户端状态机、超时、重连
网络复制与服务端权威X3保证多人一致性和对抗安全状态所有权、RPC 校验、属性复制、频率限制、表现预测
局内 HUD、排行与结算X2/X3将玩法状态反馈给玩家订阅式数据、生命周期解绑、弱网/重连恢复、结果一致性
导航、物理与碰撞X1/X3让任意用户内容仍可运行动态导航、碰撞预设、物理约束、非法几何、防穿透与预算

4.4 数据、资源、发布与治理

模块层级业务价值实现抓手与深挖点
地图 Schema 与序列化X1建立内容长期演进的稳定协议对象/属性/引用编码、缺省值、未知字段、版本、确定性输出
多文件地图数据X1拆分场景、逻辑、资源和多层内容清单、文件关系、原子提交、部分缺失诊断、跨文件版本
压缩、解压与制品X1/X3降低传输和存储成本压缩算法、流式 IO、临时文件、校验和、加密、失败清理
上传、下载与缓存X1/X3连接本地编辑与云端内容任务队列、进度、重试、断点、缓存键、版本淘汰、弱网
数据迁移与向后兼容X1/X3保证旧地图能继续打开和游玩版本探测、逐级迁移、幂等、只读兜底、批量扫描
资源依赖与引用检查X2/X3防止发布后缺图、缺模型或悬空引用依赖图、循环引用、权限、平台变体、删除保护
发布前预检X2/X3在昂贵的上传和审核前拦截问题Schema、容量、资源、玩法入口、敏感内容、阻断/警告分级
性能质量门禁X3避免低端机不可玩的地图进入分发设备画质、试玩采样、帧耗/内存/数量预算、结果与发布状态机
内容安全审核X2/X3控制文本、图片、模型、脚本和组合资产风险上传前/发布前/游玩前分层校验、审核状态、封禁传播、申诉
发布任务与状态机X1/X3将多个异步步骤变成可追踪事务快照、文件清单、上传、提交审核、轮询、成功落版、失败恢复
地图封面、说明和截图X1/X2决定内容分发点击和审核信息完整性拍照、多图、分页、上限、资源身份、上传顺序、一致性
版本、回滚与再发布X1/X3支持线上修复和创作者持续迭代草稿/审核/线上版本、不可变制品、回滚指针、兼容检查
ASTC 与图片处理链路X1降低移动端图片内存和包体开销格式选择、并行转码、质量参数、慢机治理、构建接入、兼容矩阵
平台差异与资源变体X1/X3同一内容在不同设备稳定运行平台产物、能力探测、降级、缓存隔离、发布清单
灰度、开关与远端配置X2/X3控制复杂平台能力的发布风险能力开关、版本条件、白名单、默认值、回滚和配置观测

4.5 工具、质量与线上治理

模块层级业务价值实现抓手与深挖点
地图解析工具X1脱离客户端检查坏包、资源和兼容问题解压解密、反序列化、格式兼容、GUI、批量扫描、诊断报告
Crash 自动分单X1缩短海量崩溃定位和责任路由时间栈解析、文件映射、版本仓、代码归属、白名单、人工覆盖
资源检查与批处理X3在生产阶段提前发现依赖和规范问题规则引擎、命令行、报告、自动修复、误报治理
元件导出、缩略图和使用率工具X3支撑大量内容的标准化入库和运营批量导出、引用扫描、自动拍照、使用率统计、数据迁移
日志、调试与调用追踪X2/X3让创作者脚本和平台故障可定位分域日志、错误收集、调用链、脱敏、上传限流、关联会话
自动化测试X2/X3防止编辑、保存、发布和运行时长期回归数据样例、坏包、协议兼容、UI 冒烟、地图批跑、性能基线
埋点与创作漏斗X1/X3判断功能是否真正提升创作效率入口、完成、取消、失败原因、耗时、发布转化、口径版本
线上修复与长期维护X1在多版本、多地图存量下控制故障影响最小修复、兼容分支、数据修复、灰度、回滚、复盘

五、十二个必须能讲深的技术专题

5.1 编辑操作状态机

源码中移动、旋转、缩放、镜像、绑定、模板编辑、选择等操作被拆成独立状态,通过统一入口切换,并明确执行退出和进入逻辑。

  • 业务问题:移动端输入有限,多种编辑模式若同时响应,会出现 Gizmo、选择和面板互相抢状态。
  • 实现核心:状态机只维护当前操作域;具体状态管理输入订阅、临时对象和退出清理;切换后再通知 UI。
  • 最难问题:弹窗、切后台、对象被删、切层、进入试玩都可能造成“未正常退出”。
  • 反思:不能把模式散落成页面布尔值。应让状态拥有资源,退出必须幂等,并提供强制回到安全态的恢复入口。

5.2 撤销重做、自动保存和编辑历史不是一回事

撤销框架属于 T1,当前看到的完整编辑历史模块主要属于 T2。比较它们是为了理解系统演进,不是说当期已经具备今天的全部恢复能力。

  • 撤销/重做:会话内、细粒度、低延迟,适合 Command 模型;新操作会清空 redo,历史需要有上限。
  • 自动保存:持续把当前内容状态固化,解决崩溃和意外退出,不保证每一步都可读。
  • 编辑历史:跨会话、粗粒度的场景/Coding 快照,支持本地、云端、手动版本和覆盖恢复。
  • 设计结论:三者必须共享内容版本和脏标记,但不能共用一套数据结构。Command 解决“反操作”,Snapshot 解决“恢复到某个稳定世界”。

5.3 元件不是一个蓝图,而是一条契约

一个成熟元件至少包括:编辑器注册信息、属性 Schema、默认值、编辑面板、保存结构、运行时实现、网络策略、资源依赖、版本迁移和容量成本。

新增属性要回答四个问题:旧地图没有这个字段怎么办;修改后谁收到通知;运行时是否立即生效;它是否参与复制和保存。只做 UI 和运行时逻辑,不补 Schema 与迁移,迟早会形成坏档。

元件模式的价值是把风险封进受控能力,代价是组合自由度和系统扩展速度受注册表、属性面板与事件协议约束。

5.4 地图数据与发布事务

推荐用以下状态机理解完整链路:

Editing
  -> FreezeSnapshot
  -> Validate
  -> Serialize
  -> Package
  -> UploadArtifacts
  -> SubmitReview
  -> WaitReview
  -> Published

每一步都要记录输入版本、输出制品和可重试信息。客户端不能在上传过程中继续偷偷读取变化中的编辑态;正确做法是冻结快照,发布任务只面向不可变输入。失败后根据阶段清理临时产物或复用已上传制品,避免重复提交。

5.5 Coding 和脚本运行时

脚本框架在 T1 后期已经启动,当前完整 Coding 服务体系包含较多 T2 演进。源码显示系统不止有固定元件,还逐步形成了编辑器、变量类型、引用选择、适配层、服务层、沙箱、协程、异常收集、属性同步和 RPC 等能力。

  • 编辑态负责图/代码数据、类型检查、资源引用和调试入口。
  • 适配层把创作概念转换为稳定 API,隔离底层对象变化。
  • 服务层按角色、相机、音频、任务、商店等领域暴露能力。
  • 沙箱控制全局环境、API 和资源预算,异常不能拖垮主游戏。
  • 网络层区分客户端表现和服务端权威,所有影响公共状态的输入仍需校验和限流。

技术深度不在“支持 Lua”,而在 API 治理、权限、版本、可观测和多人一致性。

5.6 多人共创

多人共创主要是 T2 能力。现有源码体现了按场景、Coding、界面等数据域切分共创模式,并通过服务端通知、权限和待同步状态组织流程。这说明这一阶段的系统更接近“按编辑域分权和同步”,不能未经核实就说早期版本已有该能力,更不能说用了 CRDT 或完整实时合并。

真正难点包括对象身份、锁粒度、离线重连、顺序冲突、撤销语义和跨域引用。若重新设计,应先确定产品需要的是轮流编辑、分区并行,还是同对象实时协作,再决定锁、操作日志、OT 或 CRDT,不能为了技术名词过度设计。

5.7 云端资源与内容依赖

资源库需要同时管理资源身份、版本、元信息、文件清单、发布状态、缓存和引用者。地图不能只保存本地路径,而应保存稳定资源引用;下载后要校验版本和完整性;发布地图前要确认资源可访问、已审核且目标平台有对应产物。

删除资源不是普通 CRUD。系统必须知道哪些地图、预制体和脚本仍在引用它,并提供阻断、替换或固定旧版本的策略。

5.8 编辑态与运行时的边界

编辑器对象强调可修改、可选中和可序列化;运行时对象强调性能、网络权威和稳定生命周期。二者可以共享 Schema 和能力标识,但不应共享所有实例状态。

试玩流程应冻结编辑数据并构建运行世界;退出试玩后销毁运行态,再恢复编辑上下文。多人玩法中的奖励、伤害、库存和胜负由服务端权威,客户端负责输入、预测和表现。这个原则也与 Roblox 官方对客户端/服务端运行时和服务端校验的划分一致。

5.9 性能质量门禁

源码存在“开始检测 -> 采样 -> 结果 -> 发布”的独立状态流程,说明性能不是最后人工看一眼,而是发布链路的一部分。

质量门禁需要区分硬阻断和软警告:非法数据、必崩和超硬上限必须阻断;设备相关的帧率波动可提示并允许优化。采样必须固定设备档位、地图阶段和统计窗口,否则数据不能比较。门禁规则还要版本化,否则旧地图可能因新阈值突然无法再发布。

5.10 自定义建模与运行时几何

参数化几何不只是生成顶点。创建前要做参数合法性和资源占用预估,创建后要处理法线、UV、材质、碰撞、导航、序列化和跨平台性能。源码中的形体预检与占用量计算说明“预算前置”比生成后报错更适合创作工具。

5.11 AI 辅助创作

AI 功能应被当作异步资产生产管线,而不是一个请求按钮:创建任务、展示进度、处理审核、生成候选、预览、确认写入、固化资产、建立引用、支持撤销,并记录失败原因和转化漏斗。

最重要的工程问题是幂等和所有权。重复回调不能生成两份资产;用户离开页面后任务仍要可恢复;预览产物和正式资产必须区分;进入发布链路前必须完成内容安全和格式处理。

5.12 工具与线上治理

地图解析和 Crash 分单不是外围杂活,它们补的是 UGC 平台最容易缺失的可观测性:当内容来自海量用户、版本横跨多年时,开发者不能只靠在客户端复现。

  • 地图解析器让坏包、版本和资源问题可以离线批量定位。
  • Crash 分单把调用栈、版本和代码归属映射成可处理队列,并保留人工兜底。
  • 资源扫描与迁移工具把一次性修复变成可重复治理。
  • 真正的结果指标应是定位时长、自动命中率、误报率、兼容覆盖率和重复事故下降,而不是工具代码量。

六、旧 UGC、绿洲启元与 Roblox 怎么比较

维度旧 UGC1.0绿洲启元公开模型Roblox
世界与对象可放置对象 + 元件 + 属性,后续叠加 Coding/脚本基于 UE4,场景实体以 Actor 为基础DataModel/Instance 统一组织世界对象与层级
玩法框架元件与系统按产品能力逐步扩展GameMode、GameState、PlayerController、PlayerPawn、PlayerState 分工Service 提供平台能力,脚本和对象按运行上下文组织
逻辑表达预封装元件、信号、可视化编程模式编辑器 ECA + 可编程蓝图绑定 Lua + 自定义 Condition/ActionLuau、属性、事件、模块与 Service 组合
网络边界编辑态转运行态,客户端/服务端分域DS 权威;属性由 DS 向 Client 复制;RPC 处理双向请求与通知Server/Client 分域,远程通信必须由服务端校验
UI产品内置 UI 与开放控件并存UI 只在 Client,重要数据和逻辑不放在 UI客户端 UI 与共享/服务端状态分离
复用方式模板、元件组合、地图与对象复制GamePart 按配置启用模块,并通过 GlobalActor API 开放能力Model、Package、ModuleScript 与资产生态

准确说法不是“绿洲只有元件,Roblox 只有脚本”。绿洲启元官方文档同时公开了模式编辑器、Lua、Actor 生命周期、复制/RPC 和 GamePart;它的特点是复用 UE Gameplay Framework,并在上面开放领域化工具和接口。Roblox 的特点是从 DataModel/Instance 与 Luau 出发,把对象、服务和脚本放进统一平台模型。这里比较的是公开技术模型,不从“类绿洲”一词推导连续身份、跨世界或经济系统。

绿洲启元依据:玩法开发框架介绍、网络同步系统介绍、模式编辑器、Lua 玩法功能、GamePart 模块化。Roblox 对照依据:项目与 DataModel、客户端/服务端运行时、Packages、客户端/服务端边界安全。

七、面试回答模板

7.1 “请描述 UGC 客户端架构”

我会从内容生命周期而不是目录结构回答。客户端大致分六层:最上层是大厅和编辑器 UI;下面是选择、Gizmo、属性、命令、撤销和历史组成的编辑领域层;再下面是地图 Schema、对象/元件、脚本和资源引用组成的内容模型;内容进入试玩后,由角色、规则、AI、网络和脚本沙箱组成运行时;保存发布侧负责快照、序列化、打包、上传、审核和版本;最底下还有资源检查、迁移、解析、埋点和 Crash 治理。四条主链分别是编辑操作链、内容交付链、运行时恢复链和质量治理链。架构的核心不是页面怎么拆,而是状态由谁拥有、内容如何版本化、编辑态如何安全转换成可发布和可联机运行的制品。

7.2 “你在 UGC1.0 里具体做了什么”

我的直接工作主要有四块。第一是地图数据和交付链路,包括多文件数据、压缩、上传下载、发布拆分和线上兼容问题;第二是编辑器和元件,包括模式切换、元件管理、属性交互、地图图片以及四足生物;第三是 AI 配色、参考图和 ASTC 等内容生产、处理链路;第四是地图解析和 Crash 自动分单工具。发布、资源、安全、Coding 等模块我做过接入或上下游协作,但不是整套系统的独立 owner。后来我沿源码把事务历史、脚本运行时、多人共创、资源发布和质量门禁补成了完整架构认知。

7.3 “你为什么能讲不是自己写的模块”

我不会把它说成个人交付。我讲的是同一项目的系统设计和我现在的源码复盘结论,并会明确当年自己的接口位置。高级客户端需要理解上下游,否则地图数据、编辑器和发布问题也无法真正闭环;但理解系统和历史 ownership 是两件事,我会分开回答。

八、个人核心能力收口

核心能力最强证据应达到的回答深度
地图数据与交付长期提交、线上修复、工具和跨模块联调Schema、原子保存、制品、上传、兼容、坏包恢复
编辑交互与元件模式、元件、属性、碰撞、Gizmo 和线上维护状态机、对象身份、事务、属性协议、生命周期
AI 辅助创作完整客户端交互和异步任务链状态机、幂等、资产固化、安全、失败恢复和指标
ASTC工具、并行处理、构建接入和慢机治理格式、内存、质量、耗时、线程、平台兼容
四足生物外观、骨骼挂接、碰撞、相机和编辑适配编辑数据、动画边界、运行时实例化和性能
工程工具地图解析与 Crash 自动分单输入协议、准确性、异常兜底、团队效率和长期治理

其他模块负责体现视野,以上六项负责承受连续追问。不能让宽度掩盖主线,也不能让主线退化为功能列表。

九、学习与验收

每个 X3 模块只有能独立回答以下问题,才算从“看过源码”升级为“具备可迁移经验”:

  1. 用户为什么需要它,失败会影响谁。
  2. 它处在创作、保存、发布、分发和游玩的哪个阶段。
  3. 哪一层拥有权威状态,哪些只是视图、缓存或副本。
  4. 核心数据结构、生命周期和跨模块协议是什么。
  5. 最难的三个失败模式,如何定位、降级和恢复。
  6. 旧方案为什么这样设计,替代方案会付出什么成本。
  7. 能否给出 30 秒结论、90 秒回答和一张白板图。
  8. 如果面试官问“这是不是你写的”,能否一句话准确交代边界。

建议学习顺序:

  1. 先打通编辑状态机、对象/元件、地图 Schema、撤销历史和发布事务。
  2. 再补 Coding/脚本、UI 编辑、多人共创、资源库和运行时权威。
  3. 然后补质量门禁、自定义建模、存档、NPC/技能等平台能力。
  4. 最后将旧 UGC、绿洲启元公开模型和 Roblox 放到同一组设计维度比较。

十、最终边界

  • 可以说“我有 UGC1.0 项目经验,并对平台主要模块形成了系统理解”。
  • 可以说“团队系统包含……,我的直接工作集中在……”。
  • X1 用事故、权衡、代码和结果展开;X2 先说明接口位置;X3 明确是源码复盘。
  • 可以把团队模块学成自己的能力,但不能把团队提交改写成自己的历史。
  • 面试深度最终来自业务约束、状态与数据设计、失败模式和取舍,而不是背出类名。