小鸡模拟器着色器预编译上线:新场景卡顿帧降 71%
2026 年 10 月 27 日,小鸡模拟器上线着色器预编译与本地缓存。安装包内置 4.2 万条常用管线,覆盖高频作品的 87%,二次启动省下 2.6 秒,进入新场景的卡顿帧下降 71%,缓存占用 12 MB,可在设置里手动清理。
着色器编译卡顿是模拟器最难解释的问题之一:玩家第一次走进某个场景,画面会停一下,之后再来就正常。停的那一下是 GPU 在编译管线,耗时 8 到 40 毫秒不等,连续编译几条就变成肉眼可见的卡顿。帧率统计里这类卡顿只占很小比例,体感却最明显。
为什么会卡:第一次见到就要编译
每个新的材质组合都要生成一条管线,游戏里的光照、雾化、透明与纹理格式交叉起来,一款作品可能有几千种组合。旧版在运行时按需编译,第一次遇到就等,场景切换时连续遇到就连着卡。预编译把这部分工作提前:安装包带一份通用缓存,首次启动时按设备 GPU 型号补齐差异部分,之后直接从本地读取。
技术负责人罗启年说:「玩家不会去看卡顿帧占比,他们只记得进新场景那一下顿。我们把编译从玩的时候挪到装的时候和启动的时候,代价是安装包大了 9 MB。」缓存按驱动版本校验,驱动升级后旧缓存自动失效,重新编译一次。
实测:启动、卡顿与缓存命中
灰度覆盖 9 款机型、120 款作品,累计 1600 小时。数据:二次启动从 3.9 秒降到 1.3 秒;进入新场景的卡顿帧占比从 2.4% 降到 0.7%;单次最长停顿从 62 毫秒降到 11 毫秒;缓存命中率 93.6%;缓存体积 12 MB,清理后首次启动会重新生成;预编译阶段 CPU 占用峰值 38%,持续 4 到 7 秒;安装包体积从 86 MB 增至 95 MB。
命中率之外的 6.4% 集中在三类情况:玩家自行替换了纹理包、使用了非官方滤镜、以及驱动版本与缓存不匹配。这三种情况都会退回按需编译,体验与旧版一致,不会报错。
缓存怎么来、怎么清
缓存分两层:一层随安装包下发,只读;一层在本地增量生成,可写。两层按管线哈希合并,重复的只保留一份。设置页的存储一栏能看到缓存占用与最近一次生成时间,清理后不影响存档与游戏库,只是下次进游戏会慢一点。缓存不上传,也不包含任何游戏内容。
客户端负责人方竞舟补充:「我们刻意没做云端共享缓存,不同设备的驱动差异太大,共享反而容易出问题。本地生成虽然慢一点,但结果是确定的。」后续版本会把预编译放到首次启动的后台任务里,玩家可以先玩已缓存的部分。
iOS 端的差异与后续安排
iOS 不允许应用在后台长时间执行任务,预编译只能在启动时完成,首次启动因此多花 4 到 7 秒,界面上会显示编译进度条。第二次启动同样走本地缓存,耗时可回到 1.5 秒左右。缓存有效期与驱动版本绑定,系统更新后需要重新生成一次,这一点在设置页有提示。
安卓端的预编译已经放到首次启动的后台任务里,玩家可以先玩已缓存的部分,剩余部分在空闲时补齐。后续计划把这套机制搬到桌面端,Windows 与 Mac 的驱动版本更稳定,缓存命中率预计能到 96% 以上。团队也在评估把缓存做成可迁移的,换设备时不必重新生成。
缓存按游戏分别统计,设置页能看到每款作品的命中率与最近一次编译时间,命中率低于 80% 的作品会标注原因。玩家更换渲染后端时,缓存需要重新生成,客户端会在切换前提示预计耗时,避免误以为卡死。预编译不改变画面效果,也不改变帧率上限,它只影响第一次遇到某条管线时的等待时间;已经在旧版玩过的玩家,升级后第一次进游戏仍会补一次缓存。缓存文件按版本号分目录存放,升级客户端不会覆盖旧目录,旧目录在下次启动时清理,最多保留两个版本。缓存不随账号同步,换设备后需要重新编译一次;同一设备更换系统版本时缓存也会失效,客户端会先跑一遍预编译再进入游戏。



玩家评论(5)
进新场景不顿了,这个改善比帧率数字直观多了。
安装包大了 9 MB,能接受,换来的是每次进游戏都快。
我换过纹理包,命中率确实低,不过也没报错。
清理缓存后第一次进游戏慢了几秒,后面正常。
建议把缓存状态显示得明显一点,现在要找半天。