Skip to content

認証要件 ​

UZU プラットフォームで配信するゲームが満たすべき要件です。YouTube Playables の certification 要件を参考に、creator UX とプラットフォーム品質を担保します。

段階的施行

これらの要件は今後 npx uzu publish 時に自動 lint で検証される予定です。当面は warning レベル、後に MUST 化されます。

ライフサイクル要件 ​

要件レベル説明
init() 呼出MUSTSDK 初期化のため。run() 経由なら自動
firstFrameReady() 呼出SHOULDゲーム splash 描画完了時。ホストの spinner を消す
gameReady() 呼出SHOULDユーザー操作可能になった時。広告タイマー・分析開始
バックグラウンド時の停止SHOULDdocument.visibilityState 監視 or 将来の onPause() API

バンドルサイズ制約 ​

項目上限推奨
初期バンドル (起動時 DL)30 MB< 10 MB
総バンドル (全アセット合計)250 MB< 100 MB
個別ファイル30 MB< 512 KB
総ファイル数8,000< 2,000

lazy load

初期 10 MB に収めて 5 秒以内に gameReady() を発火、残りはステージ進行で順次ロードする設計を推奨します。

レスポンシブ要件 ​

要件レベル
縦/横の複数アスペクト比対応MUST
viewport 変更時に state 維持MUST
device orientation lock 禁止MUST
タッチ + マウス両入力対応MUST
Safe Area (iOS notch) 対応SHOULD

検証する基準サイズ ​

「複数アスペクト比対応」を満たしたと言えるのは、下の 3 つで内容が画面外に出ないことを確認したときです。数字は CSS px(デバイス px ではありません)。

何landscapeportrait何を見るか
下限(uzu dev の 1 席)780 × 360360 × 780短辺 360。ここで収まれば実機で困ることはまず無い
実機(iPhone 相当)844 × 390390 × 844実際に一番多く遊ばれる寸法
広い(iPad 相当)1194 × 834834 × 1194余白が間延びしていないか、最大幅が効いているか

下限の短辺 360 と比 19.5:9 は、uzu dev の harness が 1 席あたりに保証する最小値と同じです。この 3 つを外れたサイズだけで確認しても、要件を満たした証明にはなりません。

見落としやすいのは高さ

横画面で先に足りなくなるのは幅ではなく高さです。360px の短辺に対し、HUD とホームインジケータ(--uzu-content-inset-top + --uzu-content-inset-bottom、iPhone 横持ちで 73px)だけで約 2 割を持っていきます。文字サイズや余白を px 固定で書いていると、小さい画面でだけ下端が切れます。詳しくは SafeArea と HUD 回避。

グリッドで見るなら、縮小表示が掛かるまでウィンドウを狭めてください。ウィンドウが広いとペインが下限より大きく組まれ、見切れを取りこぼします。 縮小表示では文字が読める大きさか・押せる大きさかは判断できないので、そこまで見るなら単体表示(?player=N)のウィンドウを上の寸法に合わせてください。手順は 開発・テストガイド にあります。

ファイル / パス制約 ​

要件レベル
相対パスのみ (絶対パス禁止)MUST
ファイル名は英数字 + _, -, . のみMUST
HTTPS 経由でのみアセット読込MUST

パフォーマンス要件 ​

項目上限
JS heap 上限 (iOS Safari 制約)512 MB
初回起動 → gameReady() まで5 秒
プレイ中の安定 FPS30 fps 以上

禁止事項 ​

項目理由
in-game の exit / quit ボタンプラットフォーム側 UI と競合
外部サイトへの直接リンクコンテンツ統制
プラットフォーム同様のアイコン (例: 戻るボタン風)UI 混乱
外部 ad SDK の組み込みプラットフォーム経由で配信
個人情報の自前収集privacy ポリシー違反

SDK 統制下の要素 ​

ゲームは以下を SDK 経由でホスト (UZU app) に委ねる必要があります:

要素SDK API
効果音再生playSound()
BGM 再生playBgm() / stopBgm()
ボイチャ mic 制御setMicEnabled()
ボイチャルーム移動changeRoom()
プレイ画面を閉じるfinishGame()

バリデーション項目 (npx uzu publish で自動チェック予定) ​

bash
$ npx uzu publish
✓ manifest.json 正常
✓ initial bundle: 18MB (limit: 30MB)
✓ total bundle: 87MB (limit: 250MB)
✓ files: 1,234 (limit: 8,000)
✓ SDK init 呼出 detected
✗ DOM API detected: document.body.innerHTML (line 42 in main.ts)
  → engine-2d ノードを使ってください
✗ Orientation lock detected: screen.orientation.lock("portrait")
  → manifest.orientation で宣言してください

Publish aborted. Fix 2 errors and retry.