【游戏客户端】浅谈装备系统

                                             【游戏客户端】浅谈装备系统

      大家好,我是Lampard~~

      不知道大家一开始接触到游戏里面的装备系统是什么时候,什么感觉。对于我来说,我第一次清晰认知到游戏里面的装备,是我小时候玩DNF。那时候还是老版本,一个紫色的墨竹手镯,粉色的梵风衣,拉风的魔剑,深渊里面的蓝天白云......在我看来装备是非常🐮皮的一样东西。

    (下面的DNF图百度得来仅展示使用,侵删)

     魔剑阿波菲斯

       我也沉迷在强化增幅凑套装中不能自已。在入职半年后,我接到的第一个大需求就是给项目增加一个类装备的一样东西--宝物系统,它是单独存在,但是也能对角色属性产生影响。要类比的话,大概就像是DNF里面的称号。能够接到这个需求我还是十分兴奋的,然后我大致陈述一下我完成装备系统的过程,供大家参考~

    (1) 把新装备系统兼容到通用道具中

      无论是装备还是碎片或者其他一些消耗品,他们都统统属于道具,要存放在背包里面。所以我们如果要创建一类新的道具首先就需要把它兼容到我们原有的道具体系中,兼容过程不表大家可以根据自己的项目结构进行处理。当我们兼容成功之后,我们的背包类就多出了一个页签,里面展示的是我们所有的宝物道具。

    (2) 审视需求单,把功能分成战斗相关和非战斗相关两种

      我的主管曾经和我说过,当你要完成一个需求的时候,思考和编码是同样重要的,拿着功能就去过很容易就会踩中自己写的坑里面。所以我的第二步就是把需求单中简单的东西先拎出来,把战斗相关复杂的东西放到后面去做,按部就班。

      宝物系统除了能够在背包中展示之外,还拥有单独的界面,里面包含着它合成,分解,重铸属性,上阵,图鉴等功能。宝物在上阵之后还存在着战斗力的影响以及战斗中buff的加成和技能的释放等等的问题。

    (3) 非战斗部分功能

    图鉴

      我们把非战斗的功能一看,诶!好像图鉴好是最容易做的。因为它只是把所有的宝物按类别展示出来。这种UI我们只需要用一个listView把我们的所有的图鉴item类,根据选择的类别做一次遍历push进去就行了。每个图鉴item类还有已获得和未获得状态,这个也简单,只需要在遍历插入的时候根据服务端下发的数据判断一下即可。就这样我们就完成了非战斗部分的5分之一功能了。

   合成&分解

    合成和分解的原理一样,都是通过查表找到完成功能所需要的的原料和产出,比如说合成一个宝物需要10个碎片,分解一个宝物产出6个碎片等等。我们把界面分成两部分,一个是合成/分解的原料区,一个是合成/分解的产出区,给合成/分解的item类添加触摸事件,每一次点击都会刷新原料区和产出区即可

    如果我们的原料不足我们可以有一些指引和提示,而当我们原料充足的时候,只需要把原料的信息上行给服务端,然后根据服务端回来的协议播放特效,展示结果即可。这里有点像我们之前的抽奖系统的抽奖过程,值得一提的是,我们做客户端的在这种情况下,需要严格依赖服务端的协议来执行操作,比如说假如玩家在点合成的时候刚好进电梯没信号,那么我们不能主动读表展示合成的结果,不然就会出问题了

   在展示完结果之后再刷新一下原料区和展示区就可以啦,这样子我们非战斗类的功能就做了一半了。

    重铸属性

     我们每一件宝物下会根据资质不同带有不同数量的属性,这些属性的数值是可变的,就像DNF里面同一个装备有分最下级,下级,中级,上级,最上级一样,他们同一属性的属性值都是不同的。对于非战斗部分来说,我们只需要根据服务端下发的协议数值展示上去即可,这块难的还是在战斗的部分,因为我所处的项目一开始是不支持随机属性的。

    重铸的时候我们还可以锁住牛皮的属性,对于客户端来说,也只是记录锁住的位置,重铸的时候一起发给服务端即可。所需要额外做的大概就是锁属性需要额外的花费,我们需要对这些花费进行额外的判断,不足就让玩家去冲钱哈哈哈哈哈哈哈~

   同理,重铸成功后我们只需要刷新属性的展示界面即可。

  上阵

   我们每一类的宝物都有3个栏位,就是说最多可以上阵同类三个宝物。每一个栏位都有自己的解锁条件,我们需要把这些解锁条件填在表中,然后再根据表里的内容判断相关模块是否已经达到解锁条件。达到我们就弹出上证界面,里面是背包中的所有宝物,我们只需要按照资质对宝物进行排序,然后分出一块展示宝物的属性让玩家进行判断即可。

   因为我们宝物相关的几个功能都分布在同一个层中,那么我们需要注意,如果发生了合成,分解要触发事件,刷新可以上阵的宝物,不然就会出现报错。当玩家点击上阵之后我们要刷新界面以及对玩家整体的战斗力进行计算。

  至此我们非战斗类的所有功能都已经完成。

 (4) 战斗部分功能

     战斗部分能够和大家分享的不多,我只是在计算战斗力的时候,公式中增加了对宝物的计算。然后在战斗开始前下发战斗buff,战斗技能的时候,我需要把随机出来的数值插入其中,仅仅是修改了一些数据结构大多是 沿用项目原有的功能。等我真正的接起一个战斗的大需求才和大家分享哈

至此我们宝物所有功能都已经完成。

 

说在最后:

       在整个系统完成的过程中,我觉得有两块是十分重要的:一个是安全性问题:上文也有提过,我们在进行合成分解升级的时候,一定一定要根据服务端的协议进行操作,不然会造成数据错乱问题大大的。还有就是我们为了减轻服务端压力,不会每一次进行操作后都让服务端把全部宝物数据进行下发,仅仅是下发数据有变化的宝物数据。所以当回协议之后,我们客户端要对数据进行刷新,不要这边刚被分解的宝物又拿去上阵了结果报错了。另一个是玩家体验方面,如何对宝物做好异步加载。不然身上几百个宝物砸下来,如果一次性加载的话,那酸爽QAQ......关于异步加载我会另出一篇博文分享,大家敬请期待。

   

好的,今天的分享就到这里,谢谢大家~

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Lua游戏客户端加解密是指在游戏客户端中使用Lua程序对游戏数据进行加密和解密的方法。这种加解密方法通常用于保护游戏数据的安全性,以防止游戏数据被恶意攻击者窃取。 在实现Lua游戏客户端加解密的过程中,可以采用各种不同的加密算法,如DES、AES等。这些算法可以保证游戏数据在传输过程中的安全性,防止数据被拦截、篡改、窃取等恶意行为。同时,加密算法还可以在服务器端对游戏数据进行解密,保证数据的一致性和正确性。 需要注意的是,Lua游戏客户端加解密需要谨慎使用,因为过于复杂的加密算法可能导致游戏客户端程序变得过重和过慢,从而影响游戏的体验。因此,在应用加密算法时需要平衡安全性和性能,尽可能保证游戏客户端的流畅性和稳定性。 ### 回答2: 对于lua游戏客户端加解密,我们可以采用对称加密算法进行处理。常用的对称加密算法有DES、AES等。在使用加密算法之前,我们需要先生成一个密钥。生成密钥的方法可以是手动输入或者自动随机生成。对于手动输入的密钥,可以通过开发者在游戏代码中指定密钥的方式进行,而对于自动生成的密钥,可以采用一些加密算法来生成。 在游戏代码中,我们可以在需要加密的地方调用加密函数,将需要加密的数据和密钥传入加密函数中,加密函数会针对数据和密钥进行处理,并返回加密后的数据。解密也是类似的过程,只是需要调用解密函数并传入密文和密钥。 除了对数据进行加解密处理之外,为了增强加密的安全性,我们还可以对加密后的数据进行编码。常用的编码方式有base64、hex等,这样做可以增强数据的混淆度,防止黑客进行猜解。 当然,在进行加解密处理时,需要注意的是密钥的安全性问题。密钥一旦被泄露,整个加密系统将失去其安全性。因此,在游戏代码中,开发人员应该将密钥进行封装,仅提供给有权限的用户来进行使用,防止密钥被泄露。同时,还需要定期更换密钥,以增强加密的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值