游戏开发论坛

 找回密码
 立即注册
搜索
查看: 27448|回复: 10

像捕鱼达人那种游戏的服务器端要怎么写?

[复制链接]

3

主题

10

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2013-10-23 11:38:06 | 显示全部楼层 |阅读模式
我主要是想知道下面几个问题:1.怎么让鱼跟客户端同步?
是服务器端直接发位置给客户端补间表现?

2.怎么样进行碰撞检测?
我想过去是这样,首选,把每个鱼给简化矩形。
然后客户端做发弹表现及碰撞检测。
如果碰到了,那么就发给服务器端
服务器端跟据子弹发射开始时间,子弹角度,鱼的矩形范围,来验证是否命中。

还是, 直接什么都跟客户端同步,包括子弹的位置也是时实发给客户端,服务器端每帧做子弹跟鱼的碰撞检测?

0

主题

6

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2013-10-24 10:13:07 | 显示全部楼层
1,动作同步,和其他的MMORPG一样,最常用的应该就是补间了。
2,碰撞检测是客户端引擎都会提供的功能, 包括矩形碰撞,圆形碰撞等, 客户端知道碰撞后,再发消息给服务端,服务端再计算各自的伤害并广播。

这块内容我也满关注的,一直没机会好好理解,希望一起研究。qq: 452071784

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2013-10-24 16:03:39 | 显示全部楼层
客户端计算!

0

主题

6

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2013-10-25 11:58:56 | 显示全部楼层
1,动作同步。比如玩家a在地图的一角,如何知道通知给哪些玩家呢
把地图分块,类似九宫格,玩家a移动后,服务端把该消息广播给玩家所在块周围的块。周围块里的玩家收到消息时,玩家a已经移动了一段距离,所以要用补间
2,碰撞检测。 客户端做碰撞检测,服务端做粗线条的碰撞检测(判断两点间是否可到达)。防止穿墙等外挂。

1

主题

217

帖子

375

积分

中级会员

Rank: 3Rank: 3

积分
375
发表于 2013-11-1 11:45:24 | 显示全部楼层
客户端计算!
服务器端每帧做子弹跟鱼的碰撞检测,是不可能的;

0

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2013-11-14 15:58:43 | 显示全部楼层
客户端计算到碰撞后,发到服务端计算伤害。

8

主题

79

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2013-11-18 12:58:25 | 显示全部楼层
我做过,做法是:服务器相信客户端发上来的子弹爆炸的位置 然后根据服务器子弹的半径和爆炸点来计算伤害 当然鱼的轨迹是服务器可推算的

3

主题

10

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2014-4-1 14:01:05 | 显示全部楼层
我都忘了在这问过问题,后面我还是在服务器端做了碰撞检测,主要是这两方面考虑:
1. 防止做弊,第一是因为我这游戏每一个子弹的得失都至关重要, 第二是因为我这子弹是有反弹的,服务器虽然可以验算是否有碰撞,但如果是要验算是子弹途中有没有其它鱼的话,就要进行与服务器端实时计算碰撞一样的计算量才可以得出,并且这样的计算还会让服务器呈现不平均的突发计算量。

2.2D多边形碰撞很简单,而且只要做凸边形检测就行了, 算法效率很高,测试后完全元压力。

2

主题

60

帖子

79

积分

禁止发言

积分
79
发表于 2014-4-15 14:28:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2015-4-25 13:38:06 | 显示全部楼层
手游估计是客户端计算的了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 03:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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