Skip to content
SFML.js

游戏与应用 ​

Breakout 在本仓库运行;其他项目属于独立仓库或 npm 包,请使用各节指定的工作目录。所有项目均需要图形会话并满足原生构建要求。它们的依赖版本与 sfml.js 的发布独立。

总览 · 功能示例 · 官方示例

Süper Mario Kart ​

安装与运行

Node.js 20.5+ · 带音频输出的图形桌面 · 原生构建要求

在存放项目的目录中克隆仓库,再进入游戏目录运行:

sh
git clone https://github.com/XadillaX/super-mario-kart-sfml.js.git
cd super-mario-kart-sfml.js
npm install
npm start

npm start 编译到 dist/ 后启动游戏。Python 赛道制作工具为可选项,游玩不需要安装。

按键速查

X
加速
Z
刹车
C
跳跃/漂移
Left Right
转向
Up Down
向前/向后使用道具
Enter
确认/跳过赛道预览
Esc
暂停

继续比赛:暂停菜单选 No,按 Enter;选 Yes 则放弃比赛。

Controls 和 Settings 菜单可调整按键、音量与分辨率。

赛道、项目来源与许可

super-mario-kart-sfml.js 使用 TypeScript + sfml.js 移植 vmbatlle/super-mario-kart。原版使用 C++ 和 SFML 2.5.1 编写;移植版的 54 个 TypeScript 模块沿用上游源码目录结构,保留 Mode 7 渲染、玩法、AI 与素材。

依赖固定为 sfml.js@1.0.0-rc.2 和 typescript@7.0.2。

五条赛道分别为 Donut Plains 1、Mario Circuit 2、Ghost Valley 1、Bowser Castle 1 和 Rainbow Road。代码采用 GPL v3;角色、图像与音乐归 Nintendo 所有。这是非官方的教育用途同人项目。

play-nes ​

安装与运行

推荐 Node.js 22 · Python 与 C++20 编译器 · 带音频输出的图形桌面

安装已发布的播放器,启动内置游戏:

sh
npm install -g play-nes
nes croom

打开有权使用的本地 ROM:

sh
nes "/path/to/your game.nes"

按键速查

玩家一

方向
W A S D
A/B
J K
Select
右 Shift
Start
Enter

玩家二

方向
Left Right Up Down
A/B
小键盘 5 小键盘 6
Select
小键盘 8
Start
小键盘 9

Esc 或关闭窗口退出;失去焦点时释放按住的按键。

显示与速度选项

--scale 3 调整窗口缩放,--frameRate 60 使用正常速度。帧率也会改变模拟速度,不仅改变显示速度。完整选项见 nes --help。

玩一局打砖块 ​

在 sfml.js 仓库根目录先执行一次 npm ci,再运行 node examples/breakout.cjs。修改源码后执行 npm run build。

npm run demo:breakout 构建并启动游戏。macOS/Linux 可用以下命令复现游戏截图:

sh
SFML_DEMO_SNAPSHOT=/tmp/sfml-breakout.png \
  node examples/breakout.cjs --autoplay --frames=1500

截图保存最后一帧的真实原生画面。--autoplay 自动控制挡板,--frames 限制运行帧数。node examples/breakout.cjs --self-test 无需打开窗口即可检查游戏逻辑。

node-sfml-demos ​

node-sfml-demos 包含使用 sfml.js 实现的 Bomberman、Breakout、Tetris、Doodle Jump 和 Arkanoid。

在存放项目的目录中克隆这个独立仓库,再进入各游戏目录安装依赖并启动。以 Bomberman 为例:

sh
git clone https://github.com/XadillaX/node-sfml-demos.git
cd node-sfml-demos/bomberman
npm install
node index.js

游戏目录、操作方式与上游 C++ 源码见 仓库 README。安装同样需要满足 原生构建要求。

使用 Node.js 22、Python 3 与 C++20 工具链。在各游戏目录内执行 npm install,再运行 node index.js。部分游戏共享字体和纹理,请保留完整仓库。各游戏固定依赖 sfml.js@1.0.0-rc.2,本页不会升级它们。所有游戏均支持关闭窗口,Bomberman 还会使用音频。Tetris、Doodle Jump 和 Arkanoid 保留原型中尚未完善的游戏逻辑。

16 个 ClojureScript 游戏 ​

16-sfml.js-games-ported Fork 自 jsyqrt/games。原版 16 个游戏就是使用 C++ 和 SFML 编写的;这个 Fork 将它们全部迁移为 ClojureScript + sfml.js,保留原目录结构、素材、游戏逻辑和操作方式。

游戏通过 nbb 在 Node.js 上运行,无需 JVM 或单独编译。在存放项目的目录中克隆游戏仓库,再从仓库根目录启动:

sh
git clone https://github.com/XadillaX/16-sfml.js-games-ported.git
cd 16-sfml.js-games-ported
npm ci
npx nbb "01 Tetris/main.cljs"

需要 Node.js 20.5+、满足 原生构建要求 的环境,以及支持 OpenGL 窗口的图形会话。依赖固定为 sfml.js@1.0.0-rc.2 和 nbb@1.6.214。各脚本按自身目录定位资源。

Chess 需要自行下载适合当前系统的 Stockfish 可执行文件,按表中命令传入路径。Volleyball 使用的 box2dweb 由 npm ci 安装。关闭游戏窗口即可退出。截图、源码和操作说明见 游戏展示。

截图来源 ​

游戏素材来自标明出处的上游项目。provenance.json 记录截图来源与处理方式。截图不是兼容性或游戏测试报告。原游戏素材权利仍归各作者,预览不会改变其许可证。

原版 C++ 游戏及教程出处见 jsyqrt/games,参考迁移见 XadillaX/16-sfml.js-games-ported。node-sfml-demos 与 play-nes 分别记录各自的许可证和来源。

Icons made by Lorc, Delapouite & Skoll game-icons.net · CC BY 3.0