3

我希望可以在这里提问,因为它更多的是寻求建议而不是技术问题。

我一直在使用 html5+js 开发游戏,我的目标是让它成为多人游戏。这是一个地牢爬行游戏,我的目的是建立一个主要的村庄,所有在线玩家和村庄里的玩家都可以看到彼此的活动、交谈和组建派对,但是当玩家进入地牢时,他们和他们的派对是一个单独的实例。派对人数最多 4 人。

我的意图是使用 websockets 并用 c# 编写服务器。问题是我刚刚发现 IE 不支持 websockets 并且仍然占据了大约 25% 的浏览器市场份额。

我的选择似乎是无论如何都使用 websockets 并减少 IE 人群,或者可能放弃多人游戏支持。其他人建议我将世界数据写入数据库,让玩家每帧都读取并更新......这听起来很可怕。

我发现这个 socket.io 似乎可以使用 websockets 或以其他方式做同样的事情——但这对我编写服务器有什么影响?如果我使用 websockets 和 socket.io 的 c# 实现,IE 用户可以与我的服务器通信吗?

或者可能还有其他我什至不知道的客户端->服务器通信方式。

老实说,我很想放弃多人游戏的想法!但在我这样做之前,我会向你们寻求关于如何处理这个问题的建议和经验丰富的建议。感谢您抽出宝贵时间,我希望这种问题在这里没问题:)

4

2 回答 2

2

不要放弃多人游戏的想法!多人游戏更酷。:)

Socket.io 是一个服务器端 JavaScript 库。这意味着您需要Node JS服务器。IE 用户将能够与 Socket.io 服务器对话,因为如果 WebSockets 不可用,它会使用其他协议。例如:FlashSocket 或 XHR 长轮询。最后一种技术在所有支持 XHR 的浏览器中都可用,但效率低下。

socket.io 最大的优势是回退。您可以将其设置为以任何协议(如 WebSockets)开始,如果客户端不支持它,则它会尝试其他协议。这真的很棒,因为您可以使用 WebSockets(它将缓慢但肯定会主导 Web 应用程序)并且仍然可以使用不支持它的浏览器,例如 IE、Opera 或 Safari。我不知道是否有任何其他图书馆具有这种优势。

我不知道任何用于 C# 实时连接的库(我不是 C# 开发人员),但不太可能没有(看看这个问题)。另请注意,实时连接需要与普通 HTTP 请求稍有不同的服务器架构,因此您可能需要额外的服务器来处理它们。

此外,我认为 nginx 和 Apache 目前都没有处理 WebSockets(没有一些核心技巧)(但 Node JS 可以!)。不过我不确定。

于 2012-05-21T14:40:51.383 回答
0

没有理由将自己锁定在平台方面,因为像运输这样简单的事情。对这些事物的支持会随着时间的推移而变化,您将希望尽可能地与它们脱钩。毕竟,您是在制作游戏,而不是网络技术演示。

看看 Orbited/Orbited2 TCPSocket。您可以以任何您喜欢的方式将您的服务器编写为标准 TCP。如果您决定制作本地客户端,这也会让生活更轻松。

于 2012-05-21T17:39:13.573 回答