捕魚遊戲幀同步方案

2021-08-04 17:15:44 字數 732 閱讀 4206

設計原則:

玩家在按下的時候,就會看到子彈射出去。

這種設計注定了,玩家會收到其他玩家在之前時間射出的子彈

優先保證自己的準確性,其他玩家的準確性可惜部分犧牲

同步方案:

伺服器按照固定頻率下發同步幀,假定每秒10幀。每幀資料報括幀號、4個玩家的炮台發射角度,沒有發射則發-90度表示空。

通常客戶端的邏輯幀為同步幀的2倍,即每秒20幀。比如伺服器下發的幀號為1、3、5、7、9。客戶端會在中間補幀成1、2、3、4、5。

客戶端邏輯幀間隔大,直接更新魚的位置會出現跳躍,需要用比如60幀的渲染幀來平滑展現。

客戶端按下螢幕射出子彈,告訴子彈的角度以及邏輯幀的幀號,伺服器收到後,廣播給所有玩家。

比如a在4幀按下的子彈資訊,b、c、d收到的時候已經是伺服器下發的第10幀了。這時候1可以直接無視,讓子彈在10幀射出去,這樣看別人的就會不同步,但是3個人看到的資訊是同步的。2是把當前的魚往回倒退到第4幀,開始讓子彈出來,並開始計算碰撞。如果在4幀到10幀的時候已經撞了,那麼直接在魚身上播碰撞特效。如果沒撞,那麼此時子彈是和a是同步的,因為都是從第4幀開始出發。

第二種方案,需要記錄所有魚在比如最近10幀的位置資訊,占用記憶體,每幀收到其他3人的子彈,都會額外計算1-10幀的碰撞,占用cpu。不過這種方案同步效果是最好

因為魚是固定的,所有客戶端在收到伺服器下發的魚資訊後,就自己按照幀號來更新魚的位置。

如果沒收到伺服器下發的同步幀,魚也應該繼續走,當收到後,補上前幾幀的子彈。

遊戲幀同步學習筆記

三 幀同步 四 狀態同步與幀同步對比 現代多人遊戲中,多個客戶端之間的通訊大多以同步多方狀態為主要目標,為了實現這一目標,主要有兩個技術方向 狀態同步 幀同步。1 什麼是狀態同步 狀態同步簡單來說就是同步遊戲中的各種狀態,當客戶端傳送遊戲動作到伺服器,伺服器接收到之後,通過計算遊戲行為的結果,然後廣...

遊戲中幀同步與狀態同步

幀同步 什麼是幀同步 幀同步常被rts 即時戰略 遊戲常採用。在遊戲中同步的是玩家的操作指令,操作指令包含當前的幀索引。一般的流程是客戶端上傳操作到伺服器,伺服器收到後並不計算遊戲行為,而是 到所有客戶端。這裡最重要的概念就是 相同的輸入 相同的時機 相同的輸出。實現幀同步的流程一般是 同步隨機數種...

捕魚遊戲移植不顯示炮台解決方案

開啟捕魚客戶端中frame 資料夾中的stdafx.h 將 include 訊息定義 define.h include 訊息定義 packet.h include 訊息定義 struct.h include 訊息定義 cmd gameserver.h include 訊息定義 cmd fish.h ...