2012-05-21 172 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。如果您决定创建本地客户端,这也会使生活更轻松。