Unity/UnityでビルドしたアプリケーションをVM上のLinuxで動かす

ゲーム開発環境のUnityでビルドしたアプリケーションをLinuxで動かす手立てがないものだろうかと色々検証してみたので、その結果を書き残しておきます。

結論から言うと、Unity3.5から、UnityでビルドしたアプリケーションをLinuxで動かすことが可能になりました。とはいえ、Unity自体はLinux用にアプリケーションを出力する機能は持っていません。では何を使うのでしょうか?
Unity3.5から、Google Chromeがネイティブ・アプリケーションとして動作する環境として提供を始めたNaCl という形式に対する出力サポートが入りましたが、Chrome+NaClはLinuxをサポートしているので、これを使う事で実際にLinux上でも動作するアプリケーションを作る事が出来るようになった、という訳です。

ホストOS:
- Macbook pro 17" Late 2011, 2.4GHz Corei7

host_machine_spec


検証した環境(VMソフトウェア+ゲストOS):
- VirtualBox+Ubuntu10.04(32bit): 動作せず
- VirtualBox+Ubuntu11.10(32bit): 動作
- VMWare Fusion+Ubuntu 11.10(32bit) : 動作


という訳で、イマイチ動作のための前提が出来ていないのですが、とりあえず重要なことを書いてしまうと、Ubuntu11.10(32bit)なら動く! ということです。

以下、動作に必要なことを追っていきます。
なお、VMWare Fusionの方がお手軽でパフォーマンスも良いようですが、無料で使えるということもあり、このコラムではVirtualBoxを中心に書いていきます。VMのセットアップ手順に若干の違いがありますが、インストール後に必要な作業にはほぼ違いはありません。



1. VirtualBoxとUbuntuのセットアップ


まず、Ubuntuのサイトから32bit版のUbuntu11.10(ubuntu-11.10-desktop-i386.iso)を取得し、次にOracleのVirtualBoxのサイトからVirtualBox自体をDLします。

- Ubuntuのダウンロード http://www.ubuntu.com/download/ubuntu/download
- VirtualBoxのダウンロード https://www.virtualbox.org/wiki/Downloads

次にVirtualBoxをインストールし、ダウンロードしたUbuntuのディスクイメージを使ってUbuntu 11.10(32bit)のVMを作成します。この辺、とくに突っかかることはないかと思いますが、詳しいやり方はこのコラムで書きたいことではないので割愛します。



2. Ubuntuの更新

Ubuntuのインストールが完了して起動したらば、Software Updaterを起動して、パッケージを最新の状態に更新します。(2012.03.14時点では) Ubuntuの状態を最新にしないと、Chromeのインストールを行おうとした時に、Ubuntu Software Centerで「Internal Software Error」というエラーが表示されて先に進めない(インストール出来ない)ので、このプロセスが必要になります。

ubuntu_update_mgr




3. Chromeのインストール

その後、Firefoxを起動してChromeのダウンロードを行います。ダウンロードするのは、32bit .deb(For Debian/Ubuntu) です。ダウンロードが終了したら、.debファイルをダブルクリックすれば、Ubuntu Software Centerが起動して、インストールを促すボタンが表示されます。これに従ってChromeをインストールします。

chrome_linux_deb




4. Chromeの設定変更

これで、論理的にはNaClの実行環境が整った訳ですが、Chrome上の設定を幾つか変更しないと、このままではUnityのアプリは起動しません。(VM上で動かしている時のみの問題かもしれませんが…)
設定変更のためには、ChromeのURLボックスに "chrome://flags" と入力します。

chrome_flags


1. Chrome Web Store以外の経路でもNative Clientを動作するようにする
ローカルで出力したNaClアプリは当然のことながらWeb Storeを通して配布されたものではないので、そのままではChromeは実行を許可しません。なので、まずこの設定を変更します。

chrome_flags_native_client

このプロセスをやらないと、NaClアプリケーションを実行した時に、以下のような表示になってアプリケーションが起動しません。

nacl_not_allowed
"The Native plug-in is not Allowed."とおっしゃられましても…もうちょい説明して欲しいッス…


2. 描画デバイスのリストをオーバーライドし、選択肢を増やす
VMWare Fusionではこの設定を変更せずとも動作するのですが、Virtual Boxではこの設定を変更しないと、Unityが利用可能な描画デバイスをChromeが提供する事が出来ないようです。なので、この設定を修正します。

chrome_flags_rendering_list

この設定を修正しないと、VirtualBoxでは以下の様な表示になってまたまたNaClアプリの起動に失敗します。
nacl_no_gfx_device



上記2点のフラグを変更したら、Chromeを再起動して、テスト用のNaClアプリを開いてみます。

見事実行出来ました!パフォーマンスは激遅なようですが、とりあえず動くということが突破できれば、あとは浮かぶ瀬もありそうなものです。

ubuntu_nacl_angrybots





おまけ:3Dアクセラレーションを有効にする

Unityの動作に3Dアクセラレーション機能の有効化は必須ではありませんが、VirtualBoxは3Dアクセラレーションを有効にすることもできます。(VMWare Fusionでは、特に面倒なことをしなくても3Dアクセラレーションは有効になるようです。)
やり方としては、GuestAdditionsという拡張をUbuntu側にインストールすることで、VirtualBox側の設定項目に以下のような3Dアクセラレーション機能の有効化をするチェックボックスが追加されます。

GuestAdditions.isoの入手とインストールの方法: http://www.virtualbox.org/manual/ch04.html#idp11277648

3Dアクセラレーション関連の参考情報(上記と同一ページ): http://www.virtualbox.org/manual/ch04.html#guestadd-3d


ただ、上記のサイトはちょっと不親切で、「GuestAdditions.isoは結局どこでDLすんねん」という肝心の点についての案内がないというか・・とにかくよく分かりません。
で、virtualboxのダウンロードサイトに行ってみたら、ああ、ありましたね。GuestAdditions.iso
- virtualbox 4.1.8のDLサイト: http://download.virtualbox.org/virtualbox/4.1.8/

こいつを早速DLしてUbuntuのVMのCDドライブにセットすると、ダイアログが起動して、インストーラを走らせるかどうかを聞いてきます。これをOKすると、あとはお任せでインストールが進みます。インストールが終了したら、UbuntuのVMを一度シャットダウンして、VirtualBoxの設定ダイアログで、ディスプレイを選択します。

すると、ディスプレイの設定項目に3Dアクセラレーションに関する項目が増えています。

virtualbox_3d_accel

Comment

Comment is pending approval.

Comment is pending administrator's approval.

管理者だけに表示を許可する

Trackback

まとめtyaiました【UnityでビルドしたアプリケーションをVM上のLinuxで動かす】

ゲーム開発環境のUnityでビルドしたアプリケーションをLinuxで動かす手立てがないものだろうかと色々検証してみたので、その結果を書き残しておきます。結論から言うと、Unity3.5から、Uni...

Trackback URL:

http://deathcube.blog36.fc2.com/tb.php/29-d2815b6d