Unreal Engine 5 GAS: building an ability system right
My dash ability fired once on the client and then went silent. The bug was not GAS itself, it was touching an attribute without a GameplayEffect.
Unity Profiler: Find the Real Bottleneck, 22 ms to 8 ms
Frame time hit 22 ms and everyone blamed the shaders. The Unity Profiler capture said otherwise; here is how measuring took it down to 8.7 ms.
土狼时间与跳跃缓冲:好跳跃的十二行代码
当玩家说「跳跃手感不好」时,他们通常指的是两个缺失的功能。两个都只要半小时就能写完。
Lag Compensation: Why Your Perfect Shot Did Not Count
How server-side lag compensation is actually built for shooters: the rewind buffer, the numbers that tune it, and the point where the window has to stop.
游戏引擎中的 C++ 内存管理:谁吃掉了帧?
在帧内调用 new 会在分析器中产生约 13 毫秒的性能尖峰;通过引入帧竞技场和对象池,将峰值降低到 7.9 毫秒,并显著平滑了帧时间波动。以下是我们是如何发现并解决该问题的完整过程,包括定位问题、分析分配模式、实现 arena 分配器以及验证性能改进。
Unreal Engine 里 Blueprint 还是 C++:实测 7 毫秒开销与混合工作流的边界
Blueprint 虚拟机的开销在大多数场景里都看不见,但当每个 tick 要跑几万个节点时,它一个人就吃掉了 7 毫秒。这篇文章用实测数字讲清楚混合工作流的边界:哪些逻辑该交给 C++,哪些留在 Blueprint 里,UPROPERTY 该暴露到什么程度,以及团队变大之后合并冲突该怎么收场。
DOTS/ECS 迁移之后我学到的东西
我们把一个生产项目的一部分迁到了 ECS,帧时间下降了 34%。但收益并不来自我们预期的地方。
移动游戏优化实战:通过测量draw call与overdraw把中端安卓机上的塔防场景提升17帧的完整记录
在一台中端安卓手机上,我的塔防场景一直卡在41帧。这篇文章记录了我如何在完全不减面的前提下,在真机上测量draw call、材质数量与overdraw,一步步把同一个场景推到58帧、帧时间从24.3毫秒降到16.4毫秒,以及每一处改动究竟换回了多少毫秒,还有我建议的完整排查顺序。
用HLSL compute shader把GPU粒子系统做到一百万个:状态全留在显存的优化与实测记录
CPU端的粒子更新在四万个时就占掉主线程11.4毫秒,于是把粒子状态整体搬进StructuredBuffer,用HLSL compute shader更新,再由DrawProceduralIndirect直接绘制。文中记录线程组大小的取舍、DeadList回收机制与同步陷阱,并给出一百万粒子的实测数据。
用最简单的方式讲清客户端预测
多人联机的移动看起来很复杂。其实只有三步:预测、比较、修正。
Game engine architecture from scratch: six layers, one loop
Writing your own engine starts with getting the layer order right. Notes on subsystem order, fixed timestep simulation, and when to move to a ready engine.
URP 还是 HDRP:从目标平台、实测性能到迁移成本,完整拆解 Unity 渲染管线的选型方法与依据
目标平台清单往往已经替你做出了选择:我实测了 HDRP 在 volumetric 和 SSR 上的开销、URP 在移动端的带宽优势,以及项目中途切换渲染管线真正要付出的时间成本。
风格化光照:走出卡通渲染之后
分层阴影是所有人都知道的第一步。真正的个性藏在边缘光和阴影颜色的选择里。
NavMesh、A*与流场:让200个AI代理不再堵在城门口的游戏寻路性能优化实战
在一个200个代理同时冲向城门的攻城场景里,寻路为什么会堵死,NavMesh又在哪些地方悄悄骗了你,以及A*和流场之间那条分界线到底划在哪里。本文只依据性能分析器给出的真实数据,从NavMesh几何、每帧请求预算一直讲到local avoidance参数,给出一条可复现的排查顺序。
Dedicated Server 游戏架构实战:单容器承载 48 名玩家,权威服务端设计与真实成本测算
我们把权威服务端从游戏后端中拆分出来,重写了匹配队列与房间分配逻辑,并按同时在线玩家人数核算了真实成本。文中给出单容器承载 48 名玩家的资源实测数据、按空闲会话数而非 CPU 占用率扩缩容的做法,以及区域选择、排空下线和何时用中继方案就已足够的判断标准。所有数字均来自一个 8 人竞技射击原型的线上实测。
为什么你的角色控制器感觉像在滑动
当玩家说角色控制器感觉滑溜时,他们实际上在描述四个独立的 bug:刹车、地面检测、坡度处理和插值。
行为树还是 Utility AI?
两者都可能是正确答案。决定因素是你的敌人需要同时权衡多少件事。
Game development CI/CD: why nightly builds change everything
Setting up build automation on a small team took five days; the average lifetime of a broken commit dropped from 2.5 days to 9 hours and release days calmed down.
Publishing a game on Steam: what to do, and when to do it
On my first game I opened the store page three weeks before launch and shipped with 480 wishlists; on the second I built the calendar backwards.
工作室真正在游戏程序员作品集里看什么
我也坐过面试官那一侧。那些让人眼前一亮的作品集里,有几件事反复出现。
1 条结果