この文書では、次の用語を使用します(RFC 2119 に準拠)。
- 「必要があります」と「許可されていません」— すべてのゲームが準拠する必要がある必須要件です。
- 「推奨されています」と「推奨されていません」— 必須ではありませんが、ユーザーに表示されるゲームをランク付けまたはフィルタリングする方法を決定する際に考慮される可能性がある推奨事項です。たとえば、ユーザーの画面が横向きの場合、GameSnacks ではこちらのアスペクト比をサポートするゲームのみが推奨される可能性があります。
- 「提案されています」— 必須ではない提案であり、ゲームのフィルタリングには使用されませんが、ユーザーが明示的に要求した場合はこの限りではありません。たとえば、ゲームパッド入力のサポートが提案されている場合、ゲームパッド入力に対応したゲームを検索したユーザーに、そうしたゲームのリストが表示される可能性があります。
ゲームとそのアセットには、次の要件が適用されます。
ゲームの構造
ゲームは、ファイルのバンドルとしてアップロードします。このバンドルには、ゲーム本体のコードとランタイム リソース、GameSnacks カタログに表示するゲームのマーケティング アセット、およびゲームについて説明するメタデータを格納し、バンドルのリソースをすべて列挙する game.json
ファイルが含まれます。
game.json
ゲームのメタデータを格納する構成ファイル。
- ゲームには、必須フィールドをすべて含む
game.json
ファイルが含まれている必要があります。 - このファイルはゲームのルート ディレクトリに配置する必要があります。
HTML エントリ ポイント
ゲームを読み込む HTML ドキュメント。
- エントリ ポイントは有効な HTML ファイルである必要があります。
このファイルに含める
head
要素とbody
要素は、それぞれ 1 つまでである必要があります。- これらの要素を含める場合は、開始タグと終了タグで囲む必要があります。
これらの要素とその属性以外のコンテンツは無視されます。
body
要素に属性を直接設定する代わりに、以下を使用できます。onload
:Window
の読み込みイベントstyle
: CSS スタイル設定
ファイル
バンドルに含まれる個々のファイル(ゲームおよび関連するマーケティング アセットなど)はすべて、以下の要件を満たしている必要があります。
- すべてのファイルは 10 MiB 未満である必要があります。
- ファイルの参照には、相対パスのみを使用する必要があります。
- パスでは、ディレクトリ区切り文字として
/
のみを使用する必要があります。 - ファイル名には、予約されていない文字(RFC 3986)のみを使用する必要があります。
- ファイル名とすべてのパスは小文字にする必要があります。
ゲームのサイズ
ゲームのサイズとは、ユーザーのデバイスにダウンロードされるすべてのコードとリソースの合計サイズを指します。
- ゲームのサイズが 100 MiB を超えることは許可されていません。
技術要件
ゲームは、以下の技術要件を満たしている必要があります。
GameSnacks SDK
- ゲームは、すべての必須インターフェースを含む GameSnacks Developer SDK と統合されている必要があります。
- ゲームが広告の API を直接読み込む(例: adsbygoogle.js などの広告タグを挿入する)ことは許可されていません。
- 必要な広告サービスはすべて GameSnacks によって読み込まれます。
- ゲーム内での広告の表示について詳しくは、収益化の要件をご確認ください。
ブラウザの互換性
- ゲームは、Canvas API または WebGL を使用してレンダリングする必要があります。
- ゲームは、次のブラウザの最新および 1 つ前のメジャー バージョンで正しく実行できる必要があります。
- Chrome(Android、iOS、Windows、および macOS)
- Safari(iOS および macOS)
- Firefox(Android および Windows)
- Edge(Windows)
- ゲームは、Android および iOS の最新または 1 つ前のメジャー リリースの最新バージョンにおいて、ウェブビュー内で正しく実行できる必要があります。
- WebView(Android)
- WKWebView(iOS)
- ゲームは、他のスタンドアロンや組み込みのウェブレンダラで可能な限り幅広くテストすることが推奨されています。
最低限必要なデバイス仕様
ゲームはローエンドのデバイスでも適切に動作する必要があります。ガイダンスとして、GameSnacks ゲームに最低限必要なデバイス仕様を以下に示します。
ゲームは、次の仕様以上のデバイスで 30 FPS 以上で実行できる必要があります。
- CPU: Qualcomm 215、Samsung Exynos 7570、Mediatek MT6737 など
- RAM: 2 GiB
- GPU: Arm Mali-T720 MP1、Qualcomm Adreno 308 など
この仕様に適合するスマートフォンには、JioPhone Next、Nokia 1.4、LG K22、Samsung J2 Core、Motorola Moto E4 などがあります。
初回ダウンロード サイズ
初回ダウンロード サイズは、ゲームを開始するためにクライアントにダウンロードされるデータの量です。
- 初回ダウンロードは 15 MiB 未満である必要があります。
- 初回ダウンロードは 5 MiB 未満にすることが推奨されています。
機能要件
ゲームは、以下の機能要件を満たしている必要があります。
読み込み時間
読み込み時間は、最初にコードを実行してゲームを開始するまでにかかる時間です。
- ゲームは、少なくとも 10 Mbps の接続で 1 秒未満に、読み込み画面を表示するか、操作可能になる必要があります。
- ゲームは、少なくとも 10 Mbps の接続で 15 秒未満にプレイできる必要があります。
クラッシュ
- 再現可能なクラッシュが、ゲームで絶えず発生することは許可されていません。
- 再現可能なクラッシュが、ゲームを埋め込んでいるアプリやウェブサイトで絶えず発生することは許可されていません。
アスペクト比
GameSnacks は、ゲームをレンダリングするフレームを提供します。フレームのサイズとアスペクト比は、配信のサーフェス、デバイス、ゲームに配置される広告の有無によって異なります。たとえば、ユーザーがブラウザのウィンドウのサイズを変更すると、フレームのサイズも変化する場合があります。
- パディングやフィラーを追加せずに、フレーム内の利用できるエリアをすべて使用してインタラクティブなコンテンツを表示することが推奨されています。
- 9:16 の縦向きアスペクト比をサポートする必要があります。
- 16:9 の横向きアスペクト比をサポートすることが推奨されています。
- 1:1 のスクエアのアスペクト比をサポートすることが推奨されています。
- 理想としては、レスポンシブかつ縦向き、横向き、スクエアの幅広いアスペクト比をサポートすることが推奨されています。
- フレームサイズが変更されたときには、これらの要件を満たすため、直ちにゲームのサイズも調整される必要があります。
- ゲームが新しいサイズにスムーズに調整されることが推奨されています。
- ゲームによりブラウザの向きがロックされることは許可されていません。
ゲームの操作
- タップ入力で完全にプレイできる必要があります。
- マウス入力で完全にプレイできる必要があります。
- キーボード入力で完全にプレイできることが推奨されています。
- ゲームパッド入力で完全にプレイできることが提案されています。
- ゲーム内に表示されるすべての UI 要素が正しく実装され、機能する必要があります。
- ゲームに無効なコントロールを含めることは許可されていません。機能が利用できない場合は、UI から完全に削除する必要があります。
- これには報酬のプロンプトも含まれます。広告ブレークの
beforeReward
コールバックが呼び出された場合にのみ、報酬プロンプトをレンダリングします。
- これには報酬のプロンプトも含まれます。広告ブレークの
- ゲーム内共有プロンプトをゲームに表示することは許可されていません。
- ユーザーを外部のゲーム、サイト、またはその他のコンテンツに誘導する UI またはゲーム内リンクをゲームに表示することは許可されていません。
- 最後のレベルを完了したりゲームを終了したりしたことをユーザーがはっきりわかるようにする必要があります。
- GameSnacks ゲームでサポートされていないアプリ内購入機能と混同される可能性のある「買う」や「購入」などの単語を使用することは許可されていません。
- ゲームに触覚フィードバックが含まれている場合、ユーザーがそれをオフにできる必要があります。
ゲームの起動
ゲームは起動時に GameSnacks のランタイムと正しく連携する必要があります。GameSnacks の Game
インターフェースは、ゲームの読み込み状況を伝える機能を提供します。たとえば、firstFrameReady
は画面上でレンダリングを開始する準備が整ったことを通知し、ready
はユーザーがゲームの操作を開始できることを通知します。
- 最初のフレームをレンダリングする準備ができたら、
firstFrameReady
を呼び出す必要があります。 - ユーザー操作の受け入れ準備ができたら、
ready
を呼び出す必要があります。 - スプラッシュ画面や読み込み画面など、非インタラクティブな要素が表示されている間は、
ready
を呼び出すことは許可されていません。
ミュートのコントロールと音声の処理
ゲームでは、GameSnacks プラットフォームの音声コントロールを優先する必要があります。
- 全体的なミュートボタンを表示することは推奨されていません。代わりに GameSnacks プラットフォームのミュート コントロールを使用することが推奨されています。
- オーディオのインターフェースと統合し、
audio.isEnabled
メソッドの設定を優先する必要があります。 - BGM や効果音など、ゲーム内に個別のきめ細かなオーディオ コントロールを設定することが提案されていますが、その場合も上記の要件に従う必要があります。
一時停止と再開
ゲームは、一時停止および再開できる必要があります。
- プレイの一時停止と再開をサポートするため、ゲームのインターフェースの
onPause
およびonResume
メソッドと統合されている必要があります。 - ゲームではウェブの Page Visibility API や類似のウェブ API を使用することは許可されていません。
- ゲームが一時停止している場合は、ユーザーにその件を明確に伝える必要があります。
- 一時停止中も、ユーザーの進捗状況を保存することが推奨されています。
データの取り扱い
データの処理に使用できるのは、GameSnacks のストレージの API のみです。
- ゲームのデータを保存するには、ストレージのインターフェースを使用する必要があります。
- ゲームでは、Cookie、
localStorage
、sessionStorage
、IndexedDB
などの他の形式のストレージを使用することは許可されていません。 - ゲームを使ってユーザーデータを収集することは許可されていません。
- プロトコルを使用して、サーバーとの間で外部呼び出しやデータ リクエストを行うことは許可されていません。
- 追加のユーザー契約、プライバシー ポリシー、データ収集や規制に関するその他のメッセージをゲームに表示することは許可されていません。
進捗状況の保存
ユーザーの進捗状況を保存して、ユーザーがゲームを再開するときにはその進捗を復元できるようにしましょう。
- ユーザーがレベルをクリアするなど重要な進捗があった場合に、ストレージのインターフェースを使用してその進捗を保存する必要があります。
- 保存されたゲームの合計サイズは 3 MiB 未満である必要があり、500 KiB 未満であることが推奨されています。
- 保存されている進捗をゲームの開始時に復元する必要があります。
- 以前のバージョンのゲームから保存された進捗を復元できる必要があります。
ハイスコア
ユーザーの最高スコアを保存するか、別の指標を使って進捗状況をトラッキングしましょう。
- ゲームにスコアがある場合、スコアのインターフェースを使ってスコアをトラッキングする必要があります。
- ゲームにスコアがない場合、進捗状況を示す別の指標(クリアしたレベルの数など)をトラッキングすることが推奨されています。
ゲームのコンテンツ
ゲームのコンテンツには次の要件が適用されます。
ゲームの UI
- ゲームは、さまざまな画面解像度で鮮明にレンダリングされる必要があります。たとえば、UI 要素がぼやけたり、モザイク化されたり、引き伸ばされたりしていることは許可されていません。
- 大きな画面に拡大したときにぼやけて見える、低解像度のラスタライズされたアセットを使用することは推奨されていません。
- GameSnacks アクションバーのアイコンと混同される可能性のあるアイコンを使用することは許可されていません。
- ゲーム内に終了ボタンを含めることは許可されていません。これは、ゲームが埋め込まれているアプリまたはサイトによって処理されます。
ローカライズとアクセシビリティ
- 英語をサポートしている必要があります。
- アクセシビリティのレベルをできるだけ上げることが推奨されています。Web Content Accessibility Guidelines(WCAG)、レベル AA を満たすことをおすすめします。
- ゲーム内のテキストは、どのデバイスや画面サイズでも判読できる必要があります。 WCAG 2.2 §1.4.3 をご覧ください。
子供向けコンテンツ
- ターゲットを子供に限定することは許可されていません。詳しくは、コンテンツが「子ども向け」かどうかを判断するをご覧ください。
権利と権利処理
- 第三者の知的財産権の権利処理がすべて完了している必要があります。
- 第三者の商標またはトレードドレスの権利を侵害することは許可されていません
- 必要な音楽権利処理がすべて完了している必要があります。
- 名前や肖像など、必要なパブリシティ権処理がすべて完了している必要があります。
ゲームが表示される場所
GameSnacks ゲームは、Google プロダクトと GameSnacks パートナーのサイトおよびアプリの両方で、また、モバイルとパソコンの両方で幅広く公開されています。GameSnacks ゲームが公開される場所には、Android デバイス上の Google Play ゲーム アプリ、gamesnacks.com ウェブサイトなどがあります。現在、トラフィックの多くはそのような場所から発生しています。ただし、ゲームを公開する場所は常に進化しており、Google は GameSnacks ゲームのオーディエンスを拡大することを常に目指しています。そのため、時間の経過とともに、新しい Google サーフェスや販売パートナーが追加される可能性があります。新しい配信サーフェスを扱う際に、テストが随時実行される場合もあります。
収益化
GameSnacks ではゲームが収益化され、GameSnacks デベロッパー ライセンス契約に基づいてその収益の一部が提供されます。
GameSnacks では、プレロール、次のレベルへの移行イベント、レベル終了イベントなどの自然なゲームイベントに広告が自動的に配置されます。GameSnacks Developer SDK 広告インターフェースを使用して、ゲーム内に追加の広告ブレーク(インタースティシャルとリワードの両方)を配置することもできます。
収益化の機会が少なすぎる、または収益化が不十分なゲームは、公開される頻度が低くなるか、配信が承認されない可能性があります。少なくとも 1 分に 1 回は広告が表示される機会を設けることをおすすめします。 それには、ご自身で配置するインタースティシャル広告とリワード広告、および GameSnacks が自動的に設定する広告ブレークの両方が含まれます。
ただし、そのような機会を設けたとしても常に広告が表示されるという意味ではありません。GameSnacks では、広告の掲載数、操作性、ユーザー エクスペリエンスのバランスが慎重に考慮されます。広告が表示される最終的な頻度は GameSnacks により調整されるため、ゲーム内のどこにでも広告ブレークを自由に(1 分に複数回)作成しましょう。
収益化の要件:
連続して途切れることなくゲームをプレイでき、なおかつインタースティシャル広告とリワード広告が適度に表示されることが必要です。そのような機会を、Google 広告の管理画面を使用して設定する必要があります。
他の形式のプロモーションや収益化を含めることは許可されていません。これには、ゲーム内広告、支払い、スポンサーシップとプロダクト プレースメント、ソーシャル メディアのプロンプト、ユーザーを外部のゲーム、サイト、またはその他のコンテンツに誘導するリンクが含まれます。
パブリッシャーと GameSnacks の配信パートナーが持続可能な収益を生み出せるよう、広告を表示する十分な機会(次のレベルへの移行時など通常のゲームイベントによって自然に発生するか、広告のインターフェースのメソッドを使用してゲーム中の他の適切なタイミングを明示的に指定する)が提供される必要があります。
広告のインターフェースのメソッドを使用してゲーム内に広告を配置する場合、インタースティシャル広告およびリワード広告の関連する行動ポリシーをすべて遵守する必要があります。 ゲーム内広告の設定に関する詳細なヒントについては、こちらのベスト プラクティス集も参照してください。
ゲーム内にインタースティシャル広告を配置する場合は、ゲームプレイの自然な中断時に表示されるようにする必要があります。広告はゲームの流れに溶け込む必要があります。継続中のゲームプレイの最中にインタースティシャルをトリガーすることは許可されていません。
ゲーム構造でサポートされている場合は、リワード広告を配置することが推奨されています。これらの報酬取得の機会はオプションである必要があり、その旨を明確に説明する必要があります。ユーザーに広告のクリックを奨励することは許可されていません。詳細な要件については、行動ポリシーを参照してください。