AS3多人游戏开发—同步人物移动2
2011-08-20 18:55
281 查看
上次我们有探讨到鼠标点击的情况下,人物移动同步的问题(http://www.cnblogs.com/cnas3/archive/2011/05/28/2061028.html),今天我们看看使用方向键控制的人物移动如何实现同步。
键盘控制和鼠标控制不同的地方在于,鼠标点击我们知道我们的avatar移动的终点,在键盘控制中,我们并不知道终点,但我们可以知道一些其他有用的信息,比如运动方向,速度,当前位置,我们来看看如何利用这些信息。
假设avatar1是一个玩家1电脑上的人物,它在玩家2电脑上的表示是avatar2,玩家1按下方向键,avatar1开始运动,同时发送当前位置p1,方向,速度给其他玩家,玩家2在经过时间t之后获得信息,我们可以通过时间,速度,方向计算出avatar1当前的位置p2,p2和p1之间的差距是网络延迟造成的,我们虽然可以直接将avatar2拉到p2,但是如果p1和p2的差距太大,将会出现跳跃现象,影响用户感受,所以可以考虑通过提高avatar2的速度,在一定时间内追上avatar1,再减到和avatar1同样的速度以达到平滑的效果。在玩家2收到其他数据之前,它都会认为avatar1在同样的方向上运动,因此我们可以在数据接收的空挡预测avatar1的路径,从而达到同步。玩家1还会定时发送数据出去,avatar2在接收到新数据的时候,会重复以上的计算。
但是当玩家1突然松开方向键,avatar1停止运动,在消息达到玩家2之前,avatar2还在当前的方向上运动。它收到消息的时候,实际上已经超过了avatar1停止的位置,然后avatar2会往回运动到avatar1的位置。虽然我们知道这个现象是延迟造成的,但会让玩家感觉很奇怪。幸运的是我们有一样东西可以拿来利用,那就是—加速度。
想一想,当玩家1松开按钮,avatar1并不是立即停止,而是有一个加速度(请注意减速其实也是一种加速度,为负的加速度),慢慢停下来,在这个过程中,它有足够的时间发送消息给玩家2几次消息,使avatar2也能开始减速运动,调整自己的位置和速度,最终和avatar1停止在同样的位置。大家可能会想知道加速应该设置为多少,对此我也没有没有一个统一答案,一般你不应该让你减速的时间小于延迟。减速的时间越长,同步的越平滑,反正我一般让减速运动的时间是延迟时间的2-3倍。
请使用方向键控制下面的flash,红色表示avatar1,绿色表示avatar2.
键盘控制和鼠标控制不同的地方在于,鼠标点击我们知道我们的avatar移动的终点,在键盘控制中,我们并不知道终点,但我们可以知道一些其他有用的信息,比如运动方向,速度,当前位置,我们来看看如何利用这些信息。
假设avatar1是一个玩家1电脑上的人物,它在玩家2电脑上的表示是avatar2,玩家1按下方向键,avatar1开始运动,同时发送当前位置p1,方向,速度给其他玩家,玩家2在经过时间t之后获得信息,我们可以通过时间,速度,方向计算出avatar1当前的位置p2,p2和p1之间的差距是网络延迟造成的,我们虽然可以直接将avatar2拉到p2,但是如果p1和p2的差距太大,将会出现跳跃现象,影响用户感受,所以可以考虑通过提高avatar2的速度,在一定时间内追上avatar1,再减到和avatar1同样的速度以达到平滑的效果。在玩家2收到其他数据之前,它都会认为avatar1在同样的方向上运动,因此我们可以在数据接收的空挡预测avatar1的路径,从而达到同步。玩家1还会定时发送数据出去,avatar2在接收到新数据的时候,会重复以上的计算。
但是当玩家1突然松开方向键,avatar1停止运动,在消息达到玩家2之前,avatar2还在当前的方向上运动。它收到消息的时候,实际上已经超过了avatar1停止的位置,然后avatar2会往回运动到avatar1的位置。虽然我们知道这个现象是延迟造成的,但会让玩家感觉很奇怪。幸运的是我们有一样东西可以拿来利用,那就是—加速度。
想一想,当玩家1松开按钮,avatar1并不是立即停止,而是有一个加速度(请注意减速其实也是一种加速度,为负的加速度),慢慢停下来,在这个过程中,它有足够的时间发送消息给玩家2几次消息,使avatar2也能开始减速运动,调整自己的位置和速度,最终和avatar1停止在同样的位置。大家可能会想知道加速应该设置为多少,对此我也没有没有一个统一答案,一般你不应该让你减速的时间小于延迟。减速的时间越长,同步的越平滑,反正我一般让减速运动的时间是延迟时间的2-3倍。
请使用方向键控制下面的flash,红色表示avatar1,绿色表示avatar2.
相关文章推荐
- (转)AS3多人游戏开发—同步人物移动1
- (转)AS3多人游戏开发—同步人物移动2
- AS3多人游戏开发—同步人物移动1
- AS3多人游戏开发—同步人物移动
- 游戏开发之--简单的人物走动和地图移动(一)
- Go游戏服务器开发的一些思考(三十八):MMO游戏移动同步
- Android游戏开发实践之人物移动地图的平滑滚动处理
- 从零开始学AS3游戏开发【一】 响应键盘移动的方块
- 江苏手机街机捕鱼游戏开发移动电玩城新品海王2豹子机抢占玩家市场
- 浅析移动平台游戏开发
- javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
- 移动游戏开发的五个技巧
- 学习AS游戏开发最近的感想——[2013.9.25]
- 开发者必须mark的一款2D移动游戏开发工具
- 如何在印度选择最好的移动游戏开发公司
- PuTsangTo-单撸游戏开发02 测试场景与单轴移动
- android游戏开发框架libgdx的使用(十三)—TiledMap中的角色和角色移动
- 移动游戏开发图书推荐
- 分析以HTML5开发移动游戏的可行性
- 实现在SurfaceView上移动游戏人物