Web 游戏开发入门
现代 Web 已迅速成为一个可行的平台,不仅可以创作令人惊叹的高品质游戏,还可以分发这些游戏。本文将向您介绍使用 Web 作为游戏平台的优势,以及使其成为可能的各项技术。
可创建的游戏范围可与桌面端和原生操作系统相媲美。借助现代 Web 技术和最新的浏览器,完全有可能为 Web 创建令人惊叹的顶级游戏。我们说的不是过去使用 Flash® 完成的简单纸牌游戏或多人社交游戏。我们说的是 3D 动作射击游戏、角色扮演游戏等。得益于 JavaScript 即时编译器技术和新 API 的巨大性能改进,您可以构建在浏览器(或 HTML5 驱动的设备)中运行且不妥协的游戏。
HTML 游戏平台
您可以真正将 Web 视为您的游戏更好的目标平台。正如我们常说的,“Web 就是平台。”让我们看看 Web 平台的核心。
| Function | 技术 |
|---|---|
| 音频 | Web Audio API |
| 图形 | WebGL(OpenGL ES 2.0) |
| 输入 | 触摸事件、游戏手柄 API、设备传感器、WebRTC、全屏 API、指针锁定 API |
| 语言 | JavaScript(或使用 Emscripten 编译为 JavaScript 的 C/C++) |
| 网络 | WebRTC 和/或 WebSockets |
| Storage | IndexedDB 或“云端” |
| Web | HTML、CSS、SVG(以及更多!) |
商业考量
作为一名游戏开发者,无论您是个人开发者还是大型游戏工作室,您都想知道为什么将 Web 作为下一个游戏项目的目标平台是明智的。让我们看看 Web 如何帮助您。
- Web 的覆盖范围是巨大的;它无处不在。使用 HTML 构建的游戏可以在智能手机、平板电脑、PC 和智能电视上运行。
- 营销和可发现性得到提升。您不再局限于在别人的应用商店推广您的应用。相反,您可以在整个 Web 以及其他媒体上宣传和推广您的游戏,利用 Web 内在的链接性和可分享性来触达新客户。
- 您在关键领域拥有控制权:支付。您不必仅仅因为您的游戏在其生态系统中就将 30% 的收入交给别人。相反,您可以收取您想要的费用,并使用您喜欢的任何支付处理服务。
- 同样,您拥有更多控制权,可以随时更新您的游戏。不必焦急地等待批准,而由公司内部的某个人决定您的关键错误修复是今天发布还是明天发布。
- 掌控您的分析!您不必依赖他人来做所有关于您需要哪些分析的决定,您可以自己收集——或者选择您最喜欢的第三方——来收集有关您的销售和游戏覆盖范围的信息。
- 您可以以自己的方式更紧密地管理客户关系。客户反馈不再通过应用商店有限的机制进行过滤。以您想要的方式与您的客户互动,无需中间商。
- 您的玩家可以随时随地玩您的游戏。因为 Web 无处不在,您的客户可以在他们的手机、平板电脑、家用笔记本电脑、工作台式电脑或其他任何设备上查看他们的游戏状态。
面向游戏开发者的 Web 技术
对于技术人员来说,让我们深入研究 Web 为游戏开发者提供的 API。这是一个全面的列表,可以为您提供 Web 能为您做什么的初步了解。
- Fetch API
-
从 Web 服务器发送和接收您想要的任何类型的数据,例如下载新的游戏关卡和美术素材,以及来回传输非实时游戏状态信息。
- 全屏 API
-
这个简单的 API 让您的游戏可以占据整个屏幕,从而让玩家沉浸在动作中。
- Gamepad API
-
如果您希望用户能够使用游戏手柄或其他游戏控制器来操作您的游戏,那么您将需要此 API。
- HTML 和 CSS
-
这两种技术结合起来,可以让您构建、设置样式和布局游戏的 UI。HTML 的一部分是
<canvas>元素,它提供了一种进行 2D 图形渲染的方式。 - HTML 音频
-
<audio>元素让您可以轻松播放简单的音效和音乐。如果您的需求更复杂,请查看 Web Audio API 以获得强大的音频处理能力! - IndexedDB
-
一个强大的数据存储 API,用于在用户自己的计算机或设备上维护用户数据。这是本地保存游戏状态和其他信息的好方法,这样就不必每次需要时都下载。当用户无法连接到 Web 时(例如,他们被困在飞机上数小时),也有助于使您的游戏可玩。
- JavaScript
-
JavaScript 是 Web 上使用的编程语言,在现代浏览器中速度极快,并且还在不断提速。利用它的强大功能来编写您的游戏代码,或者考虑使用 Emscripten 或 Asm.js 等技术轻松移植您现有的游戏。
- Pointer Lock API
-
指针锁定 API 允许您将鼠标或其他指针设备锁定在您游戏的界面内,这样您就可以接收到坐标增量,而不是绝对光标位置,从而更精确地测量用户正在执行的操作,并防止用户意外将输入发送到其他地方,从而错过重要的操作。
- SVG(可伸缩矢量图形)
-
允许您构建矢量图形,这些图形可以根据用户显示的大小或分辨率平滑缩放。
- 类型化数组
-
JavaScript 类型数组使您可以在 JavaScript 中访问原始二进制数据;这允许您操作 GL 纹理、游戏数据或任何其他内容,即使它不是原生 JavaScript 格式。
- Web Audio API
-
这个 API 用于从 JavaScript 代码控制音频的播放、合成和操作,让您可以创建出色的音效以及实时播放和操作音乐。
- WebGL
-
让您能够从 Web 内容中创建高性能、硬件加速的 3D(和 2D)图形。这是 OpenGL ES 2.0 的 Web 支持实现。
- WebRTC
-
WebRTC(实时通信)API 使您能够控制音频和视频数据,包括电话会议以及在两个用户之间来回传输其他应用程序数据。想让您的玩家在炸毁怪物的同时能够互相交谈吗?这就是您需要的 API。
- WebSocket
-
WebSocket API 允许您将您的应用程序或站点连接到服务器,以实时来回传输数据。非常适合多人游戏、聊天服务等。
- Web Workers
-
Worker 使您能够生成运行自己 JavaScript 代码的后台线程,从而利用现代多核处理器。