YouTube Playables
FRVR 目前发行的最严格渠道。摩擦集中在长宽比(必须全部支持)和外部网络调用(基本完全禁止)。请配合全局要求一起阅读。
源头依据:Google Playables certification requirements。
游戏必须在所有长宽比下可玩:9:32、9:21、9:16、3:4、1:1、4:3、16:9、21:9、32:9。pillarbox / letterbox 留边可以;不渲染或布局崩了不行。
不允许锁定方向
Section titled “不允许锁定方向”必须不锁设备方向或姿态。
游戏可交互时发出信号
Section titled “游戏可交互时发出信号”FRVR.tracker.gameReady() 是一个必填方法。你必须在游戏变得可交互的那一刻调用它 —— 也就是玩家已进入实际游玩,或进入一个可以操作的主菜单时。绝不要在那之前调用(例如启动、加载资源、或 logo 屏期间)。
过早调用 gameReady() —— 在游戏仍在加载或非交互时 —— 是直接拒。
metadata 不允许品牌
Section titled “metadata 不允许品牌”提交到 YouTube Developer Portal 的缩略图、标题、描述必须不包含工作室 logo。
bootstrap 完成
Section titled “bootstrap 完成”FRVR.bootstrapper.complete() 必须仅在游戏可交互(主菜单或可玩状态)时调用。详见上面的游戏可交互时发出信号。
- 必须用
onAudioSuspend/onAudioResume做静音。宿主静音状态由渠道包自动桥接。 - 必须不做游戏内静音按钮。(比全局基线更严。)
暂停只走 SDK
Section titled “暂停只走 SDK”- 必须不用 Page Visibility API 或任何 web API 检测暂停。只用 FRVR 生命周期回调。
- 在
onSuspend时,所有东西停下:游戏循环、渲染、音频、动画、计时器、网络、输入。 - 游戏必须不在
onResume触发之前重新可交互。不能提前接受输入、不能提前恢复音频或渲染。
- 必须用
FRVR.cloudStorage和FRVR.localStorage持久化所有状态。必须不直接动window.localStorage、cookies、IndexedDB,或引擎级存储(UnityPlayerPrefs、Cocossys.localStorage、Construct 的本地存储)。直接使用是直接拒。(比全局基线更严。) - 云存档总量 < 3 MiB。
- 退出时的最后一次存档是 best-effort,上限 64 KiB。不要依赖。
- 旧版本游戏的存档必须继续能读。
- 应该用
FRVR.score.setScore(value)提交分数。 - 提交的值必须与云存档里的最高分一致。
- 必须用
FRVR.locale.get()。 - 必须不用
navigator.language/navigator.languages。 - 必须支持英文。其他语言可选。
YouTube 是当前变现限制最严的渠道:
- 必须不展示平台外广告。仅允许通过
FRVR.ads路由的广告(渠道包接到宿主自己的广告界面,目前公开预览中)。 - 必须不通过平台外服务做内购。当前没有平台内的内购选项;实际等于内购被禁用。
- 必须在 YouTube Developer Portal 申报任何变现行为。
- 渠道包对不支持的类型会让
FRVR.iap.isReady() === false、FRVR.ads.isSupported(type) === false。请相应地控制 UI。
- 必须不做任何外部网络调用。所有内容打到 YouTube 托管的包里。仅允许 FRVR 渠道包内部产生的网络流量。
- 必须不绕过这个限制(用 Google 域名做代理、把 payload 编进图片请求等)。YouTube 视为安全违规。
- 必须遵守 Google 隐私政策,与 FRVR 隐私政策一同适用,不是替代。
- 必须不读剪贴板,除非是直接响应玩家的明确粘贴动作。
YouTube 在全局预算之上额外要求:
- 初始包(页面加载 →
FRVR.bootstrapper.complete()):必须 < 30 MiB;应该 < 15 MiB。 - 总包:必须 < 250 MiB。
- 单文件:必须 < 30 MiB;应该 < 512 KiB。
- 存档:必须 < 3 MiB;应该 < 500 KiB。
- 加载时间:应该 < 5 秒到可交互。
- 必须在 Android 和 iOS 的 YouTube app,以及 Edge、Chrome、Firefox、Safari 上跑通。
- 必须不让 JS 堆峰值超过 512 MB。
- 必须只用相对路径。
- 必须文件名仅包含字母数字加
_、-、.。
- 必须遵守 YouTube 社区准则。
- 必须不面向儿童(“made for kids”)。内容必须适合 13+ 一般受众。
- 必须不用误导性的标题、缩略图、描述。
- 必须遵守 YouTube 开发者 ToS。
- 必须为在 YouTube 上发行清好所有第三方 IP、商标、音乐、形象权。
- staging 链接保密,必须不在测试范围之外分享。