我希望在这里问这个问题是可以的,因为它更多的是寻求建议而不是技术问题。
我一直在使用html5 + js开发游戏,我的目标是让它成为多人游戏。 这是一款地牢爬行游戏,我的目的是建立一个主要村庄,所有在线和村庄中的玩家都可以看到彼此四处走动,交谈和组成派对,但是当玩家进入地牢时,对于他们和他们的队伍来说,这是一个单独的实例。 派对人数最多为4人。
我的目的是使用 websocket 并用 c# 编写服务器。 问题是我刚刚发现IE不支持websockets,仍然占据浏览器市场份额的25%左右。
我的选择似乎是无论如何都使用 websocket 并减少 IE 人群或放弃多人游戏支持。 还有人建议我把世界数据写到数据库中,让玩家每一帧都从中读取,然后以这种方式更新。听起来很可怕。
我发现这 socket.io 似乎可以使用 websockets 或以其他方式做同样的事情 - 但这如何影响我编写服务器? 如果我使用 websockets 的 c# 实现,socket.io IE 用户是否能够与我的服务器通信?
或者可能还有其他我什至不知道的客户端>服务器通信方式。
老实说,我很想放弃多人游戏的想法! 但在我这样做之前,我会向你们寻求建议和经验丰富的建议,以了解如何处理这个问题。 感谢您的时间,我希望这种问题在这里没问题:)
不要放弃多人游戏的想法!多人游戏更酷。:)
Socket.io 是一个服务器端JavaScript库。这意味着您需要 Node JS 服务器。IE用户将能够与服务器通信 Socket.io 因为如果WebSocket不可用,它将使用其他协议。例如:FlashSocket 或 XHR 长轮询。最后一种技术在每个支持 XHR 的浏览器中都可用,但它效率低下。
socket.io 的最大优点是后备。您可以将其设置为从任何协议(如 WebSockets(开始,如果客户端不支持它,则它会尝试其他协议。这真的很棒,因为您可以使用WebSockets(它将缓慢但肯定地主导Web应用程序(,并且仍然可以使用不支持它的浏览器,例如IE,Opera或Safari。我不知道是否有其他图书馆具有这种优势。
我不知道任何用于 C# 实时连接的库(我不是 C# 开发人员(,但不太可能没有(看看这个问题(。另请注意,实时连接需要与普通 HTTP 请求略有不同的服务器架构,因此您可能需要额外的服务器来处理它们。
另外,我认为nginx和Apache目前都不处理WebSockets(没有一些硬核技巧((但Node JS可以!不过我不确定。
没有理由将自己锁定在平台方面,以便进行运输这样简单的事情。对这些事情的支持会随着时间的推移而变化,你会希望尽可能地将自己与它们脱钩。毕竟,您是在制作游戏,而不是网络技术演示。
看看 Orbited/Orbited2 TCPSocket。您可以按照自己喜欢的任何方式将服务器编写为标准 TCP。如果您决定创建本机客户端,这也会使生活更轻松。