卡牌游戏之客户端数据存储

  最近在捣鼓一款回合制卡牌类游戏,第一次制作这类游戏,也没有什么经验,全凭着需求在不断迭代。从初期版本到现在,变化最多的地方就集中在对卡牌数据的维护这里。
  最开始设计的时候,我是采用客户端读取卡牌文件名的方式进行的,也就是说每种卡牌的属性都包含在文件名中,客户端读取的时候顺便解析出来并保存到哈希表中。比如设计一种格式【card_12S3H4.png】,1代表ID,2代表类型,3代表移动距离,4代表伤害值。当时采用这个模式的原因是考虑客户端通过解析字符串,效率也不会太低,而且不用总是服务器,降低网络传输量。
  但是这种设计模式很快就被我给放弃了。首先便是安全性问题,玩家完全可以通过修改卡牌文件名的方式来修改相应的数值,针对这个问题,当时是想在服务器那边可以做一次数值正确性的安全验证,但是如果这样做安全验证倒不如数据直接由服务端读取然后发送给客户端来的效率高。是的,这样子所有数据的读取只需要服务端一次完成便可,客户端也省去了解析的麻烦。为了便于服务端的开发,最后把服务端对卡牌数据的解析工作也省略了,直接由策划配表来完成并导入数据库即可,是的,这才是正确的做法,所以也就出来了上面那边博客文章。博客地址
  但是,对于客户端方面,如何存储数据这个问题还是存在的。客户端对于用户的卡牌可以根据服务端每次推送过来的ID直接展示相应的卡牌即可,但是,对于卡牌的数值信息玩家也是需要看到的,如果玩家每点击一张卡牌都去服务器请求获取一次数值,这个会很大程度上增加服务器的压力,后来变采取选择性加载存储的方式来优化处理。也就是每次卡牌的请求结果都保存到客户端的内存中去,下次玩家点击的卡牌信息如果存在于内存则不再发送服务端请求。(如玩家组卡界面时便会异步载入一部分卡牌数据,在战斗界面这部分数据便不用再次请求)。这样子设计能降低一部分网络使用,但是我觉得还可以用本地数据库来保存,这样子可以保证每次启动游戏时都不用频繁去访问服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值