Unity 4.2でBaaSを使って簡単にストアアプリを作るには〜CEDEC 2013「Unity on Windows 8」レポート
開発の概要や、プッシュ通知ができるライブタイルなどWindows特有の機能を追加する方法、事前審査テスト時の注意点なども。
iOS、Android、Webへも書き出し可能なマルチプラットフォーム展開ができる「Unity」は3Dデータを含むゲームを簡単に作れるゲーム開発プラットフォームとして有名だ。UnityをWindows 8でも展開するためのセッション「Unity on Windows 8」がゲーム開発者向けカンファレンス「CEDEC 2013」で行われたので、本稿ではその様子をレポートする。
Unity 4.2でWindows 8に対応 Windowsストアで公開可能に
マイクロソフトが提供する「Windows 8」にはさまざまな新機能があるが、その中でも特筆すべきは「Windowsストア」の存在だ。デバイスとサービスの会社への変革を進めるマイクロソフトにおいて、さまざまなデバイスで動くアプリを、手軽に全世界に配信できるWindowsストアの存在は、開発者にとって大きなものだ。
そのWindowsストアに、最新のUnity 4.2を使ったアプリが登録できるようになった。これにより、表現力の高いゲームアプリだけではなく、3Dコンテンツを表示するような図鑑をUnityでオーサリングすることも可能になる。さらに、Windows 8特有のライブタイルや「Windows Azureモバイルサービス」を、Unityコンテンツから利用できるのだ。
日本マイクロソフト デベロッパー&プラットフォーム統括本部 クライアントテクノロジー推進部 テクニカル エバンジェリストの大西彰氏は、Unityで作ったコンテンツにWindowsならではの機能を組み込む方法をデモを中心に解説した。
- デバイス:Unity on Windows 8の開発の流れ
- プッシュ通知ができるライブタイルなどWindows 8特有の機能を追加する
- サービス:BaaSの「Windows Azureモバイルサービス」に情報を保管する
- パッケージ化して、審査基準の事前検証テストを行い、ストアに登録
デバイス:Unity on Windows 8の開発の流れ
UnityでWindows 8アプリを作る流れは、他のプラットフォームと変わらない。まずは通常のUnityコンテンツを作成し、ビルドの際にVisual Studioを利用し、その際にWindowsストア向けのビルドを行い、パッケージングの後にWindowsストアへ申請を出せばよい。
大西氏はまず、Unityでの基本コンテンツを作り、Unityから「Windows Store Apps」向けにジェネレートする手順を紹介した。
基本的にはジェネレートしたものをVisual Studioで開き、ビルドをすればいいのだが、デフォルトの状態では作成されたプロジェクトのターゲットが「ARM」となっているため、それを「x86」向けに変更した後、ビルドすることが必要だとのことだ。これにより、Windows 8デバイスにタッチコントローラがあれば、それを利用して操作が可能となる。もちろん、キーボードでもマウスでも操作が可能だ。
このとき、大西氏は「性能が低いデバイスを用いてデバッグをした方がよい。『Remote Tools for Visual Studio 2012』を使うと、同一ネットワークにあるデバイスでリモートデバッグが可能なので、これを活用してほしい」と述べた。
プッシュ通知ができるライブタイルなどWindows 8特有の機能を追加する
ここまでは、基本のUnityコンテンツ開発手法だ。ここから、Windows 8特有の機能を付けて仕上げる。具体的には、ライブタイル対応などのプッシュ通知機能だ。「例えばゲームにおいて、アイテムの特売などのキャンペーンを実施するなどのタイミングで通知を送るような仕組みを用意したい場合、ライブタイルは効果的」(大西氏)。
これを実現するには、プラグインをいくつか追加する必要がある。このときのポイントとして、Unityエディタ/ストアアプリのクラスライブラリが別バージョンとなっている点を把握する必要がある。
具体的には、Unityエディタ向けには.NET 2.0のクラスライブラリを、Windowsストア向けには.NET 4.5のクラスライブラリをそれぞれ導入しなくてはならない。これを間違えるとジェネレート時に赤い文字でエラーが出てくる。
- デスクトップ用のクラスライブラリ
→.NET Framework 2.0/Assets\Pluginsの下に - Windowsランタイムのクラスライブラリ
→.NET Framework 2.0/Assets\Plugins\Metroの下に
デモではアプリをタップするとメッセージをアップデートし、tile.UpdateTile()で指定した文字列をライブタイルに表示する方法を紹介した。
サービス:BaaSの「Windows Azureモバイルサービス」に情報を保管する
次に、サービスとしてのマイクロソフトを活用するデモが行われた。Windows AzureモバイルサービスはWindows、Android、iOS、およびWebなどを対象としたアプリケーションのバックエンドを想定したインスタンスで、管理コンソールから登録すると、すぐに使えるサービスだ。
デモでは、UnityのコンテンツからWindows Azureモバイルサービスへ情報をストアする手順が紹介された。
UnityでWindows Azureモバイルサービスを利用するためには、OSSで提供されている「Azure Mobile Service for Unity 3D」を使う。プラグインとしていくつかの.dllファイルを追加し、Azureの管理コンソールで指定されたURL、アクセストークンを用い、ソースコードに1行追加する程度で利用が可能だ。
これを用いると、ゲームにおいてハイスコア情報を共有するなどの対応が簡単に行える。デモは文字列を保存するものだったが、JSON文字列にすれば、さまざまなデータが格納可能だという。
パッケージ化して、審査基準の事前検証テストを行い、ストアに登録
最後の仕上げはWindowsストアへの登録だ。これも難しいことはなく、生成されたパッケージを管理コンソールから登録するだけでOKだ。
Windowsストアに出店されるには審査を通る必要があるが、Windowsストアアプリ開発には、WACK(Windows App Certification Kit)が用意されていて、事前にローカル環境で審査基準の検証テストが行える。
しかし、「現時点のUnity 4.2においては、JavaScriptおよびBooスクリプトは検証をパスしないという制約があるので注意しよう」(大西氏)とのことだった。
3Dコンテンツを容易に扱えるUnityと、マイクロソフトが提供する開発環境、そしてデバイスを使って特徴のあるコンテンツが作れるというセッションの最後に、大西氏は「UnityがWindowsでそのまま使え、さらにはWindowsストアにすぐに登録できる。世界中に配信できるのは大きなチャンス。スタートアップ向けのBizSparkや学生向けのDreamSparkプログラムなどを活用してぜひこのチャンスを生かしてほしい」と述べた。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows 8提供開始、対応アプリ登場は期待できるか?
マイクロソフトはWindows 8の提供を正式に開始した。Windowsストアもスタートし、いよいよWindows 8プラットフォームが市場投入となる。 - 連載:Windowsストア・アプリ開発入門:第1回 Windowsストア・アプリってどんなもの?
ついにWindows 8.1の正式版がMSDNサブスクライバー向けに公開された。無償アップデートとなるため、今後は新しいWindows 8.1ストア・アプリが一般化するだろう。最新環境向けに新たにアプリ開発を始める人のための連載スタート。 - 特集:次期Windows 8.1&Visual Studio 2013 Preview概説(前編):大きく変わるWindowsストア・アプリ開発 〜 ビュー状態に関連する変更点
Windows 8.1(Preview版)の変更点や新機能を開発者視点で紹介。Windows 8用に作られたWindowsストア・アプリにはどんな影響があるのか? - UXClip(11):これからが本番、Windows 8アプリ開発
12月3日夜、Windows 8のハードウェアやアプリを開発者向けに紹介するイベントが行なわれた - 現場が教えるUnityで実践iPhoneゲーム制作(1):いまなら無料! Unityで始めるiPhoneゲーム作成“超”入門
3Dコンテンツ開発ツール「Unity」を使った、簡単な3Dミニゲーム制作の流れを一から解説していきます - Unityで楽々スマホ用3Dアプリ開発入門(1):iOSアプリのAndroid移植も簡単なUnityの基礎知識
3Dアプリ開発を容易にするUnityの概要や使い方、Unityの機能を拡張するプラグイン、リモートデバッグツールなどを紹介します - ここが大変だよiPhone開発(5):OpenGL ESが大変な3Dアプリ開発を楽にするUnity
iPhoneゲーム開発に必須のOpenGL ES。そのコーディングに手こずっている方に有用なツールを紹介し簡単なサンプルを作成します