MARIO.GAME
zh

Mario.js — World 1-1 Remake

纯手写 JavaScript 高度还原 World 1-1

Mario.js — World 1-1 Remake

关于 Mario.js — World 1-1 Remake

Mario.js 是由开发者 Garrett Johnson 编写的 NES 游戏第一关的复刻版,最初是为了练习引擎开发。它底层没有使用任何游戏框架:主循环、画面滚动、碰撞检测、精灵动画和渲染顺序,全都是用原生 JavaScript 手写而成。

正因如此,它是重温 World 1-1 的绝佳方式。这一关没有一行教程文字,却教会了整整一代人如何玩平台跳跃游戏:第一只 Goomba 教你跳跃,第一个 ? 块教你从下方顶击,而水管则告诉你这个世界里藏着秘密。

作者自己的笔记解释了其设计思路:敌人会在出现在画面上之前稍早激活,碰撞箱比精灵图略宽松一些,各图层按固定顺序绘制——背景、道具、物品、敌人、投射物、地形、玩家,最后是水管,这样 Mario 才能钻进水管。

操作方式

按键动作
← →行走
Z奔跑
X跳跃
↓进入水管 / 蹲下

特色

  • 像素级还原 World 1-1 的布局,包括隐藏水管和旗杆
  • 不依赖任何框架、从零编写的 60 fps 引擎
  • 原版风格的碰撞箱,敌人会在即将滚动进入画面前激活
  • Super Mushroom、Fire Flower、Starman、金币和可破坏的砖块

小技巧

  1. X 是跳跃,Z 是奔跑——和许多 PC 游戏正好相反,手指需要适应一下。
  2. 从最后一段台阶的顶端起跳时按住 Z,就能抓到旗杆的最高处。
  3. 试试在水管上按 ↓——其中一根通向特别的地方,和原版一样。
  4. 如果按键没有反应,请先在游戏内点击一下;游戏框架需要获得键盘焦点。

常见问题

这是完整的 Super Mario Bros. 吗?

不是——它只是作为编程展示而复刻了 World 1-1。想玩更多关卡,可以试试 Mario.Game Adventure 或 Infinite Mario Bros。

Mario.js 是谁做的?

作者是 Garrett Johnson,他在 GitHub 上以 MIT 许可证公开了源代码。

为什么会有黑边?

游戏保持了 NES 的屏幕比例,所以在宽屏上画布会居中显示,两侧留有黑边。

更多好玩的游戏