游戏开发论坛

 找回密码
 立即注册
搜索
楼主: bigdicka

[原创] 网络游戏中服务器端与客户端分别处理哪些事情

[复制链接]

40

主题

1149

帖子

1167

积分

金牌会员

Rank: 6Rank: 6

积分
1167
发表于 2009-5-25 00:47:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

先回答楼主提出的问题

“网络游戏中服务器端与客户端分别处理哪些事情,一般来说,它们之间通讯的内容是哪些方面的数据”
服务端提供的是服务,相应客户端提出的一切正确请求,包括用户登录、地图位置、信息通讯、操作处理等。
客户端提供的是显示处理和操作控制,也可以设定用来做部分计算处理工作。
一般来说,它们之间的通讯内容包括对话信息、操作指令、各类数据信息、控制指令等。

“道具人物属性的数据是存放在服务器上吧,那运算是不是在本地。”
人物属性的数据和该角色所拥有的物品道具等数据都存放在服务端的数据库服务器中,运算可放在服务端进行但这样做对服务器的系统资源占用及消耗巨大;也可以放在客户端进行,但这样做容易被修改伪造数据信息进行作弊;还可以分开放在服务端和客户端进行,但这样做需要较高的程序构架设计水平和编码能力。

“是不是说所有我能看到的听到的都在客户端上由本机计算。我走一步就向服务器发个数据,然后服务器把我的位置再发给其他玩家?”
应该说每一个涉及到其他用户获悉、判断、操作,需要其他用户知晓做出反应的操作,都需要通过服务器发送给其他玩家。当然这里也有部分操作是可以通过P2P方式进行的,这也需要较好的设计水平。

“网游一般来说数据传输量是几KB每秒呢?”
这个真不好回答,每个产品的数据传输量是不一样的,单从网络通讯技术角度这个数据量是没有限制的。但对于一个网游来说,尤其是即时制的互动性强的产品,数据量应该尽可能的小。
每秒1KB就已经非常非常大了。

40

主题

1149

帖子

1167

积分

金牌会员

Rank: 6Rank: 6

积分
1167
发表于 2009-5-25 01:52:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

再说netdragonx回帖中的问题

netdragonx在2楼提到“相对于网络游戏来说,数据传输量在一定程度上可以忽略,而更注重数据来回时间。”
这个说法本身就是问题,原因就说2点吧。
第一,数据传输量的大小将直接影响到服务对该数据量的处理,如果细说涉及到计算机原理和工作状态下的微观世界,涉及到CPU的工作频率及总线频率和时钟频率;打个吃葡萄比方比较好理解,加入整个葡萄放嘴里,吃完后吐皮和子出来,一个一个吃很容易的,如果让你一次放十个葡萄进嘴里会如何呢?括弧,我没在吃葡萄。
第二,服务器和客户之间通过网络连接,之间需要经过若干个路由,而每次客户端和服务端之间的通讯传输都可能走不同的路径,或经10个路由后到达,或经过18个路由到达。并受网络环境和条件带宽的影响甚大。在打个比方,穿越城市中心闹市区,一辆摩托车快还是一辆大卡车快?括弧,我不是司机。

3楼中前半段阐述的基本概念是正确的,后半段不正确。服务端对用户端的操作进行验证是需要消耗服务器系统资源(CPU处理运算),这个验证的过程包括了多种判断,其中最主要的判断验证是否有用加速齿轮类的东东进行作弊,更有一种判断是否使用外挂瞬移,等等等等,这些判断中进行还可能发生死锁或溢出。
而需要纠正的是,WOW中那个速度线是特效,代表的是某个角色使用了技能,而这个信息是需要告诉其他玩家的。而不是什么验证不通过就纠正回来的什么纠正机制。

4楼
“服务器端固定周期处理一次所有聊天信息,比如200毫秒,客户端送到的时候,正好上一个200毫秒过去了,于是排在下一个200毫秒的队列里。这个时候任何客户端是没办法看到聊天信息的,包括A端(假定是这么设定的,这个就是有的时候你网络卡的时候,明明按了回车,对话框却不冒出任何聊天信息的原因)。”
如果这么你会面临服务端信息数据处理的并发问题,非常容易造成服务器系统崩溃,设计程序必须要考虑极限情况的可能发生的事情,假如服务器中有1000人在同一个200毫秒内用世界频道喊出了一句话,也就是说,每个人的话被其他999个人看到,服务端就要发送给999个其他用户,总量就是999*999=998801。这将近100万条的信息发送要在200毫秒内完成。如果是一台支持2000人在线的服务器呢?4000人在线的呢?而且都要在200毫秒内完成。

5楼就不说了,重复的东西。
6楼
“至于客户端向服务器端什么时候发送消息,多少频率,那一般是个长连接,只要信息量没超过KB,影响都不太大。实际上,只要你登录以后,服务器端和客户端就一直在相互通信。哪怕你不动,服务器都会因为你有可能接受到聊天信息而不停的给你塞消息。”
有点累了,就说结果吧。这样做的结果将导致服务器的效率低下,负载严重加剧。最终导致让程序员做头疼的什么负载均衡系统。负载均衡控制。。。。。。而最终得到的效果甚微。
另外没有那个成熟的设计会采用长连接。尤其是面对众多用户可能发生的并发请求。

46

主题

1586

帖子

3523

积分

论坛元老

【游戏哲学大师】

Rank: 8Rank: 8

积分
3523
QQ
发表于 2009-5-25 10:10:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

学习了 多交流啊  多交流

4

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
QQ
发表于 2009-5-25 11:13:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

金先生真是敬业,昨天那么晚了还码这么多字,佩服。

服务器与客户端在整体上是相互紧密结合的,所涉及到的内容也很多,所以就选一个点来讨论。

“如果这么你会面临服务端信息数据处理的并发问题,非常容易造成服务器系统崩溃,设计程序必须要考虑极限情况的可能发生的事情,假如服务器中有1000人在同一个200毫秒内用世界频道喊出了一句话,也就是说,每个人的话被其他999个人看到,服务端就要发送给999个其他用户,总量就是999*999=998801。这将近100万条的信息发送要在200毫秒内完成。如果是一台支持2000人在线的服务器呢?4000人在线的呢?而且都要在200毫秒内完成。”

以上描述的状态,在成熟的MMORPG系统设计里是应该竭力避免发生的情况。如果按照这种策略来设计网游系统,就相当与网络通讯里最忌讳的广播风暴!这是任何一种现有网络设施都无法承受的崩溃极限行为,所以,在真正的大型多人在线角色扮演的网游系统实施当中,这种情况一定是会被首先排除掉的。

13

主题

146

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2009-5-25 15:49:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

我解释下我的意思..服务器.每200MS处理次.
而是客户端那里有点对点数据.直接说话.就传播出去...
不大懂为什么要删我贴

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2009-5-25 17:12:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

原来这贴还在生长啊……

1

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2009-5-25 21:24:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

学到了!程序区的同志经常来我们这边发发贴,我们也能从中了解到很多程序方面的知识!多交流,才多进步啊!

5

主题

734

帖子

735

积分

高级会员

Rank: 4

积分
735
发表于 2009-5-26 00:43:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

这算是程序区的同志们来踢馆吗?

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2009-5-26 01:12:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

欢迎策划版及水版的同志及非同志一起到程序版交流吹水

程序版的人气还是不够啊

6

主题

483

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2009-5-26 11:15:00 | 显示全部楼层

Re:网络游戏中服务器端与客户端分别处理哪些事情

显然程序对翻页不是很热衷
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-1 01:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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