网页游戏开发秘笈
上QQ阅读APP看书,第一时间看更新

第4章 解谜游戏

解谜游戏代表作有《宝石迷阵》(Bejeweled)  中译《宝石迷阵》或《宝石方块》。——译者注

在玩《宝石迷阵》、《Snood》  中译《泡泡怪》或《鬼脸泡泡龙》。——译者注 和《Tetris Attack》这种游戏时,玩家要通过“增加”、“消除”、“移动”、“交换”等操作,尽快把各色方块按相关规则匹配起来。对于休闲式的网页游戏来说,这种形式很流行,不过其他游戏平台也会出现此类作品。

这类游戏有个特点,就是构建起来相对较为容易一些。除了可以单独发行之外,我们也可以将之改编为解谜类游戏,或是把它做成“迷你小游戏”(minigame),嵌套在其他大型游戏里面。SNES游戏机(Super Nintendo console system)上面有款游戏叫做《Lufia 2》  中译《四狂神战记2》。——译者注 ,此游戏尤以频繁使用“地下城式的解谜机制”(dungeon puzzle)而著称,比方说,游戏中需要通过移动色块来解谜。在大家更为熟悉的《塞尔达传说》(Legend of Zelda)系列中,玩家也经常需要通过此类解谜机制来打开门锁或开启宝箱,解谜要素贯穿于整个游戏流程里面。

除了虚拟的电子游戏之外,真实世界里也有这种游戏。比如“十六格数字推盘游戏”  “15 Puzzle”,在4×4的16 格推盘上有15个滑块,上面分别写有数字1至15,玩家需要通过移动滑块,使所有数字按顺序排列好。——译者注 正属于此类。我们可以为游戏中的“方块”设定一些新的能力,令规则逐渐复杂起来,同时还可以增设一些判定胜负及平局的机制,这样一来,就可以演变为井字棋  “ tick tac toe”,两位玩家在3×3的棋盘上轮流落子,先使己方三子连为一线者获胜。——译者注 、围棋、国际象棋之类的游戏了(若想做成一款类似国际象棋的游戏,还需要向其中加入某些中世纪风格的要素才行)。

本章将构建一款小朋友们经常玩的游戏,它叫做Memory,规则很简单:点击内容相同的两张图,令其消失,直至消去全部图片。我们采用名为easel.js的JavaScript游戏引擎来制作此游戏。

在编程中经常听到“高层抽象”(high-level abstraction)与“底层抽象”(low-level abstraction)这两个说法。如果许多小细节都要由开发者自己来处理,那就叫做“底层抽象”  也称“封装程度比较低”或“抽象程度比较低”。——译者注 ,反之,如果这些细节都由程序库、编程语言,或本书所提到的JavaScript游戏引擎来处理,那就叫做“高层抽象”  也称“封装程度比较高”或“抽象程度比较高”。——译者注 。书里所讲的各个游戏引擎,其抽象程度会越来越高,不过,本章所用到的这个easel.js却显得相当底层,也就是说,与其称之为游戏引擎,倒不如把它看成一套便捷而通用的接口,这套接口背后封装着渲染canvas所用的API。由于本章要制作的“图片记忆游戏”相当简单,所以采用easel.js这个底层引擎正合适,在使用底层引擎的过程中,还会碰见一些其他章节所接触不到的细节问题。

我们从程序清单4.1所列的这个index.html文件开始,它位于范例代码的puzzle/initial目录下。这段代码设置了doctype、加载了easel.js引擎,并创建了制作本章游戏所需的canvas元素。

程序清单4.1 刚开始制作游戏时所用的HTML文件

现在用Firefox或Chrome浏览器打开此文件会看到空白画面。下一步我们就开始使用easel.js引擎,向屏幕上渲染一些内容。

[1] 中译《宝石迷阵》或《宝石方块》。——译者注
[2] 中译《泡泡怪》或《鬼脸泡泡龙》。——译者注
[3] 中译《四狂神战记2》。——译者注
[4] “15 Puzzle”,在4×4的16 格推盘上有15个滑块,上面分别写有数字1至15,玩家需要通过移动滑块,使所有数字按顺序排列好。——译者注
[5] “ tick tac toe”,两位玩家在3×3的棋盘上轮流落子,先使己方三子连为一线者获胜。——译者注
[6] 也称“封装程度比较低”或“抽象程度比较低”。——译者注
[7] 也称“封装程度比较高”或“抽象程度比较高”。——译者注