游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10298|回复: 12

采用短连接的话,服务器如何对客户端发来的消息做验证?

[复制链接]

1

主题

1

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2014-6-26 08:53:58 | 显示全部楼层 |阅读模式
比如一个战斗,进战斗的时候,连接一下然后断开,直到战斗结束都没有与服务器连接,也就是说,所有的战斗逻辑都是放在客户端上的,等战斗结束了,再连接服务器,那服务器如何知道客户端发送过来的战斗结果是正确而不是外挂作弊的结果?肯定不能依赖客户端发送的数据,但问题是服务器在从战斗开始到结束都是没有参与的,而且客户端的战斗也完全靠玩家自己手动去进行,也无法在战斗开始之前就算好结果,是根据玩家自己去玩才能知道,所以我不明白短连接的话,这块服务器应该如何处理?

17

主题

583

帖子

1899

积分

金牌会员

Rank: 6Rank: 6

积分
1899
发表于 2014-6-26 17:17:03 | 显示全部楼层
你看到哪个游戏像你说的一样战斗,并且用的是短链接了?

0

主题

4

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2014-7-5 18:34:09 | 显示全部楼层
所有的战斗逻辑都是放在客户端上?现在还有这样的网络游戏?

0

主题

4

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2014-7-25 22:36:02 | 显示全部楼层
客户端发出战斗请求, 参数包括了参战卡牌,参战的状态之类的,
服务器进行战斗计算,将每回合的战斗过程,最终战斗结果发回客户端,
客户端只需要实现一个战斗录像播放系统,根据服务端发回的战斗数据,播放战斗画面即可。

0

主题

10

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2014-8-2 23:18:13 | 显示全部楼层
如果按你逻辑,即使长连接也不能保证客户端的数据是正常数据。做服务端最基本的要求是不相信所有客户端的数据。如果你计算都在客户端做了,那服务端就做点验证工作。保证客户端的数据在正常范围内。设置一个阈值控制玩家可获得的最大奖励。

10

主题

66

帖子

544

积分

高级会员

Rank: 4

积分
544
发表于 2014-8-3 11:38:50 | 显示全部楼层
本帖最后由 daemon.huang 于 2014-8-3 11:42 编辑

真得要这样做的话,可以用下面的流程:
1. 战斗开始的时候,给这个战斗分配一个Key,可以用随机值,算一个MD5之类的,把这个Key返回给Client;2. 接下来,整个战斗过程的协议用某个算法(比如,DES,TEA之类的)把Key作为秘钥加解密。


12

主题

95

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2014-8-7 21:24:28 | 显示全部楼层
建议你去研究一下coc吧。可能比较符合你的需求

0

主题

9

帖子

60

积分

注册会员

Rank: 2

积分
60
发表于 2014-10-30 22:19:36 | 显示全部楼层
客户端保存操作信息,战斗结束后将操作信息发给服务器,服务器根据与客户端相同的逻辑进行验证一下即可。
像什么刀塔英雄“应该”就是这样做的。

88

主题

2743

帖子

4227

积分

论坛元老

Rank: 8Rank: 8

积分
4227
发表于 2014-10-30 23:14:48 | 显示全部楼层
楼猪是看天书来想网络游戏服务器的设计的吧?

将你所说的代码段甩出来看看。可能你连相关代码都没看懂过或者你根本就没有看过这些核心服务器端、客户端代码!

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2014-11-19 14:45:15 | 显示全部楼层
楼主说的没错  现在大部分手游都是这么处理的 DOTA 传奇   酷酷爱魔兽  刀塔来了 全民打怪兽之类的     战斗开始的时候跟服务端通信一下     战斗结束后在跟服务端通信一下  战斗逻辑全部在客户端进行   服务端在最后做一下验证    中间战斗过程断网完全没有影响
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 19:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表