Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

移植とリリースのガイドライン

このページでは、ゲームをリリースするときや、新しいプラットフォームへ移植するときに考慮すべき点を、ガイドとチェックリストにまとめています。

Defold のゲームを新しいプラットフォームへ移植したり、初めてリリースしたりする手順は、通常はシンプルです。理論上は game.project ファイルの関連するセクションが設定されていれば十分ですが、各プラットフォームを最大限に活かすには、それぞれの特性にゲームを合わせることをお勧めします。

入力

プラットフォームの入力方法にゲームを合わせてください。プラットフォームが対応している場合は、ゲームパッドのサポートの追加を検討してください。また、一時停止メニューに対応させてください。コントローラーが突然切断された場合は、ゲームを一時停止するようにします。

ローカライズ

ゲーム内のすべてのテキストを翻訳してください。ヨーロッパと南北アメリカでリリースする場合は、少なくとも EFIGS(英語、フランス語、イタリア語、ドイツ語、スペイン語)への翻訳を検討してください。ゲーム内で(一時停止メニューを通じて)言語を簡単に切り替えられるようにしてください。

iOS のみ - game.projectLocalizations を必ず指定してください。sys.get_info() は、このリストにない言語を返すことはありません。

ストアページのテキストを翻訳してください。売上に良い影響があります。一部のプラットフォームでは、ゲームを配信する各国の言語にストアページのテキストを翻訳する必要があります。

ストア用の素材

アプリアイコン

競合するゲームの中で目立つようにしてください。アイコンは、プレイヤーになるかもしれない人との最初の接点になることがよくあります。ゲームのアイコンが並ぶページの中で、見つけやすいものにしてください。

ストアのバナーと画像

ゲームには、インパクトがあり、わくわくするようなアートを使ってください。費用をかけてアーティストに協力してもらい、プレイヤーを惹きつけるアートを作る価値があるでしょう。

ゲームのセーブデータ

デスクトップ、モバイル、ウェブでのゲームのセーブデータ

ゲームのセーブデータや、保存しておくその他の状態は、Defold API の関数 sys.save(filename, data) で保存し、sys.load(filename) で読み込めます。sys.get_save_file(application_id, name) を使うと、ファイルを保存できるオペレーティングシステム固有の場所へのパスを取得できます。通常は、ログインしているユーザーのホームフォルダー内の場所です。

ゲーム機でのゲームのセーブデータ

sys.get_save_file()sys.save() はほとんどのプラットフォームで問題なく使えますが、ゲーム機では別の方法を取ることをお勧めします。ゲーム機のプラットフォームでは、通常、接続されている各コントローラーにユーザーが関連付けられています。そのため、ゲームのセーブデータ、実績、その他の機能も、それぞれのユーザーに関連付けるようにします。

ゲームパッドの入力イベントにはユーザー ID が含まれています。これを使って、コントローラーの操作をゲーム機のユーザーと関連付けられます。

ゲーム機のプラットフォームとそのネイティブ拡張(native extension)は、特定のユーザーに関連付けられたデータを保存、読み込みするための、プラットフォーム固有の API 関数を公開します。ゲーム機で保存や読み込みを行う際は、これらの API を使ってください。

ゲーム機のプラットフォームでファイル操作を行う API は、通常、非同期です。ゲーム機を対象に含むクロスプラットフォームゲームを開発する際は、プラットフォームに関係なく、すべてのファイル操作が非同期になるように設計することをお勧めします。例:

local function save_game(data, user_id, cb)
	if console then
		local filename = "savegame"
		consoleapi.save(user_id, filename, data, cb)
	else
		local filename = sys.get_save_file("mygame", "savegame" .. user_id)
		local success = sys.save(filename, data)
		cb(success)
	end
end

ビルド成果物

クラッシュをデバッグできるように、リリースする各バージョンでデバッグシンボルを生成してください。これらをアプリケーションのバンドル(bundle)と一緒に保存してください。

アプリケーションの最適化

アプリケーションのパフォーマンス、サイズ、メモリ使用量、バッテリー消費を最適化する方法については、最適化マニュアルを参照してください。

パフォーマンス

必ず対象のハードウェアでテストしてください。ゲームのパフォーマンスを確認し、必要に応じて最適化してください。プロファイラーを使って、コードのボトルネックを見つけます。

画面の解像度とリフレッシュレート

画面の向きと解像度が固定されているプラットフォームでは、対象プラットフォームの画面解像度とアスペクト比でゲームが動作することを確認してください。画面の解像度とアスペクト比が変わるプラットフォームでは、さまざまな画面解像度とアスペクト比でゲームが動作することを確認してください。レンダースクリプト(render script)とカメラで、どの種類のビュープロジェクション(view projection)を使っているかを考慮してください。

モバイルプラットフォームでは、game.project で画面の向きを固定するか、横向きと縦向きの両方でゲームが動作することを確認してください。

  • 画面サイズ - game.project に設定したデフォルトの幅と高さよりも大きい画面や小さい画面で、すべてが適切に表示されていますか?
    • レンダースクリプトで使う投影と、GUI で使うレイアウトが関係します。
  • アスペクト比 - game.project に設定した幅と高さによるデフォルトのアスペクト比と異なる画面で、すべてが適切に表示されていますか?
    • レンダースクリプトで使う投影と、GUI で使うレイアウトが関係します。
  • リフレッシュレート - 60 Hz よりも高いリフレッシュレートの画面で、ゲームは問題なく動作していますか?
    • game.project の Display セクションにある vsync と swap interval

携帯電話のノッチとパンチホールカメラ

前面カメラやセンサーを収めるため、ディスプレイ画面にレンズ用の小さな切り欠きを設ける方式(ノッチやパンチホールカメラとも呼ばれます)が、ますます普及しています。ゲームをモバイルへ移植する際は、重要な情報がプラットフォームのセーフエリア(safe area)内に収まるようにしてください。

Defold は、Android と iOS のセーフエリアへの対応を組み込んでいます。game.projectgui.safe_area_mode を設定すると、セーフエリアの対向する辺のインセットのうち、どの組を GUI の調整に反映するかを制御できます。デフォルトの none はインセットを無視します。long は横向きでは左右、縦向きでは上下を適用し、short はその反対の組を適用します。both は4辺すべてを適用します。GUI スクリプト(GUI script)は、gui.set_safe_area_mode() を使って、プロジェクト全体のモードをそのスクリプトのシーンに対して上書きできます。独自の GUI や描画ロジックでは、window.get_safe_area() から安全な領域を表す矩形と、各辺のインセットを取得できます。セーフエリアのインセットに組み込みで対応していないプラットフォームでは、ウィンドウ全体と、値がゼロのインセットが返されます。

Safe Area 拡張は、従来のプロジェクトや、組み込み API の範囲を超える動作が必要なワークフローで、引き続き代替手段として利用できます。Android と iOS の標準的なセーフエリア処理には必要ありません。

プラットフォーム固有のガイドライン

Android

ゲームを更新できるように、キーストアを安全な場所に保管してください。

ゲーム機

各バージョンの完全なバンドルを保存してください。ゲームにパッチを適用する場合は、これらのファイルが必要です。

Nintendo Switch

プラットフォーム固有のコードを組み込んでください。Nintendo Switch には、ユーザー選択などを補助する機能を備えた専用の拡張があります。

Nintendo Switch 向けの Defold は、グラフィックスバックエンドとして Vulkan を使います。Vulkan グラフィックスバックエンドを使ってゲームをテストしてください。

PlayStation®4

プラットフォーム固有のコードを組み込んでください。PlayStation®4 には、ユーザー選択などを補助する機能を備えた専用の拡張があります。

HTML5

携帯電話でウェブゲームをプレイすることが、ますます一般的になっています。モバイルブラウザーでもゲームが快適に動作するようにしてください。また、ウェブゲームには読み込みの速さが求められることも意識してください。ゲームのサイズを最適化してください。プレイヤーが不必要に離れてしまわないように、読み込み中の体験全体も検討してください。

2018年、ブラウザーは音声の自動再生ポリシーを導入しました。これにより、ユーザー操作のイベント(タッチ、ボタン、ゲームパッドなど)が発生するまで、ゲームやその他のウェブコンテンツは音声を再生できません。HTML5 に移植する際はこの点を考慮し、ユーザーの最初の操作を受けてから音声や音楽の再生を開始することが重要です。ユーザー操作が行われる前に音声を再生しようとすると、ブラウザーの開発者コンソールにエラーとして記録されますが、ゲームには影響しません。

また、ゲームで広告を表示している間は、再生中のすべての音声を一時停止してください。