我要发帖 回复

正式会员

22

主题

67

积分

0

专家分

:

私信
发表时间 : 2008-8-3 01:38:06 | 浏览 : 1097    评论 : 6
最近解决一个问题,就是一个局域网中,每台计算机的vega场景中控制一部(或一批)车辆角色的行进,同时将每一帧的车辆位置姿态数据纪录下来,并发送给其他的计算机,其他的计算机接收到数据包之后,将数据不断的按顺序存入一个队列当中,同时将从队头出列的数据应用到场景渲染中。这样,每台计算机的场景中,既可以控制自己的车,又可以看见其他计算机所控制的车在运动。实现简单的分布式
问题就在这里:对于收到的数据,每一帧都使用vgPos( )函数完成角色的定位,但该函数在复杂场景中,很容易无法和帧渲染同步,也就是说,使用该基本函数,效率低,往往外面传来的数据已经堆积如山了,这边还慢腾腾的没有用多少数据,结果导致两种情况:一是跳帧,二是越来越滞后,无法和其他计算机实现角色运动的同步。

我想过用回调函数自定义运动模式,它所提供的插值算法给了我一些启发,但具体怎么做还不清楚

cs这样的游戏是怎么实现角色同步的呢?

[ 本帖最后由 camus 于 2008-8-3 01:39 AM 编辑 ]

最近VR访客

独山子 评论于2008-8-3 11:43:11
为什么要用队列?顺序如何确定?
逆水行舟,不进则退。
camus 评论于2008-8-3 18:45:44
先入先出就行了
说白了只是存收到的数据,一边收一边用
camus 评论于2008-8-3 19:23:03
但是用得速度太慢,导致数据越堆越多
独山子 评论于2008-8-5 11:56:41
如果单纯是位置控制还倒简单些,速度慢的问题,用好一点的机器和高速网络就可以解决,用队列意义不大,及时更新,一般不需要缓存。如果加上一些逻辑控制,如一些操作时间、碰撞检测等,这在网络游戏中有很好表现,涉及到算法和网络编程的问题,希望楼主能继续搞下去。
逆水行舟,不进则退。
menghewei 评论于2008-8-20 17:28:17
ggw0122 评论于2011-4-10 19:49:20
谢谢分享

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-1-28 02:26 AM

返回顶部