docs: record Mooncakes release
MoonPhaserKit 是面向 MoonBit JavaScript 后端的 Phaser 3 轻量游戏开发绑定库。它让开发者用 MoonBit 编写 2D 网页游戏逻辑,并调用 Phaser 3 的场景、精灵、输入、动画、音频、相机、Tilemap 和 Arcade Physics 能力。
本项目用于 2026 MoonBit 国产基础软件生态开源大赛。项目定位不是提交一个小游戏,而是补齐 MoonBit Web 游戏生态中“用 MoonBit 写浏览器 2D 游戏”的基础绑定能力;示例游戏 Moon Jumper 用来验证绑定链路、工程接入方式和浏览器运行效果。
phaser@3.90.0
examples/moon-jumper-web
针对预验收反馈,本仓库已完成以下增强:
源码方式,适合评审和本地验收:
git clone https://github.com/Ridge-Lab/MoonPhaserKit.git cd MoonPhaserKit moon check --target js moon test --target js
Mooncakes 方式用于包索引和依赖安装验收。当前版本已发布为 Ridge-Lab/moonphaserkit:
Ridge-Lab/moonphaserkit
moon add Ridge-Lab/moonphaserkit
维护者发布新版本时,请确认 moon.mod 中 / 前面的 owner 与实际 Mooncakes 用户名一致,然后执行:
moon.mod
/
moon publish
宿主网页需要安装 Phaser,并在加载 MoonBit 生成的 JavaScript 前暴露全局对象:
import Phaser from "phaser"; globalThis.Phaser = Phaser; await import("./generated/moon-jumper.js");
fn main { let config = @moonphaserkit.GameConfig::new(parent="game") ignore(@moonphaserkit.Game::create( config, scene => { scene.load_image(@moonphaserkit.ImageAsset::new("player", "/assets/player.svg")) scene.load_spritesheet( @moonphaserkit.SpriteSheetAsset::new("hero-run", "/assets/hero-run.png", 32, 48), ) scene.load_audio(@moonphaserkit.AudioAsset::new("jump", "/assets/jump.ogg")) }, scene => { scene.create_animation( @moonphaserkit.AnimationConfig::new( "run", "hero-run", @moonphaserkit.FrameRange::new(0, 7), frame_rate=14, repeat_mode=@moonphaserkit.AnimRepeatForever, ), ) let player = scene.add_sprite(120.0, 220.0, "player") player.apply_options(@moonphaserkit.SpriteOptions::new(collide_world_bounds=true)) player.play_animation("run") scene.main_camera().start_follow(player) ignore(scene.delayed_call(@moonphaserkit.DurationMs::seconds(1), () => { player.set_tint(0xffcc00) })) }, _scene => (), )) }
cd examples/moon-jumper-web corepack enable pnpm install --frozen-lockfile pnpm run dev
打开 Vite 输出的本地地址后,使用方向键左、右、上进行移动和跳跃;在移动端视口可以点击画布触发跳跃。
在提交或评审前建议依次执行:
moon check --target js moon test --target js cd examples/moon-jumper-web corepack enable pnpm install --frozen-lockfile pnpm run build pnpm run smoke
其中 pnpm run smoke 会启动浏览器检查 Phaser canvas 是否出现、桌面和移动视口是否正常、键盘交互是否可触发,以及页面是否出现 console error 或 HTTP 错误。
pnpm run smoke
GameConfig
Game
Scene
SceneControlCommand
start_scene
launch_scene
pause_scene
resume_scene
stop_scene
sleep_scene
wake_scene
TimerEventConfig
TimerEvent
delayed_call
add_timer_event
ImageAsset
TextureAsset
SpriteSheetAsset
TextureAtlasAsset
AudioAsset
TilemapJsonAsset
BitmapFontAsset
Sprite
Text
DisplayObjectOptions
TextStyle
SpawnSpec
AnimationConfig
FrameRange
AnimationPlayOptions
TweenConfig
SpriteTween
Sound
SoundOptions
SoundMarker
AudioFade
AudioBusState
CursorKeys
Key
Pointer
PointerSnapshot
TouchZone
SwipeSnapshot
KeyBinding
ArcadeBody
Collider
PhysicsMaterial
TileCollisionRange
TilePropertyMatcher
Camera
CameraBounds
CameraFollowOptions
CameraFadeOptions
CameraShakeOptions
CameraPanOptions
CameraZoomOptions
Tilemap
Tileset
TileLayer
TilemapConfig
TilesetConfig
TileLayerConfig
TileObject
TileSpawnPoint
RuntimeCompatibility
IntegrationChecklist
BrowserSmokeScenario
ErrorPathExpectation
FfiCallRecord
3.90.0
3.60+
globalThis.Phaser
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonPhaserKit
MoonPhaserKit 是面向 MoonBit JavaScript 后端的 Phaser 3 轻量游戏开发绑定库。它让开发者用 MoonBit 编写 2D 网页游戏逻辑,并调用 Phaser 3 的场景、精灵、输入、动画、音频、相机、Tilemap 和 Arcade Physics 能力。
本项目用于 2026 MoonBit 国产基础软件生态开源大赛。项目定位不是提交一个小游戏,而是补齐 MoonBit Web 游戏生态中“用 MoonBit 写浏览器 2D 游戏”的基础绑定能力;示例游戏 Moon Jumper 用来验证绑定链路、工程接入方式和浏览器运行效果。
交付范围
phaser@3.90.0。examples/moon-jumper-web,使用 Vite 启动网页 Demo。评审反馈处理
针对预验收反馈,本仓库已完成以下增强:
安装与使用
源码方式,适合评审和本地验收:
Mooncakes 方式用于包索引和依赖安装验收。当前版本已发布为
Ridge-Lab/moonphaserkit:维护者发布新版本时,请确认
moon.mod中/前面的 owner 与实际 Mooncakes 用户名一致,然后执行:宿主网页需要安装 Phaser,并在加载 MoonBit 生成的 JavaScript 前暴露全局对象:
最小示例
运行 Demo
打开 Vite 输出的本地地址后,使用方向键左、右、上进行移动和跳跃;在移动端视口可以点击画布触发跳跃。
验收命令
在提交或评审前建议依次执行:
其中
pnpm run smoke会启动浏览器检查 Phaser canvas 是否出现、桌面和移动视口是否正常、键盘交互是否可触发,以及页面是否出现 console error 或 HTTP 错误。API 概览
GameConfig、Game、Scene,支持 Phaser 游戏创建、销毁和场景生命周期。SceneControlCommand、start_scene、launch_scene、pause_scene、resume_scene、stop_scene、sleep_scene、wake_scene。TimerEventConfig、TimerEvent、delayed_call、add_timer_event,支持延迟、重复和循环回调。ImageAsset、TextureAsset、SpriteSheetAsset、TextureAtlasAsset、AudioAsset、TilemapJsonAsset、BitmapFontAsset。Sprite、Text、DisplayObjectOptions、TextStyle、SpawnSpec,支持位置、缩放、透明度、层级、文字样式、显示和销毁。AnimationConfig、FrameRange、AnimationPlayOptions、TweenConfig、SpriteTween。Sound、SoundOptions、SoundMarker、AudioFade、AudioBusState。CursorKeys、Key、Pointer、PointerSnapshot、TouchZone、SwipeSnapshot、KeyBinding。ArcadeBody、Collider、PhysicsMaterial、TileCollisionRange、TilePropertyMatcher。Camera、CameraBounds、CameraFollowOptions、CameraFadeOptions、CameraShakeOptions、CameraPanOptions、CameraZoomOptions。Tilemap、Tileset、TileLayer、TilemapConfig、TilesetConfig、TileLayerConfig、TileObject、TileSpawnPoint。RuntimeCompatibility、IntegrationChecklist、BrowserSmokeScenario、ErrorPathExpectation、FfiCallRecord。兼容性
3.90.0;库内兼容性模型将 Phaser3.60+标记为可支持窗口。globalThis.Phaser。文档
仓库与参赛说明