2011-07-04 30 views
0

我即將發佈MMORPG。在我的遊戲中,每1秒鐘,每個玩家發送30條TCP消息,並從服務器30返回。每條消息都不是很長。像20個字符。選擇服務器對於我的遊戲

問題是,我從來沒有得到多人遊戲的雙手。我編寫了所有的服務器和客戶端,但我不知道我需要什麼服務器。我的意思是,內存,CPU等...我仍然不知道要做什麼準備,但是讓我們來說說15K的同時客戶端。如前所述,每個客戶端每隔1秒需要獲取併發送30條TCP消息,並且在大多數情況下,我還需要使用數據更新我的非SQL數據庫。

更新:這是一個多人遊戲,我必須有30個信息/秒。大多數消息是針對玩家的當前位置。另外我正在使用C++。

+0

客戶端是否與服務器有穩定的TCP連接,或者每次需要發送消息時都連接它? – heximal

+0

穩定的TCP連接。 – Eli

回答

0

這取決於你的(已經實現的)服務器需要什麼。直到你嘗試一些特定的硬件,你永遠不會知道。租用一個月的功能強大的專用服務器並分析您的遊戲服務器。至少只是檢查CPU使用率。您將需要多線程異步網絡。

詳細信息您提供幫助,只計算你有多少帶寬需要: ~94 bytes (TCP + IP + Ethernet headers) +〜20個字節(數據)= 114個字節的每個數據包*每秒30 * 15000個用戶=〜50Mbps的* 8位=〜兩者的400Mbps的傳入和傳出流量。似乎你在這裏遇到麻煩。考慮一些比在單獨的TCP幀中發送每個包更明智的東西。例如,實現緩衝區,收集準備發送的數據,並由您的遊戲邏輯線程和單獨的線程填充,以將此數據發送到網絡。在這種情況下,您的幾個軟包可以合併爲一個TCP包,從而大大降低您的帶寬需求。

但即使在此之後,你仍然陷入困境。我建議在投資複雜的解決方案之前先等待用戶。當你擁有它們時,你需要實現某種聚類。它是獨立的故事,比簡單的網絡複雜得多。

嘗試通過單個服務器處理至少1K個用戶。這可以爲你帶來一些錢,聘請一些在遊戲網絡/集羣方面有經驗的人。

+0

謝謝你。我想在沒有真正的遊戲客戶端的情況下模擬1000個客戶端,您對此有何想法?我已經有一臺服務器。的Linode。作爲開始,我想要處理500個用戶。 – Eli

+0

你在尋找什麼想法嗎?只要做到這一點,模擬它們。仿真可以非常簡單(只是虛擬客戶端連接到服務器,發送有效數據包到服務器,並可以接收來自服務器的數據包,不會移動,無邏輯),或者非常複雜 - 就像由AI控制的全功能客戶端。 –

+0

我需要非常複雜 - 什麼是AI? – Eli

0

如果你知道你每秒發送30條消息,爲什麼不把它們捆綁到每個請求中?在服務器資源方面造成了很大的差異......

並且您將使用哪種語言運行服務器?我希望你寫一些專門處理/管理這些連接的東西?如果是這樣:做一些分析,只是測量你需要的東西...... 你的處理器每秒鐘都在做什麼來處理這些30 * 15K的消息?

對您的問題沒有一般的答案。這一切都取決於你的軟件。

+0

因爲這是一個MMORPG ...你看到你玩的玩家,你無法每隔1秒更新其他玩家的位置......服務器C++。它會更新數據庫,除非沒有變化,例如玩家的位置。 – Eli