游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10321|回复: 22

关于网络游戏的碰撞检测问题

[复制链接]

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2004-4-4 13:58:00 | 显示全部楼层 |阅读模式
以现在的机器配置来说服务器跑地图应该是不可能的,现在服务器应该只是数据传输,由于现在外挂比较厉害,服务器还要加上验证。

可是现在问题就出来了,碰撞检测和是否击中对手是必须要一台机器来完成,而不能由每个客户端来完成,因为这样不止因为安全问题还因为同步问题,两个人同时打一个怪物时由于网络有延迟会造成两个人都会以为是自己打死的怪物,所以必须由服务器来做碰撞或者击中检测。

矛盾:服务器不跑地图怎么和地图中的一些物体做碰撞检测(比如说树、房子、墙等)?

------------------------------------------

还有一个问题,现在一些游戏采用地图分格来检测碰撞,比如说当前这个格子有人或者怪物或者什么其他东西,就把当前格子标记为有东西(类似于true或者false)。可是我觉得这样的技术现在根本不可行啊!为什么呢?问题就在于你这个格子到底要分多大!

多大面积是一个格子?恐怕要取整个游戏中能影响碰撞检验的最小面积的物体。咱们现在简单一点,就当一个人所占的面积最小,也就是按照一个人为单位分一个格子,那么地图有多少格子呢?也就是说 (Map.Width/People.Width)*(Map.Height/People.Height) 个,一般来说地图长宽和相等,格子也是正方形,也就是 (Map.Width/People.Width) 的平方个。大家看看像天堂2这个游戏,地图有多么大,和人所占的格的比例有多大,这是多么大的数据量啊!!!光是数据量还不是问题,所有格子的检索也是非常耗时的,数据量太大,再加上网络游戏至少有一千人在线,所以这个问题更麻烦了。



有什么好的解决方法吗???

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 14:19:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

我觉得事实恰恰和你想的相反,地图数据时要在服务器上进行计算的,而且还是客户端和服务器端都要计算,就比如说碰撞检测,首先肯定要在 client 计算,然后提交到 svr, svr 根据当前所处位置进行合法性校验,如果通过则给 client 返回通过信息,如果不通过,在 client 的反应是你又回到了刚才的位置,这也是网游的普遍做法。
个人意见,仅供参考。

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2004-4-4 14:23:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

其实我不是不想在服务器跑地图,真的是不可能的。
我用我们的引擎测试,在一个HeightMap上面,跑500个Box,让他们之间互相有碰撞,机器根本就不动。这还是说在HeightMap上只有盒子,而且HeightMap还不是很大。

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2004-4-4 14:28:00 | 显示全部楼层

Re: Re:关于网络游戏的碰撞检测问题

congy: Re:关于网络游戏的碰撞检测问题

我觉得事实恰恰和你想的相反,地图数据时要在服务器上进行计算的,而且还是客户端和服务器端都要计算,就比...

还有,我觉得服务器做数据合法性验证还不如自己直接去检测。要想知道合法不合法不去计算怎么知道?如果计算了那么客户端再计算还有什么用?还不如省下时间去渲染……

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 14:41:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

服务器端只是校验你的教研合不合法,而不是进行碰撞检测。
另外我不知道你做的 DEMO 中碰撞检测是在服务器还是在 CLIENT 计算,所以不好对你的情况下结论。而且,你的机器是什么配置?不要认为网游的服务器都用 PC 服务器。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 14:44:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

还有,客户端坐碰撞检测的时间就算给了渲染也是效果不大的,本来碰撞检测就耗费不了多少时间,因为客户端只检测当前这个玩家的。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 14:45:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

此外,服务器端用得很少是 WIN ,大部分用的是 LINUX\UNIX,在操作系统上来说,运行效率就要高出很多倍。

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2004-4-4 15:27:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

现在好象还没有一个3D网络游戏的服务器端跑地图啊,就连韩国的网游制作公司都说正在研究这种方法,也许在下一代引擎中能实现服务器跑地图,类似于 FPS 游戏的 Server 端

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 17:35:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

哦,是吗?那么怪物的出现是如何实现的?怪物在指定地图的指定地点出现、行动又是如何实现的???

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2004-4-4 19:36:00 | 显示全部楼层

Re:关于网络游戏的碰撞检测问题

抛开技术细节,一个服务器只跑一个地图,或一个地图中的一半,还会存在效率问题吗?哈哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-30 02:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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