用 JumPHP 制作游戏
JumPHP 是一个用 PHP 编写 2D 复古游戏的框架。同一份代码既能在桌面运行(PHP + SDL2,真正的游戏窗口),也能在浏览器中运行(PHP 编译为 WebAssembly):本站所有游戏都是这样跑起来的。上手的方式有好几种,从最快到最完整,任你选择。
| 方式 | 账号 | 所需条件 | 适合谁 |
|---|---|---|---|
| 沙盒 | 不需要 | 一个浏览器 | 1 分钟上手:改一改 hello world 并运行 |
| 交给你的 Claude | GitHub | Claude Code + Docker | 描述你的游戏,让 Claude 来编写、测试、发布 |
| 在线编辑器 | GitHub | 一个浏览器 | 修改已发布的游戏,或 Fork 别人的游戏 |
| 在你的电脑上 | 不需要(发布时需要 GitHub) | Docker | 像专业开发者一样工作:测试、截图、浏览器构建。一行命令即可:curl -fsSL https://jumphp.net/install.sh | sh |
| 导入仓库 | GitHub | 一个 JumPHP 仓库 | 把已有的游戏发布到这里 |
| Amstrad CPC 重制 | GitHub | 游戏的 .dsk 磁盘文件 |
用原版画面和音乐重制 CPC 游戏 |
| 移植现有游戏 | GitHub | 游戏的源代码 | 把老游戏(C、Pascal、BASIC……)翻译成 PHP |
接下来,教程会手把手带你做出一款游戏:
游戏做完之后:上架 Google Play(用 bin/jumphp twa 生成 Android 应用)。
如果你的程序需要读取游戏目录:见公开 API。
JumPHP 游戏是怎么运转的
一个游戏就是 JumPHP 项目中的 games/<id>/ 文件夹:
games/mon-jeu/
config/game.yaml 标题、分辨率(320 × 180……)、第一个场景
config/input.yaml 动作(跳跃、射击……)及其对应的按键、手柄、触摸屏操作
src/Scene/*.php 各个画面:标题、游戏、暂停……
src/Entity/*.php 会动的东西:主角、敌人……
assets/ 图片、音效、音乐、关卡(可选:一切都可以用 PHP 绘制)
site/ (可选)游戏的主页
每一帧(每秒 60 次),引擎会调用当前场景的 update($dt)(更新游戏状态),然后调用 render($r)(绘制画面)。坐标使用“虚拟”像素(即游戏的分辨率):引擎会把画面放大到屏幕的大小。
框架的完整约定,无论对人还是对 AI,都写在 JumPHP 仓库的 AGENTS.md 文件里。