我正在使用Canvas和MySQL數據庫在PHP中開發多人遊戲。 兩名球員加入比賽,他們首先得到對手的位置(X,Y和角度)。
準備就緒後,遊戲開始。遊戲Algorthim會這樣。
每50毫秒PHP多人遊戲:數據同步無法正常工作
- 計算自己的位置(X,Y)
- 獲取對手的角度(AJAX),並計算出對手的POS(X2,Y2)
畫布和更新然後畫數據庫。
context.fillStyle = "green"; context.fillRect(p1.x,p1.y, 5,5); addPoints(p1.x,p1.y); updateRoundJQ(p1.x,p1.y,p1.a); context.fillStyle = "red"; context.fillRect(x2,y2, 5,5); addPoints(x2,y2); loopTimer = setTimeout('drawLine()', 50);
但不幸的是我得到這樣的結果。接收數據有很大的延遲。任何人都可以請幫助我如何擺脫這個偉大的錯誤?這將是非常感謝。
玩家1的屏幕
玩家2的屏幕
看來,阿賈克斯請求搞砸了整個事情。你每隔50毫秒發送一次請求!嘗試提高那個時間,雖然可能不是你喜歡做的事情,但你可以試試websocket來獲得這個「實時」,並特別看看socket.io庫。 – Gntem
@GeoPhoenix我使用getAngle()和updateRound()函數在循環之外並將時間提高到10ms。結果比上面的要好得多。不過,角度的細微差別會產生不同的結果。 –