ZH

用 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

接下来,教程会手把手带你做出一款游戏:

  1. Hello world:一个菜单、一段文字、一个音效
  2. 会移动、会动画的角色
  3. 平台跳跃游戏:关卡、碰撞、摄像机
  4. 音效与音乐
  5. 菜单、选项、暂停与多语言
  6. 保存分数与选项
  7. 在线多人游戏
  8. 游戏主页与发布

游戏做完之后:上架 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 文件里。