html5多人游戏建议

Posted

技术标签:

【中文标题】html5多人游戏建议【英文标题】:html5 multiplayer advice 【发布时间】:2012-05-28 01:25:32 【问题描述】:

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

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

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

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

我发现这个 socket.io 似乎可以使用 websockets 或以其他方式进行相同的处理 - 但这对我编写服务器有何影响?如果我使用 websockets 和 socket.io 的 c# 实现,IE 用户可以与我的服务器对话吗?

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

看来 socket.io 是使用的解决方案 :) 我想避免用 javascript 编写服务器(我只是更好,更有经验的 c# 并且可以使用多线程等)但我不是反对它,我的测试服务器已经支持节点,所以我想是时候加入了!感谢您花时间回答:) Opera 从 2010 年 10 月开始支持 websockets。来源:my.opera.com/core/blog/websockets @MetalFrog 根据 wiki:“在新版本的协议实施之前,它 (...) 在 Opera 11 中已被禁用。”这实际上使它毫无用处。不过我不知道现在的情况。 opera:config#Enable%20WebSockets 会解决这个问题。 @MetalFrog 你不是一个普通用户(作为 *** 的用户就是一个证明 :)) 99% 的用户都是懒惰的。他们中的大多数人都希望一切准备就绪并开箱即用,尤其是通过浏览器。告诉他们:“安装这个,安装那个,添加这个插件,配置那个,等等。”您会自动失去其中的许多(有时是大多数)并使您的网站失去吸引力。这至少是我在我从事的项目中看到的。【参考方案2】:

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

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

【讨论】:

以上是关于html5多人游戏建议的主要内容,如果未能解决你的问题,请参考以下文章

我想创建一个基于 HTML5 + python (tornado) 的多人游戏:)

编写多人国际象棋游戏:HTML5 Canvas + ReactJS vs. Phaser 3

WebRTC 是正确的吗? (实时多人游戏)

带有活动切换的 Google Play 游戏服务多人游戏

Firebase与数据更新滞后 - 多人游戏

HTML5 游戏、画布还是 div?