2012-05-21 174 views
3

我希望在這裏問一個問題,而不是技術問題。html5多人遊戲諮詢

我一直在開發使用HTML5 + JS一場比賽,我的目標是讓多人。這是一個地下城爬行遊戲,我的目的是建立一個主要村莊,所有在線和村裏的玩家都可以看到對方進行談話並組成派對,但是當玩家進入地下城時,這是他們和他們派對的獨立實例。 4.

我的意圖聚會規模最大信號是使用WebSockets和C#編寫的服務器。問題是我剛發現IE不支持websocket,並且仍然佔有大約25%的瀏覽器市場份額。

我的選擇似乎是反正使用websockets並剪掉IE人羣或者放棄多人遊戲支持。其他人建議我只是將世界數據寫入數據庫,讓玩家在每一幀讀取數據並進行更新......聽起來很可怕。

我發現,似乎是它可以使用WebSockets或做在其他方面同樣處理這件事socket.io - 但這是如何影響我寫的服務器?如果我使用websockets和socket.io的c#實現,IE用戶能夠與我的服務器通話嗎?

或者還有其他的方式可以做我甚至不知道的客戶端 - >服務器通信。

要完全誠實的我很想放棄多人的想法!但在此之前,我期待你們提供建議和經驗,以便我能夠如何處理這一問題。感謝您的時間,我希望這種問題是正常這裏:)

回答

2

不要跌落多人的想法!多人遊戲更酷。 :)

Socket.io是一個服務器端JavaScript庫。這意味着您需要Node JS服務器。 IE用戶將能夠與Socket.io服務器交談,因爲如果WebSocket不可用,它將使用其他協議。例如:FlashSocket或XHR長輪詢。每種支持XHR的瀏覽器都提供最後一種技術,但效率不高。

socket.io的最大優勢是回退。您可以將其設置爲以任何協議(如WebSockets)開始,如果客戶端不支持它,則會嘗試其他協議。這真是太好了,因爲你可以使用WebSockets(它將緩慢但肯定地支配Web應用程序),並且仍然支持不支持它的瀏覽器,比如IE或Opera或Safari。我不知道是否有其他圖書館有這個優勢。我不知道C#(我不是C#開發人員)的實時連接的任何庫,但它不可能沒有(請參閱this question)。另請注意,實時連接需要與普通的HTTP請求稍有不同的服務器體系結構,因此可能需要額外的服務器來處理它們。

此外,我認爲,無論是nginx的,也沒有Apache的處理在目前的WebSockets(沒有一些硬核技巧)(但節點JS呢!)。雖然我不確定。

+0

似乎的確socket.io是使用:)我想避免在JavaScript編寫服務器(IM只是更好,更有經驗的C#和可以使用多線程等),但林不反對,我的測試解決方案服務器已經支持節點了,所以我想它是時候跳進去了!感謝您抽出寶貴時間來回答:) –

+0

歌劇已經支持WebSockets的自2010年10月來源:http://my.opera.com/core/blog/websockets – MetalFrog

+0

@MetalFrog據維基:「它(...)有在Opera 11中被禁用,直到新版本的協議被實現。「這實際上使它無用。我不知道目前的情況。 – freakish

0

沒有理由將自己鎖定在平臺上,就像運輸一樣簡單。對這些東西的支持會隨着時間的推移而變化,並且您會盡可能地與他們脫鉤。畢竟,你是在做一個遊戲,而不是網絡技術演示。

看看Orbited/Orbited2 TCPSocket。你可以用你喜歡的任何方式將你的服務器編寫爲標準的TCP。如果您決定創建本地客戶端,這也會使生活更輕鬆。