• 全部
  • 问答

请问游戏中这种情况怎么避免,想了很久了,一直无解,希望能得到个结果

yantieyia 2005-03-29 06:00:54
如果是一个网络游戏中有200人,一个屏幕上有50个人,那么当这50个人同时移动时,每个人移动服务器都要在200个人中刷一次这个人的移动需要通知哪些人,然后向这50个人发送消息,这个过程就需要执行50次,如果是一个航行类游戏,每秒移动100个像素,天....这个传输量,如果每移动10个像素才发送一次,那就会看见其他人的航行是抖动的,到底该怎么解决呀...
...全文
139 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hxblvc 2005-04-27
学习.
回复
gaoxianfeng 2005-04-26
现在 有好些网络游戏里
会出现“瞬移”“卡”等现象
这都是 网慢 加 服务器处理慢造成的

瞬移大部分是 丢了路径上点信息 或是到达太迟 计算时以起点 终点 计算 丢了中间点
回复
gumbour 2005-04-24
网络游戏服务端并不是每个用户有个动作就要向其他用户广播,而是周期性的广播,这样一次广播就可以把一定时间段的所有用户动作传递给所有用户,这个周期要把握的好,慢了数据量小但是游戏卡,快了数据量大导致网络壅塞同样会卡,所以要根据服务器的网络的配置选择合适的周期。
航行类游戏有的也是按坐标处理的。或者服务端和客户端仅仅同步方向动作时间而已,这样客户端只需知道哪个时间段,哪个Object像哪个方向move,哪个时刻改变方向,哪个时刻发射子弹。再周期性的同步坐标就可以了,服务端和客户端数据不一致则认为客户端作弊。
另外我说的广播不是网络里面真正的广播,现在的网游服务器绝大多数采用TCP,所以实现的时候要给所有用户都发一次。这就要把某个周期内和某个用户相关的信息发给这个用户,而不需要发送所有的信息。
回复
oyljerry 2005-04-23
1 服务器可能需要广播
2 为了实时性,就需要调整发送间隔和包的大小
回复
1cs1ak1 2005-04-23
这个 但是如果同时连接的客户太多,服务器那岂不得法很多份?


还有 如果那种实时性要求比较高的话,服务器会不会发又小又快速的包
回复
1cs1ak1 2005-04-23
广播或者组播 现在在网络游戏里还没有应用, 因为无法保证包的一定到达。

回复
CgPanda_ 2005-04-23
happy__888([顾问团]寻开心)
说得好
受益匪浅
回复
寻开心 2005-04-01
其实就好比,服务器把某个客户端的运动轨迹上的一些点给了你,让你自己来根据这些关键点生成中间状态而已
至于如何生成中间状态,数学上就是一个曲线逆合的问题,简单的处理办法是用折线段逼近(这个就是线性处理的效果了)
回复
寻开心 2005-04-01
服务器发出来的信息,只是供终端来解析的

你也知道 服务器无法非常快速的发布那么多的信息的

服务器发出来的位置信息,只能供终端自己来插值解析他,至于是线性的还是二次的那是你的终端处理的方法问题了。
回复
yantieyia 2005-04-01
关键就是并不是线性处理,根据速度转向的不同走的是弧形,如果不加判断200人都要广播的话,可能是个天文数字
回复
寻开心 2005-03-31
线性处理,就是两点时间按照时间,直线运动过去
回复
herman-chen 2005-03-31
比较深奥,什么叫线性处理
可以请教下吗?
回复
寻开心 2005-03-30
这个说法就不对
什么叫做200个在线,50个人同屏幕呢
每个人可看见的同屏的对象是不同的

服务器接受每个人的发送过来的位置信息
然后把这些位置信息广播出去
终端接受各个物体的新的位置信息,把各个物体设置到新的位置上
如果,速度很快的话,就对物体从老位置到新位置之间做线性的运动

你的物体也许是1s移动100象素,但是系统广播的消息也许只有1秒钟几次而已
两个消息之间的物体位置移动,做线性处理就可以了。
回复
yantieyia 2005-03-30
没人知道吗?
回复
相关推荐
发帖
通信技术
创建于2007-08-27

4060

社区成员

通信技术相关讨论
申请成为版主
帖子事件
创建了帖子
2005-03-29 06:00
社区公告
暂无公告