用途
Monetize Game 用于把已经部署上线的网页游戏注册到 Play.fun(OpenGameProtocol),并集成其浏览器 SDK,从而获得积分追踪、排行榜和钱包连接能力,最终生成一个可分享的 play.fun 游戏链接。该链接可用于在 Moltbook 等平台发布。
主要能力
- 在 Play.fun 上注册游戏,并配置反作弊参数(如单局最高分、每日会话数、每日累计积分上限)。
- 将 Play.fun 浏览器 SDK 集成进游戏,提供积分组件浮层、排行榜追踪和钱包连接(用于领取奖励)。
- 重新构建并重新部署游戏,使 SDK 生效。
- 输出一个 play.fun 游戏 URL 供分享。
使用方式
技能按步骤执行:
- 定位游戏:解析参数找到游戏项目目录;若未提供,则在当前工作目录查找含 Phaser 或 Three.js 依赖的 package.json,并读取构建配置以确定部署 URL。
- Play.fun 认证:通过本地认证脚本检查凭据状态;若无凭据,启动本地认证服务器并引导用户在浏览器中登录,凭据自动保存;回调失败时可手动粘贴 base64 凭据。
- 确定游戏 URL:依次检查 here.now 部署状态文件、GitHub Pages 地址、构建配置中的 base 路径,必要时询问用户,并验证 URL 可访问。
- 注册游戏:读取 package.json 的名称与描述,依据计分系统设定反作弊限制,通过 Play.fun MCP 工具或 API(POST https://api.play.fun/games)注册,保存返回的游戏 UUID。
- 集成浏览器 SDK:在 index.html 的 </head> 前加入 x-ogp-key meta 标签和 SDK 脚本(https://sdk.play.fun/latest);创建 src/playfun.js 模块,把游戏事件接入 SDK——游戏过程中调用 addPoints() 缓冲积分(非阻塞),仅在游戏结束等自然停顿点调用 savePoints()(会打开阻塞式弹窗);在入口文件 main.js 中非阻塞地调用初始化。SDK 还会自动设置安全区域内边距 CSS 变量,需确认 UI 元素不被 Play.fun 头部或 Safari 底栏遮挡。
- 重新构建并部署:执行构建命令,构建失败则修复后重试;随后按平台重新部署(here.now 或 GitHub Pages 等)。
- 确认与分享:验证部署可访问,输出游戏链接和 Play.fun 页面地址,并提示可在 Moltbook 分享。
适用场景
- 已有可公开访问 URL 的网页游戏(如已部署到 here.now、GitHub Pages、Vercel 等)。
- 使用 Phaser 或 Three.js 等前端游戏框架、基于事件总线(EventBus)架构的项目。
- 希望为游戏加入积分、排行榜和奖励领取能力的开发者。
限制与注意事项
- 前置条件:游戏必须已部署且有公开 URL;需要安装 Node.js。
- savePoints() 会打开阻塞式弹窗,绝不能在游戏进行中或定时器中调用,只能在游戏结束、关卡切换、菜单等自然停顿点调用。
- SDK 从 CDN 加载,可能被广告拦截器或隐私扩展屏蔽;集成应保持非阻塞,加载失败时游戏仍可运行。
- 认证回调可能被弹窗拦截器或严格 CORS 策略阻止,此时需改用手动粘贴凭据方式。
- 游戏注册可能因缺少必填字段或 URL 不可公开访问而返回 4xx 错误。
- 安全方面:x-ogp-key 是公开客户端标识(类似 Stripe 可发布密钥),可安全嵌入前端;密钥仅用于服务端注册调用,不会写入游戏源码或部署产物;钱包连接与奖励领取均由玩家通过 SDK UI 发起,开发者代码不处理资金或私钥。
- 关于收费、价格、具体奖励金额等信息,资料中暂未提供。