短 ID hash 映射的问题
💡
原文中文,约1700字,阅读约需5分钟。
📝
内容提要
作者讨论了游戏开发中物品ID的持久化问题,提出了多种解决方案。最终,作者提出了一个简单的解决方案,即在存档中额外放置一份ID映射表,根据该表动态绑定ID。
🎯
关键要点
-
游戏开发中物品ID的持久化问题导致存档不稳定。
-
使用自增ID分配物品类型,但会导致ID不稳定。
-
设计16bits ID以节省时间和空间,但分配复杂。
-
C和Lua之间共享配置数据需要一个cache模块。
-
物品属性在Lua中配置,运行时不变。
-
16bits ID可能发生hash冲突,最终结合自增算法赋予ID。
-
开发迭代周期缩短,存档失效影响开发。
-
存档失效主要因版本更新导致ID重新排列。
-
讨论了几种解决方案,包括人工指定ID和增加ID位数。
-
人工指定ID方案因人力不足被否决。
-
增加ID位数可能导致性能浪费,且维护困难。
-
存档数据升级机制实施难度大,需补充元信息。
-
最终方案是在存档中放置ID映射表,动态绑定ID。
-
通过延迟生成ID,加载存档时根据映射表赋值。
➡️