MARIO.GAME
zh
开发日志

幕后花絮:Mario.Game Adventure 是怎么做出来的

我们是如何打造 Mario.Game Adventure 的:用代码绘制的像素画、调校出经典手感的物理系统、Web Audio 配乐,以及由机器人测试过的八个关卡。

阅读约 5 分钟

幕后花絮:Mario.Game Adventure 是怎么做出来的

Mario.Game Adventure 只是一个 JavaScript 文件,没有引擎,没有图片文件,也没有音频文件。下面就来讲讲它是怎么做出来的。

用代码绘制的像素画

游戏里的每一个精灵图——大小两种形态的主角、行走怪、慢慢龟、刺刺龟、吞食花、Boss、方块、云朵和城堡——在源代码中都是用一行行表示颜色的字母来描述的,或者用小段图形绘制程序画出来。游戏启动时,会先把它们一次性绘制到离屏画布上,之后每一帧再复制到屏幕上。每个世界都有自己的调色板:同样的砖块,在地下会变成蓝色,在夜晚会变得冰冷,在城堡里则是灰色。

经典手感的物理系统

平台游戏的成败,全在操控手感。主角有各自独立的行走速度和奔跑速度、加速和减速,转向时会有明显的急刹,还有可变跳跃高度:按住跳跃键并且仍在上升时,重力更小。我们不断调整数值,直到奔跑跳跃能轻松越过三格宽的缺口,而走路跳跃则跳不过去——这样一来,奔跑就成了一项值得学习的技巧。详情请阅读移动指南。

八个关卡,四种主题

每个世界都会引入一个核心玩法:

  1. 世界 1 — 基础内容:水管、深坑、道具,然后是一个天花板很低的洞穴。
  2. 世界 2 — 踩不得的刺刺龟,以及云端中第一批移动升降台。
  3. 世界 3 — 一个混合了所有元素的夜间关卡,然后是无底深渊上的树梢。
  4. 世界 4 — 敌人密布的要塞之路,然后是一座有火焰棒、岩浆和 Boss 的城堡。

会通关每个关卡的机器人

为了确保每个关卡都能通关,我们写了一个测试机器人,它开启无敌状态跑完每个关卡,遇到墙壁和缺口就跳。每当它卡住,我们就去查看那个位置:有好几次,它都帮我们发现了高出一个像素的跳跃点,或是够不到的方块,随后我们便修正了关卡。再加上对每个方块的跳跃高度检查,我们找到的所有无法到达的地方都被排查出来了。

用 Web Audio 制作音乐

配乐由一个小巧的音序器实时生成,使用的是浏览器的 Web Audio API:方波和三角波负责旋律和低音,噪声负责鼓点。每个世界都有自己的原创曲调,另外还有获得道具、旗杆、游戏结束和终章的短曲。当计时器降到 100 时,节奏会加快——正如你所期待的那样。

来试试吧

来玩 Mario.Game Adventure,如果卡关了,也可以直接查看我们的通关攻略。

更多资讯