优化一款运营了11年的游戏的不断增长的平衡性 笔记

优化一款运营了11年的游戏的不断增长的平衡性

《机甲战争》为其海量内容存储了名为“平衡”的游戏数据。这些平衡数据被划分为元游戏(meta)和核心游戏(core)玩法,并为默认模式和战役模式(Skirmish modes)提供了单独的设置。经过十一年的发展,《机甲战争》积累了大量内容,导致平衡文件体积庞大。最初,元游戏平衡文件大小为 9.2 MB,核心游戏平衡文件大小为 13.1 MB,玩家总共需要下载 44.6 MB 的数据。为解决此问题,开发团队分析了平衡文件的大小,发现字符串占了很大一部分。他们开发了识别重复字符串的工具,发现重复字符串非常普遍。解决方案是为每个平衡数据创建一个唯一的字符串存储,用索引替换直接的字符串实例。这大大减少了字符串的使用计数,提高了效率。进一步的优化包括重构数据协议,从使用字符串键的 MessagePack 迁移到使用数字键的二进制字节数组。同时还移除了空的集合,进一步减小了数据体积并缩短了处理时间。新功能被置于开关之后,允许同时支持旧版和优化后的平衡数据。通过反射进行严格的测试,确保了两个平衡版本产生相同的值。这些优化措施带来了显著的文件体积减小,元游戏平衡文件降至 1.28 MB,核心游戏平衡文件降至 2.22 MB。反序列化时间也得到了极大改善,客户端内存占用也随之减少。团队得出结论,细致的数据管理和冗余的消除,尤其是在字符串方面,对于高效的数据传输和成本节约至关重要。
CdXz5zHNQW_McKynR1tiz.jpeg