UDN
Search public documentation:

UnrealOnMobileJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

モバイル用ホーム > Unreal Engine 3: モバイル概要

Unreal Engine 3: モバイル概要

概要

TODO - さらに説明的な概説を追加する - Jeff Wilson

このドキュメントは、「Unreal Engine 3」を使用してモバイルデバイス用ゲームを制作する方法について概説します。

Unreal Engine 3: Apple iOS

TODO - iOS上の「Unreal」について簡潔な概説を追加する。 - Jeff Wilson

Appleの iOS プラットフォーム用ゲームを作成する場合に必要となる固有な情報については、 Unreal Engine 3: Apple iOS の概説 のページを参照してください。

モバイル上のストリーミング

モバイルデバイスでは非同期レベルのストリーミングがサポートされています。テクスチャストリーミングの現在の状態については このページ を参照してください。

新しい入力サブシステム

マルチタッチおよびティルトのサポートに必要となる全く新しい入力システムについては、 このページ を参照してください。

モバイルのためのシステム設定

他のデバイスと比較して、モバイルデバイスには、特定のプラットフォームに対して非常に多様な機種が存在します。Xbox 360 は 1 機種だけです。「Unreal Engine 3」で動くアプリケーションを実行できる iOS デバイスは 5 機種あります(さらに増加中)。そのため、.ini ファイル主導型の SystemSettings (システム設定) は、その考え方を変更する必要がありました。 .ini ファイルは依然として用いますが、エンジンの .ini ファイルには複数のセクションが含まれており、現在使用しているデバイスに適合したセクションが使用されることになります。また、モバイル プレビューアに特定のデバイスの設定値を使用させることができるため、変更による効果を素早く確認することができます。

BaseEngine.ini には、すべてのゲームのための iOS デバイス用デフォルト値が含まれています。自分のゲームの DefaultEngine.ini によって、このデフォルト値を通常どおりオーバーライドすることができます。BaseEngine.iniファイル内の、たとえば [SystemSettingsIPhone3GS] セクションの SystemSettings の中に BasedOn タグが含まれていることが確認できます。これは設定項目を階層化するためのものです。これによって、自分のゲームを、使用するすべてのデバイスに対して容易に変更を適用することができるようになります。各プラットフォームについては、特定の設定項目だけをオーバーライドします。

現在、iPhone 4 (メモリが倍増した) を除くすべてのプラットフォームでは、[SystemSettingsMobileTextureBias] (システム設定 モバイル テクスチャ バイアス) セクションによってテクスチャサイズが削減されています。

モバイル固有の SystemSettings は多数あります。それらの説明については、BaseEngine.ini ファイルの [SystemSettings] セクションを参照してください。( ; プレフィックスがついたコメントとして記載されています)。

フレームレート

Epic Citadel アプリケーションでは、通常のフレームレートを 30 fps に設定しました。60 fps で動作させることも可能ですが、その場合はコンテンツとのトレードオフになります。最大フレームレートは、Engine.ini ファイルに含まれている値で制御できます。

  [Engine.Engine]
  MaxSmoothedFrameRate=35
  bSmoothFrameRate=TRUE
  

60 fps については、 MaxSmoothedFrameRate (最大スムーズ フレームレート) を 62 に変更します。また、 bSmoothFrameRate を無効にすることによって、できるだけ高速に動作させることもできますが、これは推奨できません。理由は、異なる 2 つのフレームレート間で、もたつきが生じ (たとえば20、40、20、40)、その結果見栄えが非常に悪くなるからです。

モバイル上でのデータ保存

モバイルデバイス上でデータ / ゲーム状態を保存する方法は現在 3 つあります。

BasicSaveObject()

Engine クラススには、オブジェクト (当然のことながらそのプロパティも) を保存するための静的なネイティブ関数があり、スクリプトからアクセスすることができます。通常は、オブジェクト を 1 つだけ作成することによって設定すべてを保存し、さらに、そのオブジェクトを保存するということになります。たとえば次のようになります。

     MyObject = new SomeClass;
     MyObject.Value = 5;
     class'Engine'.static.BasicSaveObject(MyObject, "SaveGame.bin", true, 1);
  

MyObject が保存されるオブジェクト変数です。 "SaveGame.bin" が保存されるファイル名です。 true に設定することよって、FILEWRITE_SaveGame が CreateFileWriter に渡されます。(iOS がこのファイルを後にロードできるようにするためには、この値は true でなければなりません)。 1 は、ゲーム固有のバージョンナンバーです。古いバージョンのファイルがロードされないようにするために使われます。

このオブジェクトを後でロードする (セーブゲームをロードする場合など)には、保存した場合とほとんど同じことを行います。

     MyObject = new SomeClass;
     class'Engine'.static.BasicLoadObject(MyObject, "SaveGame.bin", true, 1);
  

これを実行すると、MyObject.Value は 5 になります。

なお、保存できるものは、基本的なプロパティ (int 型、float 型、string 型、name 型など) と基本的なプロパティの配列 / 構造体だけであることに注意してください。オブジェクトポインタを保存することは可能です。ただし、そのオブジェクトがロード時にすでにメモリ内に存在していなければなりません。(オブジェクト プロパティは文字列として保存されるため、パス名上にある StaticFindObject を使用します)。

コンソールコマンド

[現在のところ、この方法は iOS でのみ有効]

Kismet 内のコンソールコマンドあるいはスクリプトコードを使用して、次のように手動で単一の値を保存 (ロード) することが可能です。

     mobile SaveSetting <SettingName> <Value>
     mobile LoadSetting <SettingName> <DefaultValue>
  

この方法を用いると、すべての設定値は文字列として保存およびロードされます。文字列からの (または文字列への) 必要な変換をコンソールコマンドに行わせるのはコードです。設定項目がまだ設定されていない場合に返されるデフォルトの値をロード時に指定します。

    local int SavedValue, LoadedValue;
    SavedValue = 10;
    ConsoleCommmand("mobile SaveSetting TestSetting " $ SavedValue);
    LoadedValue = int(ConsoleCommand("mobile LoadSetting TestSetting 1"));
  

Kismet の機能

[現在のところ、この方法は iOS でのみ有効]

Save/Load Values (値の保存 / ロード) という Kismet の機能によって、Kismet の変数を保存することが可能です。(int 型、float 型、bool 型、vector 型変数のみ保存されます)。保存するには変数に名前が必要です (Var Name プロパティ)。int 型、float 型、 bool 型、vector 型変数を指す Named Variable (名前付き変数) オブジェクトを使用することもできます。ロード / 保存できる変数の数に制限はありません。

変数を保存およびロードする機能は同一のものを使用するよう推奨します (特に、変数が多い場合に言えます)。これによって、同じ変数を容易に保存およびロードすることができます。

SaveLoad.png

注意: Kismet のこの機能は、実際には上記コンソールコマンド (mobile SaveSetting など) をラップしたものに過ぎません。

モバイルのオーディオ

サウンド エフェクトに関する情報および音楽情報については、 このページ を参照してください。

モバイルのテクスチャ

モバイル プラットフォーム上でのテクスチャの操作および処理については、 このページ を参照してください。

モバイルのマテリアル

モバイル プラットフォーム用のマテリアルを作成および修正する際に必要となる情報については、 このページ をご覧ください。

起動時におけるマテリアルのコンパイル

ゲームの起動時間は、レベル内におけるマテリアルの使用状況に大きく影響されます。シェーダーはオフラインでコンパイルされないため、ゲーム内でコンパイルする必要があります。これには時間がかかる (ゲームプレイ中であれば処理落ちの原因になる) ため、エンジンはゲーム起動時にできるだけ多くのシェーダーを (クッカによって定められたとおり) コンパイルすることになります。レベル内で使用されるモバイル向け各種設定の組み合わせに応じて、コンパイルすべきシェーダーの数が増えます。(したがって、コンパイルが遅くなります)。

クッカによって事前に決定可能なシェーダー (通常、全体の 95 % 以上がこれに該当します) は、事前処理で最適化されたフォーマットに変換されることによって高速なコンパイルが可能になります。レンダリングされる必要がシェーダーがクッカによって探知されなかった場合は、そのシェーダーが初回使用時にコンパイルされることになります。(わずかな間処理落ちが生じる場合があります)。

なお、テクスチャが異なるだけで他はまったく同じマテリアルが 2 つある場合は、設定項目が同一であるため、コンパイルされるシェーダーは 2 つではなく 1 つになります。

フォグ

フォグは、レベル / マップ単位で制御されます。fog volume (フォグ ボリューム) は使用されません。フォグのセットアップについては、 このセクション を参照してください。

ネットワーク ファイル ローダー

モバイル フレームワークによって、モバイルデバイスのためのクロスプラットフォーム ネットワーク ファイル ロードシステムが導入されます。

これによって、コンテンツのイタレーションが、(コマンドラインの修正同様)大幅にスピードアップされます。これをアクティベートすると、後はゲームを停止するか、再起動するかだけです。新たなファイルがデバイスにコピーされます。

使用方法

これを動作させるには、UnrealFrontend を使用します。

  • Unreal Frontend を実行します。
  • [Game] タブを開きます。
  • Use Networked File Loader (ネットワーク ファイル ローダー) が true に設定されていることを確認します。
  • Sync one time (一度同期) を実行します。
    • これによって、UFE (Unreal フロントエンド) を実行中のマシンの IP アドレスをもつアプリケーションの中にファイルが置かれます。
  • デバイス上にゲームを立ち上げます。
  • これによって、ファイルがネットワークを通して電話機にコピーされます。
  • ネットワークを通したコピーはそれほど速くはないものの、同期/インストールの時間はかなり速くなります。
  • コンテンツを変更する場合は次のようになります。
    • 通常どおりクックします。
    • ゲームを停止します。
    • iPhone ゲームを実行します (iTunes に触れる必要はありません)。
    • 新たに更新されたファイルがコピーされます。
  • ゲームのコマンドラインを変更するだけの場合は次のようになります。
    • [Game] タブを開きます。
    • [Make Commandline] (コマンドラインを作る) ボタンをクリックします。
    • ゲームを停止します。
    • ゲームを実行します。
    • 新たなコマンドラインが適用されます。

重要事項

コードの再コンパイル

コードを再コンパイルする場合は、依然、[Sync] (同期) ボタンをクリックして実行ファイルをパッケージ化する必要があります。

これを機能させるには、UnrealFrontend (UFE) を動作させ続ける必要があります。UFE は、ホストアプリケーションを供給するファイルです。

今後これはサービスなどに変更になるかもしれませんが、当面は、UFE が必要です。

通常のファイルロードへの復帰

ネットワーク ローダーの使用を中止するには、[Use Networked File Loader] (ネットワーク ファイル ローダーを使用する) チェックボックスのチェックを外し、以前のように Sync (同期) します。

ただし、手動でアプリケーションを電話機から完全に削除することによって、これまでの実行によるキャッシュ ファイルを削除する必要があります。

  • これは今後、コードによって修正される予定です。(ファイル ローダーを使用していない場合は、アプリケーションがキャッシュ ファイルを削除することができます)

推奨されるマシンのセットアップ

  • Tegra のシミュレーターおよびデバイスについて
    • 最新の Tegra SDK を NVIDIA からインストールします。
    • これによって、ビルドおよびシミュレーター上での実行に必要となるヘッダおよびライブラリのすべてがインストールされることになります。
    • ビルドおよびデバイス上での実行に必要となるコンポーネントもいくつかインストールされることになります。
  • Tegra のデバイス (WinCE) について
    • Windows CE Embedded SDK をインストールします。これによって、ビルドおよびデバイス上での実行に必要となる残りのコンポーネントがインストールされることになります。
    • Windows Mobile Device Center (WMDC) をインストールします。これは、デバイスから PC に通信するために使用されます。
    • デバイスとコンピュータを USB 接続して、WMDC によって認識されていることを確認します。

すべての場合において、SDK および他のソフトウェアがインストールされたときは、Visual Studio で通常行うように、 *Game TegraSimulator/Device をビルドすることによって、基本的なコンパイルパスが正しく動作するようにします。次に、Tegra がターゲットプラットフォームの場合に UnrealFrontend において通常行うのと同じようにクックします。

Windows システムのセットアップ

基本的なワークフロー

コンパイル

デバッグ

モバイル プレビューアでは、特定のシーンにおける描画コールをテンキーの 1 と 3 を使ってステップ実行し、問題を切り分けることが可能です。テンキーの 0 によって、デバッグモードがリセットされて通常のシーンに戻ります。

プレビュー

ゲームを素早くプレビューするには、 モバイル プレビューア が最適です。クックしてデバイスに同期させる必要がありません。

なお、かなりのシェーディング エフェクト (たとえば、モバイル フォグやモバイル スペキュラ、モバイル スイッチで作成されたマテリアルなど) が、エディタ内で表示されません。原因は、エディタが Direct3D を使用する一方で、モバイル デバイスが OpenGL ES2 を使用し、エフェクトを表示するためには異なるシェーダーが必要となるためです。