云风的 BLOG -

短 ID hash 映射的问题

今天解决了一个问题,觉得很有趣。本来想发到推特,发现一两句话说不清。所以写一篇 blog 记录一下。 我们正在开发的游戏中,会用一个 id 来表示一个游戏对象到底是什么。比如,“铁片” 是 1 ,“煤” 是 2 ,“采矿机” 是 3 …… 这样,在运行时,C 代码可以根据对象的类型方便的查询对象的属性。而对象的属性则是用 Lua 配置好,在运行期不变的。例如每燃烧一个单位的“煤”,可以产生 100KJ 的热量;一箱“铁片”有 100 个。 为了在 C 和 Lua 间快速共享这些配置数据,我还专门写了一个 cache 模块 。 问题出在 ID 的持久化上。因为游戏中的物品种类并不是特别多,出于时间以及空间性能的考量,我把 ID 设计为 16bits 。64K 种物品种类的上限看起来足够了。但 ID...

作者讨论了游戏开发中物品ID的持久化问题,提出了多种解决方案。最终,作者提出了一个简单的解决方案,即在存档中额外放置一份ID映射表,根据该表动态绑定ID。

ID映射表 持久化 游戏开发 物品ID 解决方案

相关推荐 去reddit讨论

热榜 Top10

...
天勤数据
...
eolink
...
白鲸技术栈
...
ShowMeBug
...
观测云
...
Dify.AI
...
LigaAI

推荐或自荐