有个做了四年 Unity 的朋友来改简历,开口挺自信:「我战斗、背包、社交、活动都做过,还带过一个实习生。」
简历打开,全是这种句子:
负责战斗表现与技能编辑器相关功能;负责背包与仓库系统;优化过项目性能;熟悉热更新与资源管理。
我问他三个问题:战斗表现的帧时预算是多少?背包打开时内存峰值多少?上一次热更事故你怎么定责的?他其实都能答——技能全屏特效曾经把中端机打到 22ms;背包用了错误的全量刷新导致 GC Spike;有一次灰度热更因依赖环回滚了两个小时。
但简历上,这些全被「负责」「优化过」「熟悉」稀释成了空气。
中级游戏客户端的简历关卡,不是证明你会引擎,而是证明:你能在帧时、内存、包体、热更稳定性这些硬约束下,把一个系统扛到可运营。
这篇文章写给谁
中级客户端大致对应 3-5 年,或独立负责过至少一个中等复杂度系统、跟过完整上线/长线版本的同学。面试官默认你会写功能,开始额外看这些:
- 你有没有清楚的系统边界与接口约定(对服务器、对 UI、对美术资源规范);
- 你是否按预算做事:30fps/60fps 目标、内存水位、包体增量、热更包大小;
- 线上出了问题,你能不能定位到资源、逻辑、渲染、还是热更链路;
- 你能不能把一次取舍讲清楚:特效表现 vs 帧时、便利加载 vs 包体、快速热更 vs 稳定性。
下面六个维度,专门对付「看起来很忙、读完没印象」的中级简历。
一、系统 Ownership:写边界,不写系统目录
改前
负责战斗表现系统设计与开发,包括技能特效播放、受击反馈、镜头与 UI 飘字,配合策划持续迭代。
改后
连续 3 个版本 Owner「技能表现管线」(Unity):输入为技能时间轴配置 + 特效/音效资源,输出为可预测的表现事件(命中帧、结算请求点、镜头回正)。
约束:中端机战斗场景 CPU 帧时预算 16ms(60fps),技能高峰期允许短时到 18ms。
关键决策:禁止技能预制在命中帧同步 Instantiate;统一走表现对象池;镜头抖动与全屏闪白加「同屏最多 1 路」限流。
结果:技能高峰段 P95 帧时从约 21ms 压到约 17ms;表现层导致的战斗卡顿工单下降(版本对比可讲)。与服务器约定命中校验以逻辑帧为准,避免表现层抢结算。
Ownership 的标志是:出问题找你,你能说清预算和接口。
二、帧时与渲染开销:预算思维,而不是「优化过」
改前
优化过主城与战斗性能,降低 DrawCall,提升流畅度,熟悉 URP 与合批。
改后
主城改造版本中,中端 Android 目标 30fps(帧时 33ms)。优化前主城同屏活动摊位 + 过场 NPC 时 CPU 帧时均值 38ms,DrawCall ~520。
动作:静态摊位合并网格;NPC 远距离用低模 + 关闭阴影;UI 与场景分层渲染顺序调整,减少 GrabPass/全屏特效误开;对 TA 输出「主城特效 Overdraw 热力」规范。
结果:同机型主城均值回落到 29–31ms,DrawCall ~330;后续活动准入增加「主城同屏特效预算表」。
中级面试官喜欢追问:你怎么知道是 CPU 还是 GPU?你怎么防止下个版本又涨回去? 预算表和规范就是答案。
三、内存与包体:写成策略,不只写压过一次图
改前
参与包体优化,将安装包减小 XXMB;关注内存泄漏与资源卸载。
改后
负责「活动资源进包策略」一季运营:活动资源默认走热更分包,仅首包保留登录与主循环必需。
案例:春节活动初版把 3 套高模时装打进首包,Android 包体暴涨约 45MB,4GB 机型进活动后纹理内存顶穿。
动作:时装改为按需下载;ASTC 档位分层;活动退出强制卸图集;加编辑器检查「首包白名单」。
结果:该版本首包回落约 40MB;活动内存峰值可控;一季内同类首包误入被检查拦住 6 次。
说明:整包商店分包策略由资深同学拍板,我负责活动链路执行与门禁。
中级很加分的一点是:你知道哪些决策是你的,哪些是协作拍板的。
四、热更与线上稳定性:灰度、回滚、防再发
改前
负责热更新系统维护,支持 Lua/配置/资源热更,保障版本快速迭代。
改后
Owner 活动配置 + UI 预制热更链路(Addressables):灰度 → 全量 → 失败回滚。
事故:一次皮肤预制引用了战斗 DLL 里新增类型,低版本客户端热更后崩溃率升高。
定位:崩溃堆栈 + 热更版本号关联,确认是兼容性而非资源损坏;立即回滚该 Bundle,改为兼容字段方案重发。
防再发:热更包增加「最低客户端版本」闸门;CI 增加预制序列化兼容检查。
结果:回滚后 30 分钟崩溃率回到基线;后续两个大版本未再出现同类全量事故。
有上线标题就写标题名与你的切片;没有官网数据,写清你能验证的崩溃率/回滚时间即可。
五、跨职种协作:用冲突写可信度
改前
具备良好沟通能力,能与策划、美术、服务器高效协作。
改后
与策划/TA 冲突过一次「必出全屏必杀特效」:策划要 4K 序列帧,中端机 GPU 帧时直接翻车。
处理:拿出同机型 Frame Debugger 与 Overdraw 截图;给出两套方案——(A)序列帧降分辨率 + 限同屏;(B)改 Mesh 特效 + 预先烘焙灯光。最终选 B,表现评审通过,帧时仍在预算内。
结果:该技能上线后未因特效卡顿返工;后续高成本特效评审默认拉客户端性能同事签字。
协作写成取舍现场,比写成性格标签更有说服力。
六、技能深度与自我评价
技能改前
精通 Unity、C#、Lua,熟悉 Unreal、网络同步、图形学基础,了解 ECS。
技能改后
- Unity 系统:技能表现管线、活动热更资源链路、主城性能预算执行;能独立做真机 CPU/GPU 分流判断。
- 资源:Addressables 依赖分析、分包白名单、ASTC/音频压缩策略落地。
- 稳定:热更灰度回滚、崩溃与热更版本关联排查。
- Unreal(如适用):GameplayAbility / UI 一至两个子系统级经验,能讲清一次 Pak 与资产引用问题。
- 上限诚实:未独立做过帧同步战斗核心,简历不写「精通同步」。
自我评价改后
4 年 Unity 手游客户端,Owner 过技能表现与活动热更资源链路,跟过 2 款上线项目的长线版本。
习惯用帧时/内存/包体预算约束需求,处理过热更兼容导致的崩溃回滚。
目前在补强渲染管线与移动端功耗相关知识,目标是把性能门禁前移到资源生产阶段。
复盘自检清单
- 是否有明确 Owner 的系统,而不是「做过很多模块」?
- 性能条目是否带机型档位与预算?
- 是否至少有一段热更/线上稳定性故事(灰度、回滚、防再发)?
- 是否有一次跨职种取舍,而不是「沟通良好」?
- 已上线标题的贡献切片是否诚实?
- 「精通」是否已清理?不确定的深度是否主动降级?
中级客户端简历的胜负手,从来不是系统名词堆得多凶,而是面试官读完能下判断:这个人能接手一块有帧时/内存/热更约束的系统,并且出了事扛得住。
把预算、事故、取舍写回去。你不是功能流水线,你是能在约束下交付可运营客户端的人。
七、中级要会讲的「预算表」长什么样
面试官让你现场画预算时,别只说「我们很重视性能」。你可以这样写进简历辅助段(或面试口述):
| 场景 | 机型档 | 目标帧率 | CPU 帧时 | 内存告警线 | 备注 |
|---|---|---|---|---|---|
| 主城 | B | 30 | ≤33ms | 纹理峰值 ≤ X | 活动特效另表 |
| 战斗 | B | 60/30 | ≤16/33ms | 含对象池 | 技能高峰允许短冲 |
简历里只要出现「我维护过类似表,并由我执行拦截」,中级可信度立刻上去。
八、包体与热更的组合拳(中级高频)
改前
负责减小包体并完善热更新,提升运营效率。
改后
将「首包硬顶」与「活动热更」绑成一套规则:首包白名单每周扫描;活动资源默认远程;热更包体积超过阈值走拆分。某赛季时装周首包风险被扫描拦下,改为下载组上线,买量包未超标。热更失败率以加载错误码面板周报,连续两周低于基线。
九、代码与工程素养:中级被问但不一定写得好的点
改前: 注重代码质量,推动 Code Review。
改后: 战斗表现模块引入「禁止在命中回调同步 Instantiation」的 CR 规则;用分析器抽查 20 个 PR,拦截 4 处违规。新人需求验收增加「B 档真机 3 分钟战斗录屏」。结果:该模块相关卡顿回归明显减少。
十、职业叙事:两款项目怎么写才不叠床架屋
项目 A:强调你建立的表现管线与帧时预算。
项目 B:强调你迁移/复用经验——例如把对象池与热更检查清单带到新项目,使第二个项目活动事故少于第一个项目同期。
中级简历要看出成长曲线,不是两份初级经历复制粘贴。
十一、避免和「图形程序员 / TA」抢戏
你优化过 Shader 参数或合批,可以写,但边界写清:图形特性设计归 TA/图形,你负责业务侧接入与真机验收。夸大渲染管线改造是中级常见翻车点。
七、系统 Owner 的「五字段」卡片
每个你声称 Owner 的系统,用五字段压进简历:输入、输出、预算、事故、门禁。写不全就降级为「参与」。战斗表现、活动热更资源、主城性能选一张做主角,其余一行带过广度。
中级面试官会假设你会做功能;他要确认你能在帧时/内存/包体/热更失败率下做取舍,并且出事后能防再发。
八、预算表与灰度回滚:两段必须有的硬菜
预算表:机型档、目标帧率、场景、谁的特效开关。
灰度回滚:发现信号、熔断阈值、回滚耗时、兼容闸门。
只有「优化过性能」「维护热更」而缺这两段,中级叙事仍偏软。
九、协作冲突怎么写
策划要全屏必杀、中端机翻车——你用 Frame Debugger 证据给 Mesh 方案替代序列帧。写冲突、证据、方案、结果。别写「沟通良好」。
十、中级自检
- 是否有清晰 Owner 边界?
- 性能是否带档位与预算?
- 是否有热更灰度/回滚/防再发?
- 上线标题贡献切片是否诚实?
- 「精通」是否已清理?
中级客户端简历的胜负手:读完能否判断「这人能接手一块有约束的系统」。把预算、事故、取舍写回去。
写给正在改简历的你
打开你最近一次版本周报,挑一条只有你能讲清细节的事项,扩写成「约束-动作-结果」。(结合本文职级理解执行。)
找一个你曾经翻过的车,写成防再发,而不是藏起来;诚实的翻车故事往往比完美叙事更可信。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
检查 Title 与内容是否匹配:初级别写主导中台,高级别写一堆执行细节却无机制。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
把简历读给同行听,请对方只追问数字来源;你答不利索的数字先删掉。(结合本文职级理解执行。)
投递前按 JD 重排条目顺序,事实不变,权重变化——这比夜改形容词有效。(结合本文职级理解执行。)
十一、系统 Owner 五字段卡片
每个你声称 Owner 的系统,用五字段压进简历:输入、输出、预算、事故、门禁。
改前
负责战斗表现系统的开发与维护,保障版本质量。
改后
Owner:战斗表现事件总线。输入=技能表事件;输出=特效/受击/镜头;预算=中端机技能高峰 FrameTime≤18ms;事故=一次全屏必杀序列帧炸档(见下);门禁=特效白名单 + CI 包体扫描。连续两个版本无因表现超标回滚。
十二、预算表与灰度回滚:中级两道硬菜
预算表写法
输出《机型三档表现预算》:高/中/低目标帧率、主城与局内场景、特效开关责任人。策划提案超预算时,用 Frame Debugger 截图否决全屏序列帧,改 Mesh 方案;中端机回预算。
灰度回滚写法
活动资源热更:发现信号=错误日志峰值与进不去活动人数;熔断=错误率>2%自动停量;回滚耗时约 12 分钟;兼容闸门=资源版本与客户端代码最低版本对齐。一次误杀后调阈值,记录进故障复盘。
十三、跨模块扯皮:写你如何用证据收口
改前
具备良好沟通能力,能协同策划美术推进需求。
改后
策划坚持全屏必杀,中端机翻车。我提供 Frame Debugger 与真机录屏,给出「保留震感、改 Mesh + 震屏」折中方案并签字进需求变更。上线后该技能中端机无掉帧投诉。
十四、性能门禁:防再发比救火加分
改前
优化过包体与内存问题。
改后
推动活动资源包体门禁:增量 >X MB 阻断合并。上线前拦住 2 次超标活动;误杀 1 次后放宽规则并加白名单流程。门禁误杀率与拦截次数可一并写。
十五、中级指标与口径建议
- 系统故障导致的热更回滚次数(你 Owner 范围内)
- 预算表覆盖的机型档与场景
- CI/门禁拦截次数与误杀率
- 模块平均回归时长、阻塞版本次数
- Crash / ANR 若你参与归因需写清职责边界
十六、面试追问(中级)
- 你 Owner 的边界止于哪条事件?隔壁模块炸了你背不背?
- 预算表谁维护?策划绕开门禁怎么办?
- 灰度回滚最慢一次卡在哪?
- 门禁误杀如何给制作人解释?
- 若只能保留一条简历,你留预算、事故还是门禁?
十七、中级一页纸结构
总述 Owner 范围 → 深挖 1 个预算取舍 → 深挖 1 个灰度/回滚 → 广表 1–2 个协作系统。
中级胜负手:读完能否判断「这人能接手一块有约束的系统」。
深度维度 A:Owner 系统只留一张「五字段卡」
输入 / 输出 / 预算 / 事故 / 门禁——五格写不满就别自称 Owner。
改前
负责战斗与活动相关客户端模块,保障稳定交付。
改后
Owner 战斗表现事件总线:输入=技能表事件;输出=特效/受击/镜头;预算=中端机技能高峰 FrameTime≤18ms;事故=全屏必杀序列帧炸档一次;门禁=特效白名单+CI 包体扫描。其后两版本无因表现超标回滚。
深度维度 B:用 Frame Debugger 收口扯皮
策划坚持全屏必杀。出示 Frame Debugger + 真机录屏,落地「Mesh + 震屏」变更单并会签。上线中端机无该技能掉帧投诉。中级沟通分差:证据收口,不是态度好。
深度维度 C:门禁误杀你怎么写
活动资源增量门禁拦住 2 次超标;误杀 1 次后调阈值并建白名单流程。同时写「拦截」与「误杀治理」,才像建设者不是拦路虎。
中级胜负手:读完能否判断「这人能接手一块有约束的系统」。
中级客户端:需求变更单是你的作品
中级简历可以出现「变更单编号/标题」:谁发起、证据是什么、折中方案、会签人。这比「沟通能力强」更像 Owner。
改前
能很好地平衡策划需求与性能约束。
改后
变更单《全屏必杀降配》:证据 Frame Debugger + 真机;方案 Mesh+震屏;会签策划主美客户端。上线后该技能中端无掉帧投诉。
回归时长写进系统卡
Owner 模块平均回归从约 1.5 人日压到 0.8:补关键路径自动化冒烟。阻塞版本次数两季下降(写数)。
灰度回滚钟表
发现信号、阈值、停量、回滚耗时、复盘缺口——五格写进一条 bullet。缺钟表细节的「维护热更」一看就假。
带一个新人时你交什么
中级可写:结对清单、第一次独立热更值班、事故复核。
辅导 1 名同学独立值班活动热更;其首次值班按清单零事故。
现场微纪要(可改写进简历的八个切片)
切片 1:事件风暴
现场: 同帧特效尖峰。
动作: 合并队列。
结果: FrameTime回预算。
改前腔: 负责与「事件风暴」相关工作,认真完成,效果良好。
改后句: 针对事件风暴:同帧特效尖峰→合并队列→FrameTime回预算。口径与边界面试可讲两分钟。
切片 2:热更兼容闸
现场: 老包读新表。
动作: 最低版本闸。
结果: 兼容事故0。
改前腔: 负责与「热更兼容闸」相关工作,认真完成,效果良好。
改后句: 针对热更兼容闸:老包读新表→最低版本闸→兼容事故0。口径与边界面试可讲两分钟。
切片 3:内存夜爬
现场: 挂机涨300MB。
动作: 泄漏定位纹理。
结果: 夜爬曲线变平。
改前腔: 负责与「内存夜爬」相关工作,认真完成,效果良好。
改后句: 针对内存夜爬:挂机涨300MB→泄漏定位纹理→夜爬曲线变平。口径与边界面试可讲两分钟。
切片 4:UI与战斗抢时
现场: 技能时卡顿。
动作: 分帧构建。
结果: 局内更稳。
改前腔: 负责与「UI与战斗抢时」相关工作,认真完成,效果良好。
改后句: 针对UI与战斗抢时:技能时卡顿→分帧构建→局内更稳。口径与边界面试可讲两分钟。
切片 5:活动配置热拐
现场: 表错导致白屏。
动作: 校验器拦下。
结果: 预发捕获。
改前腔: 负责与「活动配置热拐」相关工作,认真完成,效果良好。
改后句: 针对活动配置热拐:表错导致白屏→校验器拦下→预发捕获。口径与边界面试可讲两分钟。
切片 6:机型白名单误伤
现场: 高端被降配。
动作: 修识别。
结果: 误杀工单清零。
改前腔: 负责与「机型白名单误伤」相关工作,认真完成,效果良好。
改后句: 针对机型白名单误伤:高端被降配→修识别→误杀工单清零。口径与边界面试可讲两分钟。
切片 7:Crash符号缺失
现场: 无法归因。
动作: 符号仓流程。
结果: 归因时长下降。
改前腔: 负责与「Crash符号缺失」相关工作,认真完成,效果良好。
改后句: 针对Crash符号缺失:无法归因→符号仓流程→归因时长下降。口径与边界面试可讲两分钟。
切片 8:评审预算表
现场: 策划加需求。
动作: 预算签字栏。
结果: 无签字不排期。
改前腔: 负责与「评审预算表」相关工作,认真完成,效果良好。
改后句: 针对评审预算表:策划加需求→预算签字栏→无签字不排期。口径与边界面试可讲两分钟。
口语提醒:八个切片不必全写进一页纸,挑两个最硬的深写,其余备询。深写标准是:同事听完能画出你的动作,而不是夸你的态度。
加面追问速查(game_client_engineer-mid)
- 你这条数字的分母是什么?时间窗呢? 若答不利索,把对应 bullet 降级或删除。升阶做法:把答案里的现场名词补回简历,而不是背诵更长的形容词。
- 如果遮掉职级头衔,这条还成立吗? 若答不利索,把对应 bullet 降级或删除。升阶做法:把答案里的现场名词补回简历,而不是背诵更长的形容词。
- 产物现在还在用吗?谁维护? 若答不利索,把对应 bullet 降级或删除。升阶做法:把答案里的现场名词补回简历,而不是背诵更长的形容词。
- 你没做成的边界写了吗? 若答不利索,把对应 bullet 降级或删除。升阶做法:把答案里的现场名词补回简历,而不是背诵更长的形容词。
- 同事能否只听结果复述出你的动作? 若答不利索,把对应 bullet 降级或删除。升阶做法:把答案里的现场名词补回简历,而不是背诵更长的形容词。
中级客户端加写卷:指标、改写与追问(去注水版)
1. 场景「全屏必杀炸档」× 工具「五字段卡片」× 指标「Owner模块回归人日」
这是中级客户端简历里很吃香的一种三联写法:先丢现场,再点名你用的表/器/清单,最后给指标或产物。不要把三者拆成三句空话。
改前: 负责处理全屏必杀炸档相关事项,运用专业知识提升Owner模块回归人日,团队反馈良好。
改后: 全屏必杀炸档发生时,我用五字段卡片推进:先固定现场事实(版本/门店/机型/人群任选真实),再落地可检查动作,最后用Owner模块回归人日核对。例:动作落地后相关问题在约 8 个工作日内收敛,抽检/复盘记录可指向五字段卡片第 3 节;若无量化,则写「五字段卡片被继续使用超过 12 周」。把例中数字换成你的真数,假数不如写产物。
面试追问锚点: ①Owner模块回归人日分母是什么?②五字段卡片现在谁维护?③全屏必杀炸档若再来一次,你第 15 分钟做什么?答不出就删这条。
教练旁白: 中级客户端最容易在「全屏必杀炸档」上写态度,在「五字段卡片」上写名词堆砌。逼自己只保留动作链。第 1 条严禁复述第 1 条的同一百分比。
2. 场景「热更兼容闸」× 工具「机型预算表」× 指标「灰度回滚耗时」
这是中级客户端简历里很吃香的一种三联写法:先丢现场,再点名你用的表/器/清单,最后给指标或产物。不要把三者拆成三句空话。
改前: 负责处理热更兼容闸相关事项,运用专业知识提升灰度回滚耗时,团队反馈良好。
改后: 热更兼容闸发生时,我用机型预算表推进:先固定现场事实(版本/门店/机型/人群任选真实),再落地可检查动作,最后用灰度回滚耗时核对。例:动作落地后相关问题在约 11 个工作日内收敛,抽检/复盘记录可指向机型预算表第 8 节;若无量化,则写「机型预算表被继续使用超过 19 周」。把例中数字换成你的真数,假数不如写产物。
面试追问锚点: ①灰度回滚耗时分母是什么?②机型预算表现在谁维护?③热更兼容闸若再来一次,你第 15 分钟做什么?答不出就删这条。
教练旁白: 中级客户端最容易在「热更兼容闸」上写态度,在「机型预算表」上写名词堆砌。逼自己只保留动作链。第 2 条严禁复述第 1 条的同一百分比。
3. 场景「内存夜爬」× 工具「熔断阈值」× 指标「门禁拦截次数」
这是中级客户端简历里很吃香的一种三联写法:先丢现场,再点名你用的表/器/清单,最后给指标或产物。不要把三者拆成三句空话。
改前: 负责处理内存夜爬相关事项,运用专业知识提升门禁拦截次数,团队反馈良好。
改后: 内存夜爬发生时,我用熔断阈值推进:先固定现场事实(版本/门店/机型/人群任选真实),再落地可检查动作,最后用门禁拦截次数核对。例:动作落地后相关问题在约 14 个工作日内收敛,抽检/复盘记录可指向熔断阈值第 13 节;若无量化,则写「熔断阈值被继续使用超过 26 周」。把例中数字换成你的真数,假数不如写产物。
面试追问锚点: ①门禁拦截次数分母是什么?②熔断阈值现在谁维护?③内存夜爬若再来一次,你第 15 分钟做什么?答不出就删这条。
教练旁白: 中级客户端最容易在「内存夜爬」上写态度,在「熔断阈值」上写名词堆砌。逼自己只保留动作链。第 3 条严禁复述第 2 条的同一百分比。