2016-12-29 59 views
1

我很難找到關於與node.js開發實時多人遊戲的答案。目前我有一個小團隊,想要構建一個實時多人桌遊戲(轉身基地),這將是iOS和Android之間的跨平臺。由於我們的預算不足以將Photon或Smartfox作爲多人遊戲服務器,我們建議設置我們自己的node.js服務器。但是由於我們對實時多人遊戲開發如此陌生,我們仍然爲決定node.js是否是適合我們的實時多人遊戲板遊戲的服務器而苦苦掙扎。Unity具有node.js的實時多人遊戲(與IOS和Android的跨平臺)

我們知道有些開發人員提到node.js的速度比較慢,因爲它使用TCP而不是UDP,但是我們讀了一些使用node.js作爲多人遊戲服務器的帖子/教程。

我想知道是否有人在開發實時多人遊戲時使用node.js作爲服務器?

+1

是的。我推薦node.js.因爲它是一個基於回合的遊戲,TCP是一個更好的選擇,因爲它的可靠性。 – Bijan

回答

0

節點可以做的TCP或UDP,且可以是一個偉大的選擇,因爲實時服務器,但也有一些優點和缺點(一如既往):

優點:

  1. 節點很容易制定因強大的社區和模塊和實例
  2. 默認情況下,您的服務器將是異步並且將能夠處理大量併發連接沒有你真的不必做任何事情
多如牛毛個

缺點:

  1. 默認情況下,節點將在短短的所有連接邏輯線程運行,所以如果你做任何的計算響應消息,你是從你的服務器阻止所有其它響應。所以節點是最適合於低計算,但高I/O服務器
  2. 如果您實時服務器創建和銷燬大量的對象,那麼你可以觸發垃圾收集,這將有效地暫停您的服務器。這通常完成快速,當它完成所有接收到的請求將得到服務,但它意味着你在等待

所以ocasional秒殺,如果你的服務器是低計算,並且可以處理偶爾輕微延遲秒殺,節點js是一個不錯的選擇。

我建議設計服務器,因此你可以同時運行多個實例,因爲如果你不打處理瓶頸,你可以簡單地通過增加更多服務器實例水平擴展。

如果需要持續低延遲,您也可以調查golang,儘管編寫起來比較困難。