PlayDrop logoPlayDrop Studio
作成プレイ交換稼ぐ学ぶコネクタアセットコミュニティサポート
PlayDrop logoPlayDrop Studio
作成プレイ交換稼ぐ学ぶコネクタアセットコミュニティサポート
ログイン
全画面とセーフエリア
ドキュメント

はじめに

概要初めてのゲームPlayDrop のゲームよくある質問

Cloud で作る

Cloudで作成プランと生成回数

AI アプリを接続

すべてのコネクタClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

公開と共有

AI アプリから公開するシンプルな HTML ゲームパッケージ化と .play公開とインポートゲームファイル公開範囲と集客掲載用アートと動画ジャンルとタグローカライズインスタントゲーム

ゲーム体験

読み込み、一時停止、オーディオ全画面とセーフエリアクラウドセーブローカルパーティーとコントローラー

一緒に遊ぶ

共有、フレンド、招待ランキング実績オンラインパーティーと音声リアルタイムゲームサーバー

収益を得る

収益化クレジットと報酬

アセット

ゲームアセットAI アセット生成独自形式とプレイヤーの作品

リファレンス

クライアント SDKサーバー SDKcatalogue.jsonエラーと復旧トラブルシューティング
ドキュメント全画面とセーフエリア
ゲーム体験

PlayDrop ゲームの全画面表示、セーフエリア、HUD の角

PlayDrop ゲームを画面いっぱいに表示し、SDK が計測した reservedCorners を使って、HUD を CSS のセーフエリア内に収め、ホストのボタンと重ならないようにします。

PlayDrop は、ゲームに画面全体を使わせます。ウェブサイトのゲームページには専用の全画面ボタンがあり、アプリではゲームを全画面で遊べます。スマホでは、PlayDrop がゲームの上部の角に小さな一時停止ボタンとオーディオボタン(パーティー中は音声ボタンも)を重ねて表示します。SDK がその正確な位置を教えてくれるので、スペースを無駄にせずに HUD をそれらから離しておけます。

表示領域を埋める

画面の端から端まで描画し、ページのスクロール、ズーム、テキスト選択を止めます。

html
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no">
<style>
  html, body { margin: 0; width: 100%; height: 100%; overflow: hidden; background: #000; }
  body { touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
  canvas { display: block; width: 100vw; height: 100dvh; }
</style>

canvas のサイズは、表示サイズに devicePixelRatio を掛けて決め、resize のたびに描き直します。パソコン、タブレット、折りたたみ端末ではウィンドウのサイズが変わり、スマホを回転させたときも変わります。背景のアートとプレイフィールドは、ノッチやホストのボタンの下も含めて全体に広げます。それらを避ける必要があるのは、操作する HUD 要素と読む必要がある HUD 要素だけです。独自の全画面ボタンは必要ありません。

HUD を重ならないようにする

画面の端を覆う可能性があるものは2つあります。

  • ハードウェアのセーフエリア:ノッチやホームインジケーターなど。CSS の env(safe-area-inset-top|right|bottom|left) で取得します。
  • ホストのボタン:sdk.host.reservedCorners で取得します。{ topLeft: { width, height }, topRight: { width, height } } の形で、ゲームの表示領域の左上と右上の角から測った CSS ピクセル単位の値です。

避けるのは2つの和集合で、2つを足し合わせた値ではありません。左上の HUD 要素は、角の長方形の下にも横にも置けます。どちらの場合も、それぞれの余白の大きいほうを使ってください。

js
const root = document.documentElement.style;
function layoutHud(corners) {
  const left = corners?.topLeft ?? { width: 0, height: 0 };
  const right = corners?.topRight ?? { width: 0, height: 0 };
  root.setProperty("--pd-tl-h", `${left.height}px`);
  root.setProperty("--pd-tr-h", `${right.height}px`);
}
layoutHud(sdk.host.reservedCorners);
const stop = sdk.host.onReservedCornersChange(layoutHud);
css
.score { position: absolute; left: max(12px, env(safe-area-inset-left));
  top: max(12px, env(safe-area-inset-top), var(--pd-tl-h, 0px)); }
.lives { position: absolute; right: max(12px, env(safe-area-inset-right));
  top: max(12px, env(safe-area-inset-top), var(--pd-tr-h, 0px)); }
  • 幅と高さが0なら、その角を覆うものはありません。たとえば、ボタンがゲームの外にあるパソコン版のウェブサイトがそうです。
  • null は、角を報告しない古いホストです。セーフエリアを使った既存のレイアウトをそのまま使ってください。
  • 値は、スマホでの最低44ポイントのタッチ領域など、実際に画面に表示されているボタンから得られ、回転、サイズ変更、パーティーによって変わります。値は読み取って使い、サイズを決め打ちしたり、上部に横幅いっぱいの帯を確保したりするのは絶対にやめてください。

ゲームを終了するときは、返された関数で購読を解除してください。

画面の向きと表示環境

ゲームが動く環境を catalogue.json で宣言します。surfaceTargets には desktop、mobileLandscape、mobilePortrait を指定し、primarySurface にはゲームが想定している表示環境を指定します。有効にするのはテスト済みのものだけにしてください。縦向きのゲームを横長の画面に表示するときも、黒い帯ではなく、まとまりのある背景で画面を埋めてください。インスタントゲームは縦向きを基本にする必要があります。

タッチ画面での入力

操作ボタンは親指で押しやすくしましょう。最低44 CSS ピクセルの大きさにし、予約された角や、システムのジェスチャーが始まる画面の端から離します。ポインターイベントを使い、ゲームのタッチでは preventDefault() を呼び出し、パソコンではキーボードとマウスにも対応してください。コントローラーについてはローカルパーティーとコントローラーで説明しています。

関連ガイド

  • 読み込み、一時停止、オーディオPlayDrop SDK を初期化し、最初の遊べるフレームで準備完了を伝え、きれいに一時停止・再開し、ホストのオーディオポリシーに従い、アプリとオフライン用にファイルを事前読み込みします。
  • ローカルパーティーとコントローラーsdk.device で物理ゲームパッドと PlayDrop のスマホコントローラーを読み取り、ローカルプレイヤーの枠を追跡し、コントローラー対応とローカルパーティーの人数を宣言します。
  • クライアント SDKPlayDrop ブラウザ SDK のリファレンス:初期化、ホストのライフサイクル、プレイヤー情報とセーブ、デバイスとコントローラー、ソーシャル、マルチプレイヤー、ショップ、広告、ランキング、実績、アセット、AI。
前へPlayDrop のゲームライフサイクル:読み込み、準備完了、一時停止、オーディオ次へPlayDrop ゲームのクラウドセーブ
Markdownを表示
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

このページの内容

表示領域を埋めるHUD を重ならないようにする画面の向きと表示環境タッチ画面での入力
Markdownを表示