短 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,加载存档时根据映射表赋值。

➡️

继续阅读