1 背景
道具时效性性问题在游戏世界中很普遍。他的用处场合主要集中在“时装”等一系列需要进行数量控制的道具上面。他们的功能一般也是比较特殊的。对于时效性的道具都是在产生该道具的时候便计算出该道具的消亡时间。然后通过一些类似于心跳的东西来控制其生命周期,在该销毁的时间点上对其进行销毁操作。
2 解决方案
- 在每个玩家身上绑定一个时效性道具的索引列表。由该索引列表来维护本玩家身上的所有时效性道具。
- 在物品被创建时就要生成出该物品所有的创建时间和结束时间。并在玩家与外界进行物品交互时,同时来维护索引列表
3遇到的问题
- 怎样来维护该索引列表?
首先加入索引的地方:第一, 在玩家切换场景或进入游戏时,遍历玩家身上的物品。如果发现是时效性道具就加入到时效性索引列表中去;第二,在玩家拾取到物品时,修改时效性索引;第三,任务获得时;第四,玩家之间的交易,记得要在另一个玩家身上抛出时效性道具。第五,从npc处获得物品。第六,礼包活动。。。。(所有有可能然物品出现在你包裹中的情况都是需要考虑的。这时一个让物品进入你包裹的门面接口将非常重要,你只需在该门面中去修改一下代码即可。否则,悲剧。。)
其次删除索引的地方:同上,提供一个销毁物品时的门面。在该门面中去销毁物品。同时来维护索引。
正式基于上面的设计,时效性道具的索引就不用持久化了。都是在玩家登陆游戏时动态生成的。保证了时效性索引的正确性。
- 结束时间的维护?
在物品创建时,就根据其时效性长短来动态生成时效性物品创建时间和销毁时间.游戏中会有个心跳系统,通过心跳来控制.当跳动到玩家身上时,去遍历所有的时效性物品的心跳,如果达到时效性就销毁,否则继续.淡然在物品的心跳可以进行调解,延长验证时间来提高效率.