2012-10-19 22 views
0

我試圖實現GameKit通過藍牙/ wifi在幾臺設備上同步播放歌曲。我仍然有0.1-0.5秒的延遲。認爲這種同步是微不足道的。我發現實現我想要的BM接收器節拍器,聲音真正同步播放。GameKit同步

我使用GKSendDataReliable併發送1個帶有節奏的小包。使用本教程here完成所有的事情。

我搜索了很多,但找不到答案和/或我的瓶頸。希望有任何建議/方法。也許一些教程?

回答

1

您使用多少個設備?我假設它是服務器 - 客戶機方案。這是我會做什麼(它可能不會工作,但你所要求的意見/方法),很粗糙的算法:

-server設置一個計時器,並使用PING包其值發送給客戶,每個客戶端

記住它

-client接收PING包,並將響應分組

-server獲取響應數據包,檢查的時間和存儲某處所得增量(在載體中)

-server發送更多的PING包和得到更多的time deltas

- 當服務器有足夠的數據,它計算的平均ping時間(CLIENTX_TIME),並選擇最大的一個(BIGGEST_TIME)

- 服務器發送Start包到所有的客戶端,數據包有一些額外的信息說開始XX_TIME

PLAYING

-server開始播放音樂BIGGEST_TIME後

-clients得到START包,並開始XX時間,其中XX是每位玩家計算後播放音樂(所以最慢的客戶端將是0,對於其他這將是BIGGEST_TIME -CLIENTX_TIME)

-thi但是每次你想玩的東西,你需要提前做

事情是,你將永遠無法獲得一切同步的一切 - 這是網絡的性質不幸;)