我剛開始學習HTML5 canvas和Google App Engine的Channel API。HTML5遊戲,用戶運動概念
我構建了一個基於等軸測圖的簡單遊戲演示。現在我想實施人物動作,但我想知道我應該如何實施它。
當前演示:http://cheukalex.appspot.com
這是我認爲這將是實現:
客戶端將處理運動。一旦箭頭鍵被按下,客戶端將執行移動,然後將新的協調發送到服務器,然後該服務器將被廣播給服務器上的其他用戶以更新角色的位置。
問題我想過:
如果我想實現「移動速度」,如能夠以多快 用戶步行五個廣場爲例。每個移動 之間的延遲將在客戶端完成。但那會安全嗎?因爲 JavaScripts很容易編輯。
如何處理延遲?如果我建立了一個簡單的追逐標籤遊戲,那麼我將如何同步用戶,這樣一個人看起來像是「標記」另一個用戶,但另一個用戶看到他1-2個方格後面,不會發生?
編輯: @nycynik,你是對的,延遲200毫秒左右。我已經在這裏測試過了。
延遲測試:http://cheukalex.appspot.com/latency
那是它永遠不會得到最小的延遲。 200ms非常快。那麼它可能是我的代碼很慢?
我是如何實現整個遊戲的。
- 客戶端進入網站
- 服務器在DB
- 創建令牌,開放信道,存儲客戶端的數據(信道ID)....一些邏輯
- 當客戶端按箭頭鍵,它會通知服務器哪個客戶端移動了什麼方向
- 服務器接收移動,邏輯,通過數據庫(僅當前在線客戶端)循環,向所有客戶端廣播地圖上每個客戶端在json中的位置。客戶然後「移動」。
這有什麼問題嗎?
至於黑客的移動速度,服務器可以保持他們的最後一個位置,並檢查它與最大速度變量 - 如果它超過給定的時間差,HAXX太高。 – 2012-04-17 20:45:22
你能分享更多關於你如何做的事嗎?該通道應該與套接字非常相似,並且對此應該足夠快。 – nycynik 2012-04-17 22:58:31