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

yantieyia 2005-03-29 06:00:54
如果是一个网络游戏中有200人,一个屏幕上有50个人,那么当这50个人同时移动时,每个人移动服务器都要在200个人中刷一次这个人的移动需要通知哪些人,然后向这50个人发送消息,这个过程就需要执行50次,如果是一个航行类游戏,每秒移动100个像素,天....这个传输量,如果每移动10个像素才发送一次,那就会看见其他人的航行是抖动的,到底该怎么解决呀...
...全文
157 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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~~ 2005-03-31
  • 打赏
  • 举报
回复
比较深奥,什么叫线性处理
可以请教下吗?
寻开心 2005-03-30
  • 打赏
  • 举报
回复
这个说法就不对
什么叫做200个在线,50个人同屏幕呢
每个人可看见的同屏的对象是不同的

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

你的物体也许是1s移动100象素,但是系统广播的消息也许只有1秒钟几次而已
两个消息之间的物体位置移动,做线性处理就可以了。
yantieyia 2005-03-30
  • 打赏
  • 举报
回复
没人知道吗?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧