從技術上講,屏幕不共享,遊戲狀態是共享的,手機都按照他們的理解呈現狀態。
只是一點關於Chrome Racer的背景知識。我們有一個case-studyon here,但它不能完全覆蓋你所問的問題。
Racer中用於通信的主要技術是WebSockets。 WebSockets允許一個客戶端近乎實時地從服務器推送和接收消息。
Racer通過爲遊戲提供一個唯一的ID來啓動會話,併爲用戶保留一個Web Socket。任何後來加入遊戲的人都會被告知使用相同的ID,並且服務器也會爲他們創建一個Web套接字。現在服務器知道所有的參與者。
當遊戲開始時,向所有參與者廣播一條消息,要求他們準備好開始,在此階段,服務器正在計算將來回消息傳遞給所有客戶端需要多長時間。正是這樣做才能解決設備之間的任何延遲,從而試圖彌補較慢客戶端的延遲。
現在服務器知道遊戲可以正常啓動的客戶端。當用戶玩他們的遊戲時,他們的命令將通過Web套接字被推送到服務器。服務器將此消息轉發給所有連接的客戶端(如衛星),併爲連接到會話的每個單用戶執行相同的操作。這就是遊戲狀態如何共享。
當每個客戶端收到從服務器廣播給它的命令時,它會更新其遊戲的內部表示並將其呈現在屏幕上。
就是這樣。
其實,我們想使用WebRTC Data Channel,因爲它可以減少數據到達客戶端的跳數。在我們今天的解決方案中,客戶端ping服務器,服務器轉發消息(2跳),如果我們可以直接發送給其他用戶(這是WebRTC的目標),我們可以將延遲減少一半。不幸的是,WebRTC當時並不是無處不在,無法將其作爲解決方案進行部署。
你設法讓blinkendroid工作嗎? –