Javascript 基于HTML5/WebGL的MMO 3D游戏可行性研究

Javascript 基于HTML5/WebGL的MMO 3D游戏可行性研究,javascript,html,opengl-es,webgl,Javascript,Html,Opengl Es,Webgl,我不知道是否有人想过这一点,但像魔兽世界、天堂II或Aion这样的游戏,通过WebGL浏览器前端是否可行?如果我想用这些新技术做一个完整的游戏,我会考虑什么?还有,什么地方是开始的好地方?这可能太开放了,但我会尝试一下 首先,据我所知,没有任何建模程序可以输出您期望的内容,因为您需要输出javascript 有些浏览器会使用硬件来加速图形,但这并不能保证,而且您只需要一点cpu,与其他选项卡共享,因此可能不会像您希望的那样平滑 如果您必须下载大量数据才能运行您的程序,这将是用户的一个问题 我认为

我不知道是否有人想过这一点,但像魔兽世界、天堂II或Aion这样的游戏,通过WebGL浏览器前端是否可行?如果我想用这些新技术做一个完整的游戏,我会考虑什么?还有,什么地方是开始的好地方?

这可能太开放了,但我会尝试一下

首先,据我所知,没有任何建模程序可以输出您期望的内容,因为您需要输出javascript

有些浏览器会使用硬件来加速图形,但这并不能保证,而且您只需要一点cpu,与其他选项卡共享,因此可能不会像您希望的那样平滑

如果您必须下载大量数据才能运行您的程序,这将是用户的一个问题

我认为建模程序是一个真正的挑战,因为你基本上要用手来做所有的事情,除非你为此而设计,否则它不会很顺利这一事实将是一个问题


但是,对于一些游戏设计来说,WebGL应该是一个不错的选择。

我认为如果你的游戏必须超出高地图上的一些立方体,那是不可能的

  • 大量的JS编码与浏览器的怪癖相乘。(是的,我知道JQuery,但它不是万灵药)
  • 挂在浏览器缓存小线程上的大型资源
  • 准备好被黑客攻击的客户端代码暴露在很多浏览器工具中,比如Firebug

这样的游戏在Flash上更加逼真,特别是在即将推出的11版播放器上,它带有硬件3D。

事实上,这是完全可能的,我们将使用这样的游戏

我们可以期待像O3D这样的库处理浏览器的怪癖。我们已经在桌面平台上遇到了这些问题,而图书馆则负责多平台的可移植性

浏览器缓存可能是个小问题,但不是大问题。可以为游戏分配更多的缓存,我们也有像squid这样的代理服务器,可以缓存非常大的资源。如果局域网上的一组玩家共享一个代理服务器,他们也将共享大型资源对象,如果游戏设计良好(即资源不能有多个生成的名称,但所有玩家都有一个公共URL)

此外,还讨论了为web应用程序添加本地存储的可能性。 “准备被黑客攻击”也不是市长的问题。没有什么可以阻止黑客操纵闪存或C++应用程序,反作弊工具已经变得无用。暴雪已经依赖于发现“机器人般的行为”,而不是尝试更多的反黑客措施

然而,我不认为魔兽世界将是第一个基于flash的游戏。事实上,这将是一场地震(http://playwebgl.com/games/quake-2-webgl/)由于WebGL已经有一个地震端口。。。将会有一些网络游戏使用WebGL,但不要指望暴雪在不久的将来支持它

IE是唯一一款不支持WebGL的浏览器,老实说,这并不重要。所有其他浏览器都可以,用户不会介意运行Chrome或Firefox。或者同时运行这两个选项,然后选择一个对他们的游戏来说速度更快的选项


谁在乎IE和Opera等边缘化浏览器。它们同样不重要。除非你将IE6计算在内,它将永远不会支持我们正在讨论的任何内容,因为它已停止使用且不受支持。

“如果你能找到一种方法来最小化运输大量(可能是千兆)资源的成本” 实际上,http已经具有了传输Gig静态资源的最低成本。凭借其本机资源分配方案URL,它具有最终的缓存能力。浏览器不仅知道如何通过URL缓存静态资源,而且还存在能够处理海量数据的快速高效的代理服务器

这方面的主要秘密是HTTP HEAD requeset,代理服务器的浏览器可以有效地检查它是否具有最新版本的资源并重新同步它。也可以通过HTTP头将资源标记为永久或长寿(不可变)。重新同步将是不可能的,相反,更新将通过使用新名称创建新资源来完成

有一个神话认为HTTP作为一个资源传输系统在某种程度上是低效的,而实际上它被设计成非常高效的


与基于HTTP的客户机相比,WoW和其他使用专有协议的客户机效率非常低。无法使用代理服务器加速这些客户端。Windows update、Apt和Yum都有一个共同点,即它们使用HTTP更新操作系统资源,并能够利用Akamai:s庞大的代理服务器全球网络和其他类似资源,以便以每台客户端数GB的规模高效传输URL资源。

用于缓存本地文件,您应该了解Chrome中的文件系统API。这使您可以通过编程方式访问虚拟文件系统,从而控制本地存储的资源

应用程序缓存可以帮助您使用静态资源,如游戏所需的HTML、CSS和JavaScript。但是,您需要作为“已安装的web应用程序”(例如,通过Chrome web应用商店)运行才能获得无限的存储空间。浏览器正在构建配额管理系统,以帮助简化这一过程

WebGL非常棒,而且图书馆的出现使它变得更容易。没有明确的“赢家”,但有很多选择

由于像曲轴这样的改进,JavaScript现在速度非常快。为了获得更好的性能,您可以使用本机客户端运行C/C++代码,并将消息来回发送到JavaScript


我可以看到两大问题。一个是帮助中间件公司将其工作移植到JavaScript或本机客户端。第二是提高了将数据从JavaScript移动到WebGL的速度。

Runescape是最受欢迎的应用之一