2017-12-18 189 views
3

我正在使用Unity編程多人RPG遊戲,並且在戰鬥場景中,玩家必須確定他或他使用哪種攻擊。當玩家按下攻擊按鈕時,玩家向服務器發送發佈請求,服務器在發佈請求合法或不合法時進行強制檢查,如果請求合法,則服務器將數據庫值標記爲「開啓」,或者準確地說,例如,它從「0」變爲「1」,即所謂的「攻擊決定」。每5秒鐘檢查一次數據庫值是否很昂貴,而且有很多用戶數如10000或更多?

問題是,我不得不再次發出http請求來檢查這個值。戰鬥中最多有6個字符,如果所有人都想檢查attack_determined是0還是1,則每個攻擊請求會發出6個請求。例如,我不想考慮用戶數量是否增加到10000。處理這些用於我正在使用的VPS服務器的請求將非常困難。有什麼辦法可以減少請求數量嗎?我不想使用套接字,我正在考慮使用會話或memcache。我在服務器端使用PHP,而在Unity客戶端使用C#。

+3

這似乎是一個非常糟糕的方式來設計交互式的東西。 –

+0

我同意@DavidSchwartz你需要重新考慮你的架構。 – Eimsas

+3

如果你有類似網絡的東西(這可能是一個瀏覽器內UI,或者可能是一個使用http而不是專用套接字協議的客戶端應用程序),Web套接字就是一種合適的方法。它可以很好地擴展你想要做的事情(甚至更高;我們的網絡套接字服務器目前有450k的開放連接)。每隔幾秒Http輪詢:會立即殺死我們。如果您將所有其他流量合併到同一個網絡套接字上:甚至更好。 –

回答

6

我不想使用套接字

使用WebSockets。

您可以使用websocket獨立庫或使用Unity的網絡API並啓用websocket。如果您決定使用Unity Network API,只需將NetworkServer.useWebSockets設置爲true即可啓用。

一旦啓用,Unity將從套接字切換到websocket。如果你只是在研究WebGL應用程序,你可以看看assetstore上的這個websocket插件。