文档 · 创作与发布

发布游戏

把网页游戏发布到 OriginGame,得到可分享的游玩链接、作品页和版本历史。可以从 Origin、你自己的 Agent、发布脚本或 HTTP API 发布,四种方式走同一个发布接口。

发布方式

方式适合凭据
从 Origin 发布在 Origin 里做的游戏登录 Origin 即可
让 Agent 通过 Origin MCP 发布在自己的 Agent 里做的游戏MCP 的浏览器登录,或 Origin Kit / 安装脚本配置的设备凭据
发布脚本 deploy.sh终端和 CI账号 API token(og-...)
HTTP API POST /api/deploy自己的流水线账号 API token(og-...)

不管用哪种方式,一个新游戏会得到一个游戏 ID 和第 1 个版本;之后每次更新都是一个新版本。

上传要求

  • 一个静态网页构建,打成 ZIP,根目录有 index.html。如果 ZIP 里只有一个顶层文件夹且其中有 index.html,平台会自动把它提到根目录。HTML、Three.js、Godot 和 Unity 的网页导出都可以。
  • 游戏运行时不要跨源请求其他站点,所有资源随包一起发布。
  • 新游戏必须有标题和封面。封面是 16:9 的 PNG 或 JPEG,至少 640×360,不超过 5 MB。
  • 可选:3:4 竖版海报(PNG 或 JPEG,至少 600×800,不超过 5 MB);最多 6 张截图,每张不超过 2 MB。
  • 通过 POST /api/deploy 的 file 字段上传的 ZIP 最大 200 MB(平台可以调低这个上限,超过时返回 413)。

Unity WebGL

构建 WebGL 版本(Unity:File → Build Settings → WebGL),发布构建出的文件夹,也就是含有 index.html、Build/ 和 TemplateData/ 的那一个。

  • 任何压缩方式都可以:Brotli、Gzip 或 Disabled,不需要开启 "Decompression Fallback"。平台会识别用 Brotli 或 Gzip 压缩的 Unity 构建(一个定义了 createUnityInstance 的 *.loader.js,旁边有 .br 或 .gz 文件),并以对应的 Content-Encoding 和内层文件的类型提供这些文件(game.wasm.br 按 application/wasm 提供)。
  • 单个文件不超过 512 MiB,整个构建不超过 1 GiB(最多 20,000 个文件)。
  • 多线程构建需要跨源隔离:在构建根目录放一个 origingame.runtime.json,内容为 {"version":1,"crossOriginIsolated":true}。
  • Windows、Mac、Linux 和 Android 构建无法发布,请导出 WebGL。
  • 装有带 WebGL Build Support 的 Unity Editor 时,npx origingame 会识别 Unity 项目并替你构建。

运行声明

构建根目录的 origingame.runtime.json 说明平台如何运行这个构建。除 version 外每个字段都可选:

字段含义
version固定为 1
crossOriginIsolatedtrue 时发送 COOP 和 COEP,用于 SharedArrayBuffer 和多线程
precompressedtrue 时每个 .br 文件带 Content-Encoding: br、每个 .gz 文件带 Content-Encoding: gzip 提供,类型按内层文件名决定(app.wasm.gz 是 application/wasm)。不声明时 .br 和 .gz 是普通文件,原样下载。Unity 构建会被自动识别;设为 false 关闭识别

生效的值会作为 runtime 出现在发布应答和版本列表的每一项中。

从 Origin 发布

在 Origin 的「发布」视图里点「发布…」,或在对话里让 Origin 发布。Origin 先打包(某个检查点的不可变构建存档),再用 deploy_create 或 deploy_update 发布,并把源码检查点记录在发布上。提交前平台会在 Player 里检查游戏能否加载并报告就绪,检查失败时什么都不会发布。发布后在「发布」视图里切换上线版本。详见 Origin。

通过 Origin MCP 发布

接入 Origin MCP(https://mcp.origingame.ai/mcp,见 Origin MCP)后,对 Agent 说「把这个游戏发布到 Origin」即可。Agent 使用这些工具:

工具作用
deploy_list列出你账号下的游戏
deploy_prepare_upload为 ZIP 申请直传地址(按 size_bytes 和 sha256),支持最大 1 GiB
deploy_create新建游戏:upload_id(或不超过 25 MiB 的 archive_base64)、标题、封面等
deploy_update更新已有游戏,需要 game_id 和 expected_revision
deploy_update_metadata只改标题、简介、类型或是否公开列出,不上传构建
deploy_status用保存的 operation_id 查询一次发布的实际结果
deploy_releases列出版本、当前和上一个上线版本、revision
deploy_activate把保留的某个版本(或 previous)切换为上线版本
deploy_discard_release永久删除一个非当前版本的文件
deploy_delete删除游戏
deploy_generate_artwork生成封面和竖版海报(会扣费)

Origin MCP 的发布指引要求 Agent:公开发布、更新指定游戏或删除前先征得你的同意;重试时复用同一个 operation_id 和相同输入;结果不确定时先用 deploy_status 查询,而不是再发布一次。发布成功后,Agent 应报告返回的 gameId、playUrl 和 portalUrl。

用脚本发布

发布脚本 deploy.sh 在 origingame-skill 仓库里,需要 bash、curl 和 Bun,并从环境变量读取 OG_API_KEY 和 OG_HOST:

git clone https://github.com/fran0220/origingame-skill
export OG_HOST=https://origingame.ai
export OG_API_KEY=og-...
origingame-skill/scripts/deploy.sh ./dist --title "Neon Dodge" --cover cover.png
  • 第一次发布后,脚本在游戏目录里写入 .origingame-deploy.json,记住发布者和游戏 ID,之后的运行更新同一个游戏,而不是新建一个。这个文件不会被打进上传的包。
  • 更新必须带 --expected-revision,取值来自版本列表:
origingame-skill/scripts/deploy.sh releases list GAME_ID
origingame-skill/scripts/deploy.sh ./dist --update GAME_ID --expected-revision 3
  • 运行 deploy.sh --help 查看全部选项(简介、类型、方向、标签、语言、截图、海报、不公开列出等)。

用 HTTP API 发布

所有请求都用 Authorization: Bearer og-...,地址是 https://origingame.ai。

新建游戏

curl https://origingame.ai/api/deploy \
  -H "Authorization: Bearer $OG_API_KEY" \
  -F "title=Neon Dodge" \
  -F "cover=@cover.png" \
  -F "file=@dist.zip" \
  -F "description=Dodge the neon walls." \
  -F "genre=arcade" \
  -F "orientation=portrait"

成功返回 201:

{
  "gameId": "...",
  "slug": "neon-dodge",
  "version": 1,
  "releaseId": "...",
  "traceId": "...",
  "runtime": { "crossOriginIsolated": false, "precompressed": false },
  "warnings": [],
  "playUrl": "...",
  "portalUrl": "https://origingame.ai/g/neon-dodge"
}

更新游戏

先读版本列表,拿到当前的 revision,再用它更新。不带 expected_revision 返回 428;revision 已经变化返回 409,这时应重新查看版本历史再决定,不要自动用新值重试。

curl https://origingame.ai/api/deploy/games/GAME_ID/releases \
  -H "Authorization: Bearer $OG_API_KEY"

curl -X PUT https://origingame.ai/api/deploy/GAME_ID \
  -H "Authorization: Bearer $OG_API_KEY" \
  -F "expected_revision=3" \
  -F "file=@dist.zip" \
  -F "changelog=Faster walls after level 5"

GET /api/deploy/mine 列出你账号下的游戏。

表单字段

字段说明
file构建 ZIP,根目录有 index.html,最大 200 MB
title标题,新建时必填
cover16:9 封面,新建时必填
poster3:4 竖版海报,可选
screenshots截图,可重复,最多 6 张
description简介,最多 2000 字符
tagline / controls / changelog一句话介绍(120 字符)、操作说明(600 字符)、本版更新说明(1000 字符)
genrearcade action puzzle shooter platformer racing strategy casual education cards other
enginehtml(默认)、origin-engine(og build --publish 产物)、unity(Unity WebGL 构建);threejs 已弃用(新作品退役,仍接受);godot 新发布拒绝(Godot 的网页导出按 html 发布;已发布的 Origin Wizard 0.4 及更早版本声明的 godot 按 html 存,并带 engine.godot_as_html 提示)
orientationany(默认)、landscape、portrait
aspect画面比例,如 16:9;默认铺满
max_players1 到 16,默认 1
tags / languages逗号分隔,如 neon,dodge 和 zh,en
unlistedtrue 时不出现在公开列表里,游玩链接照常可用
operation_id可选,16 到 128 位字母、数字、_ 或 -;用同一个值重试不会重复发布,结果可用 GET /api/deploy/operations/<operation_id> 查询
expected_revision更新时必填,来自版本列表

版本、上线与回滚

  • 每次发布或更新都会生成一个新版本。成功发布的版本没有自动过期,文件会一直保留,直到你丢弃它或删除游戏。
  • 把某个保留的版本切换为上线版本,不需要重新上传或构建。方式有四种:Origin「发布」视图里的「上线」;/me/games 的版本历史;MCP 的 deploy_activate;或 HTTP API:
curl https://origingame.ai/api/deploy/games/GAME_ID/releases/activate \
  -H "Authorization: Bearer $OG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"releaseId": "previous", "expectedRevision": 3, "operationId": "rollback-neon-dodge-0001"}'
  • releaseId 填版本列表里的 releaseId,或 previous 表示上一个上线版本。operationId 为 16 到 128 位,重试时复用。
  • 切换版本不会回滚玩家的云存档,旧的多人房间会断开;运行设置跟随版本,商店页文字、封面和截图保持不变。
  • 脚本对应的命令是 deploy.sh releases activate GAME_ID previous REVISION OPERATION_ID。
  • 丢弃版本(deploy_discard_release,或 /me/games 里的丢弃)会永久删除该版本的文件,之后无法再切换回去。

发布后得到什么

  • 分享链接 https://origingame.ai/g/<slug>,游玩页 /g/<slug>/play,以及响应里 playUrl 给出的独立游玩地址。
  • 作品页 /games/<slug>:排行榜、评论和作者的其他作品。游戏出现在「游戏」和你的创作者主页,可以分享、点赞和评论;设为不公开列出时只能通过链接访问。
  • 平台能力:游戏通过游戏协议(Player protocol 2)使用玩家身份、排行榜、云存档和多人房间,见 游戏协议。
  • 管理:在 /me/games 编辑标题、简介和类型,切换是否公开列出,查看版本历史,删除游戏。通过 Origin MCP 还可以查看和重置排行榜、查看云存档、管理评论和查看举报。
  • 检查与审核:发布后平台会在 Player 里检查游戏能否正常加载,结果记录在版本列表里;新游戏发布后会通知运营审核内容。