美文网首页游戏同步
位置同步机制(二)

位置同步机制(二)

作者: 三梦子 | 来源:发表于2017-06-20 17:41 被阅读105次

游戏说明

每个玩家控制一个飞机,在网络世界里尽情的pk。前期简单的操作就是左右键、飞行或者停止以及射击键,以及技能。击中算死亡,死亡后,会再度复活。

同步策略

帧同步

游戏的所有逻辑都在服务器,客户端将操作发给服务器,服务器每帧发送位置坐标给客户端,客户端绘制游戏实体。

  • 优点:简单。。。绝对同步
  • 缺点:服务器压力太大,另外,一旦有延迟,客户端就是断断续续的。我觉得适用于局域网。
关键帧同步

游戏的所有逻辑和数据都在服务器,这是肯定的,否则玩家会作弊。客户端会把操作发给服务器,但是服务器不会每帧同步,而是在两种条件下进行同步。

  1. 状态改变时,比如转方向,变速度
  2. 当处于移动时,每过1秒或者更久进行状态同步
    那么客户端会根据服务器的状态调整,和帧同步的完全依赖服务器的坐标不同的是,客户端多了一些移动,状态改变等逻辑,还有同步状态对的逻辑。同步状态的算法将决定游戏是否流畅,简单的即时同步,将会让显示看上去有点跳跃。
  • 优点:移动顺滑,发包少
  • 缺点:同步不是绝对的,会和服务器的真实位置有略微差距

逻辑实现

服务器发送过来的内容将会是结束时间和结束时状态,客户端会用差值的方式在结束时间内达到这个状态。由于是用差值的方式,所以客户端会比较顺滑。

关于服务器和客户端时间同步

目前我认为在相同的时区内,时间是同步的。但是依靠这个非常不靠谱,比如玩家设置成了别的时区,或者长期不同步时间,或者手动改时间。简单的策略是,在登录时,获取服务器时间,并和本地时间进行比较,将差值记录下来,并根据差值计算当前的服务器时间。这是一个粗略的计算。

相关文章

  • 位置同步机制(二)

    游戏说明 每个玩家控制一个飞机,在网络世界里尽情的pk。前期简单的操作就是左右键、飞行或者停止以及射击键,以及技能...

  • Java同步机制之volatile

    Java并发系列番外篇——同步机制(二) Java提供了一种稍弱的同步机制,即volatile变量,用来确保将更新...

  • 位置同步

    情景假设: a 客户端发送位置移动消息(包括当前位置和当前速度),经过服务器 s ,发到客户端 b,因为网络延迟而...

  • Java同步机制之死锁

    Java并发系列番外篇——同步机制(三) 姊妹篇《Java同步机制之synchronized》姊妹篇《Java同步...

  • Linux 多线程 - 线程异步与同步机制

    Linux 多线程 - 线程异步与同步机制 I. 同步机制 线程间的同步机制主要包括三个: 互斥锁:以排他的方式,...

  • Vsync同步机制 二

    SurfaceFlinger Vsync初始化过程 DispVsync是软件Vsync的信号源, 是Surface...

  • Android-Handler同步屏障

    一、消息机制之同步屏障 消息机制的同步屏障,其实就是阻碍同步消息,只让异步消息通过。而开启同步屏障的方法就是调用下...

  • C++: 多线程同步机制

    C++生产者消费者 基于锁和条件变量的同步机制 基于pipe的同步机制 基于变量的同步机制,在面对select/p...

  • 17 Go并发编程(四):sync 同步 —— Go并发的安全机

    Go 同步机制 在《Go并发编程初探》中我们提到同步概念,所谓同步是相对异步而言,即串行相对于并行。 同步机制解决...

  • js的事件循环

    javascript是一个单线程语言,javascript分为同步机制及异步机制,其中同步机制是放在栈中,而异步机...

网友评论

    本文标题:位置同步机制(二)

    本文链接:https://www.haomeiwen.com/subject/sulaqxtx.html