免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bobozhang
打印 上一主题 下一主题

网络游戏中的连接服务器 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-09-09 16:15 |只看该作者
gateway 压力也不会大,gateway 除了效验和转发,不做任何其他的工作。
就现在的硬件,顶得住~~~

然后你AI有AI专用服务器、寻路有寻路专用的服务器、资源有资源专用的服务器、聊天有聊天专用的服务器……

论坛徽章:
0
22 [报告]
发表于 2009-09-09 16:31 |只看该作者
原帖由 mikespook 于 2009-9-9 16:15 发表
gateway 压力也不会大,gateway 除了效验和转发,不做任何其他的工作。
就现在的硬件,顶得住~~~

然后你AI有AI专用服务器、寻路有寻路专用的服务器、资源有资源专用的服务器、聊天有聊天专用的服务器……



ai 寻路都是map 里面做的。 分开 提高的性能并不明显

论坛徽章:
0
23 [报告]
发表于 2009-09-09 16:33 |只看该作者
要校验,那就得解密吧,封包的加密解密是不是应该也在这里做,io密集可能本身cpu利用率就不是很高,做点运算也不错?

论坛徽章:
0
24 [报告]
发表于 2009-09-09 16:37 |只看该作者
原帖由 benjiam 于 2009-9-9 16:31 发表



ai 寻路都是map 里面做的。 分开 提高的性能并不明显


我的观点是, 尽量不要在server边做寻路, 而是做速度边界检查,  ai也一样。

server就类似是警察局, 当有人来报案的时候, 在去检查分析是否正确, 如果正确, 接受数据, 不正确, 拒绝。

而不是自己去轮训去做。 把大部分ai 与寻路这种比较费cpu的东西, 放到client分布去做, 因为每个client都有一个cpu,

然后server只做检查。

论坛徽章:
0
25 [报告]
发表于 2009-09-09 16:48 |只看该作者
原帖由 bobozhang 于 2009-9-9 16:33 发表
要校验,那就得解密吧,封包的加密解密是不是应该也在这里做,io密集可能本身cpu利用率就不是很高,做点运算也不错?



我见过的网络游戏加密算发都不复杂, 因为性能的原因。

通常有两种做法,

一种是逻辑无关的数据加密。 但要求运算量要很小。
二是逻辑相关的。 我比较喜欢用这种。 就是每个消息根据消息内的数据与逻辑, s11n的过程做手脚。这样基本跟正常的s11n的开销是一样的。 而且一旦被识破, update 一个补丁, 更新掉规则, 旧可以了。 游戏要经常更新的, 就不停的更新规则就可以了。


一般可以在gateway处把协议换成明文。

但我通常是这样设计, 因为经过gateway 的数据, 进来的跟出去的, 大小跟流量是不一样的, 进来的包很小, 出去的一般包很大。而且进来的包可能是不安全的, 出去的包一般认为是绝对安全的。
所以我进来的包都会解包, 然后判断是否有效。 出去的, 基本只解包头, 身体部分, 直接在数据层拷贝。 减少一次uns11n and s11n的过程。

因为我才用第2种方式加密, 所以基本是无开销的加密, 所以我不在gateway处换名文。减少gateway的压力。

论坛徽章:
0
26 [报告]
发表于 2009-09-09 17:20 |只看该作者
受教了,太感谢了!

还有点问题:你的意思是从客户端来的包在gate处全包解密,而对于发往客户端的包加密已经在各个内部server做了,gate只需要转发给对应的客户端就行了?

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
27 [报告]
发表于 2009-09-09 17:48 |只看该作者
原帖由 xhl 于 2009-9-9 16:48 发表



我见过的网络游戏加密算发都不复杂, 因为性能的原因。

通常有两种做法,

一种是逻辑无关的数据加密。 但要求运算量要很小。
二是逻辑相关的。 我比较喜欢用这种。 就是每个消息根据消息内的数据 ...



这个办法是业内普遍采用的,游戏的数据很少加密,一般只用逻辑关联性进行合法性校验

论坛徽章:
0
28 [报告]
发表于 2009-09-09 23:46 |只看该作者
原帖由 xhl 于 2009-9-9 16:37 发表


而不是自己去轮训去做。 把大部分ai 与寻路这种比较费cpu的东西, 放到client分布去做, 因为每个client都有一个cpu ...


给client做?你的意思是交给客户端每个电脑吗?这不是助长作弊和本地改内存吗,现在网络游戏的设计不是尽量不把任何关键数据放本地的吗?你交给本地客户端,那对server算法设计就要相当严谨才行,不然一不留神就飞天循地瞬移秒怪的就来了

论坛徽章:
0
29 [报告]
发表于 2009-09-10 00:56 |只看该作者
原帖由 abcbuzhiming 于 2009-9-9 23:46 发表


给client做?你的意思是交给客户端每个电脑吗?这不是助长作弊和本地改内存吗,现在网络游戏的设计不是尽量不把任何关键数据放本地的吗?你交给本地客户端,那对server算法设计就要相当严谨才行,不然一不留 ...


先更正一下我的说法, 应该算是server 与 client 结合来完成的。

游戏本来就是很复杂的东西。 不谨慎怎么能行。 呵呵。 给你解释一下你的疑问。

首先你要先弄清楚什么是数据, 什么是行为。 寻路跟ai都是行为, 不是数据。 也就是行为可以随便发生, 但是否记分, 要看server的脸色

瞬移很好屏蔽掉的, 就是根据速度 时间还有方向做个简单的计算。client上报的位置不在这个检测条件下允许下的, 可以采取拉回到上次位置。
也可采取拉回到server认为应该合理的位置。你说的情况顶多是自己骗自己。 别人看到你的状态跟自己的是不一样的。 因为server不会相信client.

简单的ai也是同样的道理。 我举个最常见的ai, 就是场景内小怪物的自动攻击能力。  这个一般分3步:

1。怪物的出现以及随几的走动
2。按一定范围巡警
3。跟中player进行攻击

步骤1是server来控制的
步骤2是client来控制, server做检查
步骤3基本也是server来控制的。

[ 本帖最后由 xhl 于 2009-9-10 01:46 编辑 ]

论坛徽章:
0
30 [报告]
发表于 2009-09-10 11:06 |只看该作者
网上这方面的资料太少了,听大家讲解感觉不错啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP