我不知道是否有人考虑过这一点,但魔兽世界、天堂 II 或永恒之塔等游戏是否可以通过 WebGL 使用浏览器前端?如果我想用这些新技术制作一款成熟的游戏,我必须考虑哪些事情?此外,什么是一个好的起点?
6 回答
这可能太开放了,但我会采取行动。
首先,据我所知,没有建模程序可以输出您所期望的,因为您需要输出 javascript。
一些浏览器会使用硬件来加速图形,但这并不能保证,而且你只得到一点 cpu,与其他选项卡共享,所以它可能不像你喜欢的那样流畅。
如果您必须下载大量数据来运行您的程序,这对用户来说将是一个问题。
我认为建模程序是真正的挑战,因为您基本上必须手动完成所有事情,而且它不会很顺利的事实将是一个问题,除非您为此进行设计。
但是,对于某些游戏设计,WebGL 应该是一个不错的选择。
事实上这是完全有可能的,我们会看到这样的游戏。
我们可以期待像 O3D 这样的库来处理浏览器的怪癖。我们已经在桌面平台上遇到了这些问题,并且库在那里负责多平台可移植性。
浏览器缓存可能是一个小问题,但不是大问题。可以为游戏分配更多缓存,我们也有像 squid 这样的代理服务器,可以缓存非常大的资源。如果 LAN 上的一组玩家共享一个代理服务器,他们也会共享大型资源对象,如果游戏设计得很好(即资源不能有多个生成的名称,但对所有玩家都有一个共同的 URL。)
还有关于为 Web 应用程序添加本地存储可能性的讨论。“准备被黑客攻击”不是市长的问题。没有什么可以阻止黑客操纵 Flash 或 C++ 应用程序,反作弊工具已经变得毫无用处。暴雪已经在依靠发现“类似机器人的行为”,而不是尝试更多的反黑客措施。
不过,我不认为魔兽世界会是第一款基于闪存的游戏。事实上,它会是 Quake (http://playwebgl.com/games/quake-2-webgl/),因为已经有一个用于 WebGL 的 Quake-port ... 将会有使用 WebGL 的网页游戏,但是做不要指望暴雪在不久的将来支持它。
IE 是唯一不支持 WebGL 的浏览器,老实说这并不重要。所有其他浏览器都可以,用户不会介意运行 Chrome 或 Firefox。或者同时运行两者并选择对他们的游戏更快的一个。
谁在乎 IE 和 Opera 等边缘化浏览器。它们同样不重要。除非你算上 IE6,它永远不会支持我们正在讨论的任何东西,因为它已停产且不受支持。
如果您的游戏必须超出 heigtmaps 上的某些立方体,我认为这是不可能的。
- JS 中的大量编码乘以浏览器的怪癖。(是的,我知道 JQuery,但它不是灵丹妙药)
- 大量资源挂在浏览器缓存的小线程上
- 暴露给许多浏览器工具(如 Firebug)的易被黑客攻击的客户端代码
这样的游戏在 Flash 上更加逼真,尤其是即将推出的 11 版带有硬件 3D 的播放器。
Runescape 多年来玩得最多的浏览器游戏之一是用 WebGL 重写他们的引擎......(他们目前使用 Java 小程序)
对于缓存本地文件,您应该查看 Chrome 中的文件系统 API。这使您可以对虚拟文件系统进行编程访问,从而控制您在本地存储的资源。
应用程序缓存可以帮助您处理游戏所需的 HTML、CSS 和 JavaScript 等静态资源。但是,您需要作为“已安装的网络应用程序”运行(例如,通过 Chrome 网上应用店)以获得无限存储空间。浏览器正在构建配额管理系统以帮助简化此操作。
WebGL 很棒,并且库正在出现以帮助使其更容易。没有明确的“赢家”,但有很多选择。
由于像 CrankShaft 这样的改进,如今 JavaScript 非常快。为了获得更好的性能,您可以使用 Native Client 运行您的 C/C++ 代码并将消息来回发布到 JavaScript。
我可以看到两个大问题。一是帮助中间件公司将他们的工作移植到 JavaScript 或 Native Client。第二个是提高我们将数据从 JavaScript 移动到 WebGL 的速度。
“如果你能找到一种方法来最小化传输大量(可能是演出)资源的成本” 实际上,http 已经具有传输静态资源演出的最低成本。凭借其本机资源分配方案 URL,它具有最终的缓存能力。浏览器不仅知道如何通过 URL 缓存静态资源,而且存在可以处理 TB 级数据的快速高效的代理服务器。
其主要秘密是 HTTP HEAD 请求集,代理服务器的浏览器可以有效地检查它是否具有最新版本的资源并重新同步它。此外,还可以通过 HTTP 标头将资源标记为永久或非常长寿(不可变)。然后将无法重新同步,而是通过创建具有新名称的新资源来完成更新。
有一种说法认为 HTTP 作为一种资源传输系统在某种程度上是低效的,而实际上它被设计为非常高效。
与基于 HTTP 的客户端相比,WoW 和其他使用专有协议的客户端效率非常低。这些客户端无法使用代理服务器加速。Windows update、Apt 和 Yum 都有一个共同点,即它们使用 HTTP 更新操作系统资源,并且能够利用 Akamai 庞大的全球代理服务器网络以及其他类似资源,以便以每千兆字节的规模有效传输 URL 资源客户。