想问下游戏中关于怪物道具掉落到拾取这一系列过程是如何实现的。

houshitian 2017-01-16 04:57:26
其实我是游戏开发小白,这两天突然想了解下关于网络游戏怪物掉落方面的知识。
我希望有谁能给我讲一下
“怪物被击杀→系统选取物品→掉落物品→玩家拾取物品”
这一系列过程中服务器是怎么接收和返回游戏数据,客户端是有什么样的操作,以及在数据交互的时候如何避免被第三方程序拦截修改等问题。
...全文
1430 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
avi9111 2017-03-16
  • 打赏
  • 举报
回复
引用 3 楼 u012163877 的回复:
恩,看着很详细,受教了,分给你了,但我还想问几个问题。 那有没有这种情况,在其中一次掉落种我截取了加密数据,在下次掉落后我继续拦截数据,但是我不需要解密,只是把上次的密文返回给客户端,会不会出现获得两种相同物品的情况?还是说只是表现改变,道具本身是无法改变的?
感觉你就是拿到个二进制代码就以为这是加密了吧,几乎我看到很多源码也是不加密的,也没那时间去搞这些花里胡哨的,我自己做的会有加密,但不是重点,真的只是随手做的,关键是服务器的健壮性,代码要写好,测试好, 因为我看过很多源码都是不加密的,所以人家不加密总有人家不加密的理由 也不见得说加密就是无敌了,你自己认为是这样而已,那些不加密的报文,也不见得拿到了就能黑服务器什么的 再举大家都懂,肯定没人说错的一个例子吧。。。。。。。。。。 马云其实真不怕把他那发家致富的方法告诉你,他还对13亿全中国人说了很多,但真正发财的也只有他一个而已 他说的那些方法,说了很多屁话,都不是重点,他其实是说了大部分,但有小部分他没说的。。。。。
avi9111 2017-03-16
  • 打赏
  • 举报
回复
物品跌落的时候服务器已经有记录了。。。。 基本拾取之前,服务器还是要做判断检测 做法就各家不同,没见过2个公司是同一种做法的,就算是A公司抄B公司也不可能抄完全 我们要是从A公司跳到B公司,基本都会感觉的很大不同,2个团队的做法不可能完全一样 但这些基本元素的必须要有考虑的,要是这些逻辑都没有?我!……%……%@……@@ ,再做个2年吧,你就有了。。。。。 (程序员的基本修养) 所谓的漏洞都是人为的,对的就是你做出来 举个例子吧,一般我不想比喻的。。。。 你写检测的时候通过ID检测,一般的重复提交不会被接受了,但是少了时间戳或者ID可能被重复,破解者(我是排不上号),分析出你这个ID得规律,就不停复制这个ID做攻击,你服务器吃不消 (基本上,我不会去搞你一个账号或者一个物品,当然也不排除老板出钱请我去搞某个账号,但我建议老板有钱怎么不整个服务器买下来??) 你写的检测ID的代码不完善,就可能被我分析到和利用。。。。。你把代码写好,写对了,就没问题了,想多没用,但你得不断调试 程序员都不是想出来的。。。。。
yes-hyh 2017-01-23
  • 打赏
  • 举报
回复
引用 4 楼 u012163877 的回复:
[quote=引用 2 楼 heyuhang112 的回复:] 关于安全方面,不可能百分之百地避免网络消息被截取篡改,只能尽可能加大截取篡改的难度。一般都是通过消息加密来实现的。经过加密处理后,一般不会被破解,要破解这种自定义协议的难度是相当大的,或者说几乎没人可以实现这种协议的破解,除非有内鬼,而且就算将协议破解了,若服务器没有明显的漏洞,也不是那么好搞出来有用的外挂的。所以一般的RPG类游戏,逻辑运算都是服务器,客户端只做表现,这类游戏一般是不可能出现真正意义上的外挂。
恩,看着很详细,受教了,分给你了,但我还想问几个问题。 那有没有这种情况,在其中一次掉落种我截取了加密数据,在下次掉落后我继续拦截数据,但是我不需要解密,只是把上次的密文返回给客户端,会不会出现获得两种相同物品的情况?还是说只是表现改变,道具本身是无法改变的?[/quote] 对于这种情况,只是会让客户端表现上的道具与上次一样,而且只是会影响你篡改了消息的客户端,其他客户端与服务器不受影响。至于拾取道具的具体实现逻辑都是在服务器,客户端数据与服务器数据不一致,玩家点击拾取,服务器也会判断不成功,也就拾取不起来。
houshitian 2017-01-23
  • 打赏
  • 举报
回复
引用 2 楼 heyuhang112 的回复:
关于安全方面,不可能百分之百地避免网络消息被截取篡改,只能尽可能加大截取篡改的难度。一般都是通过消息加密来实现的。经过加密处理后,一般不会被破解,要破解这种自定义协议的难度是相当大的,或者说几乎没人可以实现这种协议的破解,除非有内鬼,而且就算将协议破解了,若服务器没有明显的漏洞,也不是那么好搞出来有用的外挂的。所以一般的RPG类游戏,逻辑运算都是服务器,客户端只做表现,这类游戏一般是不可能出现真正意义上的外挂。
恩,看着很详细,受教了,分给你了,但我还想问几个问题。 那有没有这种情况,在其中一次掉落种我截取了加密数据,在下次掉落后我继续拦截数据,但是我不需要解密,只是把上次的密文返回给客户端,会不会出现获得两种相同物品的情况?还是说只是表现改变,道具本身是无法改变的?
houshitian 2017-01-23
  • 打赏
  • 举报
回复
恩,看着很详细,受教了,分给你了,但我还想问几个问题。 那有没有这种情况,在其中一次掉落种我截取了加密数据,在下次掉落后我继续拦截数据,但是我不需要解密,只是把上次的密文返回给客户端,会不会出现获得两种相同物品的情况?还是说只是表现改变,道具本身是无法改变的?
yes-hyh 2017-01-20
  • 打赏
  • 举报
回复
关于安全方面,不可能百分之百地避免网络消息被截取篡改,只能尽可能加大截取篡改的难度。一般都是通过消息加密来实现的。经过加密处理后,一般不会被破解,要破解这种自定义协议的难度是相当大的,或者说几乎没人可以实现这种协议的破解,除非有内鬼,而且就算将协议破解了,若服务器没有明显的漏洞,也不是那么好搞出来有用的外挂的。所以一般的RPG类游戏,逻辑运算都是服务器,客户端只做表现,这类游戏一般是不可能出现真正意义上的外挂。
yes-hyh 2017-01-20
  • 打赏
  • 举报
回复
玩家发出攻击(普攻、放技能等等),客户端将相应的动作通过协议(一般包括攻击类型、目标ID等等)发送到服务器,服务器进行相应的计算,然后将结果返回给客户端,结果就包括掉血,死亡。客户端收到消息后作出掉血、死亡等动作的表现。 服务器判断怪物死亡后,根据怪物ID查找掉落的相关配置,然后经过计算(一般都是根据概率随机),得出掉落的物品,然后通知客户端在某某坐标放上道具。 客户端受到消息后,做相应的表现。 玩家看到物品,点击拾取道具。客户端又构造拾取道具的消息,发送到服务器,服务器做相应判断,一般就是判断玩家坐标、道具坐标、当前玩家是否可以拾取,检测通过后便拾取物品,将结果返回客户端,客户端作出相应表现,一般情况下,这个返回的通知结果,就分为从世界中删除指定对象,在玩家包裹中增加指定对象两部。

2,535

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧