浏览器游戏的历史出奇地干净:诞生于一个插件,成长于一场标准战争,又在浏览器学会画画的时候重生。
插件时代
1990 年代末,浏览器只能渲染文字和图片,别的几乎没有。动画就是 GIF,交互就是表单。Flash 改变了这一点:它提供一个统一的运行时,能画矢量图形、能放声音,还能把一款游戏压缩到几百 KB 里流式加载。
结果是小游戏的一次爆发——门户站、赞助合作、高分榜,以及一整套「一周做一款」的创作文化。Flash 也第一次给独立游戏提供了真正的分发渠道:不需要发行商,不需要主机认证,不需要货架位置。
技术代价当时看不见,后来才变得要命:游戏活在一个私有运行时里,搜索引擎索引不到,2007 年出现的手机上跑不了,而且还需要一个会崩溃、耗电、需要不断打安全补丁的插件。
空档期
移动设备到来时,它们出厂就不带这个插件。此后几年,最有意思的浏览器游戏反而发生在 App 里而不是开放网络上——一段奇怪的弯路:一款本可以用链接分享的游戏,变成了必须先安装的东西。
Web 标准社区的回应是两件事:更强的 JavaScript 引擎,以及 canvas 元素。canvas 给开发者一块空白位图,用一套简单的 2D API 往上画。没有插件,没有运行时,没有安装。游戏重新变成了一个页面。
Canvas 真正改变了什么
比绘图 API 更重要的有三点:
- 它可以被链接。 canvas 游戏就是一个 URL,可以被分享、收藏、索引、嵌入。
- 它启动快。 几百行 JavaScript 加一套不需要图片的美术风格,在手机上可以一秒内加载完。
- 它可被查看。 右键查看源码真的有效。这听起来微不足道,但它让整个圈子变得可教:你可以靠读别人的代码来学。
最后一点,是「小手工作品」文化至今还健康的原因。学习的门槛只是一个文本编辑器。
丢失的东西
插件时代有真正的工具链:时间轴、矢量美术工具、一套非程序员也能上手的动画模型。canvas 默认什么都没有。你用代码作画,这很强大,同时也是一道筛选。
另一个损失是门户。老门户聚集了成千上万款游戏,并给它们共同的受众。这个角色如今被应用商店、视频平台和搜索分散掉了,而没有谁能像当年的门户那样,把一款古怪的小游戏推到人面前。
现在的位置
现代浏览器几乎能做到插件时代的所有事情,还能把计算压到 GPU 上。有意思的结果是:做一款小游戏的成本又崩了一次——一个单独的 HTML 文件,就能是一款带声音、存档和触屏操作的完整游戏。
这也大致是这个站点押的注:一款 canvas 游戏不需要安装、不需要账号、不需要商店。它只需要一个链接,和你空出来的三分钟。
插件死掉的时候,浏览器游戏没有死。它回到了最初的样子:一个会玩的页面。