パッケージ
Windows 8.x公式サイトへ
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/03/08 16:06

ニュース

[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

MicrosoftのChas Boyd氏(左)とMatt Sandy氏(右)
画像集#002のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ 画像集#003のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ
 北米時間2012年2月29日にWindows 8の一般PCユーザー向けプレビュー版「Windows 8 Consumer Preview」が公開されたが(関連記事),GDC 2012で開催された「Microsoft Developer Day」でも,多くの時間はWindows 8に割かれていた。
 本稿では,2日めに行われたセッション「Developing a Great Metro Style Game for Windows 8」(Windows 8に向けた,すばらしいMetroスタイルゲームの開発)から,Windows Phoneライクなユーザーインタフェース(以下,UI)「Metro UI」を採用した「Metroスタイル」のゲームがどういったものになるかを予想してみることにしよう。


WinRTをベースとしてAndroidやiOSにも

近い機構を備えるMetroスタイル


 Windows 8のプレビュー版に触れたことがある人なら分かるように,Metro UIに最適化されたアプリケーション(以下,アプリ)である「Metroスタイルアプリ」は,従来のWindows用アプリとはその立ち位置が大きく異なる。このあたりは,MicrosoftのChas Boyd氏が示したスライドを見るのが手っ取り早いだろう。
 Windowsカーネルの上にアプリケーション実行環境としてのWinRT(WindowsRunTime)が置かれ,Metroスタイルアプリはその上で走るようになっているのがポイントだ

Windows 8のプラットフォームブロック図。WinRTとMetroスタイルアプリが主役扱いになっている
画像集#004のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 WinRTというのは,これまでWindowsアプリを支えてきたWin32に取って代わるべく設計されている実行環境で,開発言語としてC++やC#などのほか,JavaScript,HTML5なども利用できるのが特徴だ(※従来のWin32アプリもWindows 8上では動作するが,非Metroスタイルアプリという扱いになる)。

 WinRTはさまざまな開発言語に対応するため,ゲームプログラマーが移行するのは容易そうに見える。ただ,同じ言語を利用していても,ライブラリが一新されているため,書き方はかなり変わることになる。来場していたプログラマーが馴染んでいるだろう「従来的なWindows上での開発」とは勝手が異なるわけだ。

Win32と,従来のWindows Runtime Library(WRL),そしてWinRTの代表的なAPIを比べた表。COMベースの呼び出しに欠かせなかった「QueryInterface」が廃止されているなど,従来とは構造が異なる。DirectXもCOMベースなので,DirectXの使い方も変化する部分が多くなる
画像集#005のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 また,MetroスタイルアプリのアプリケーションモデルはAndroidやiOS用のアプリと非常に近いものになる。たとえば,アプリの状態推移――起動した,スリープした,画面がローテーションした,など――に対応するコールバック関数を実装する形になるのだ。「イベントに対応する処理を書く」という意味ではこれまでのWin32に近いものの,内容はかなり異なるわけである。

アプリ起動と終了時に呼ばれるコールバック関数。「Initialize」がアプリの初期化,「SetWindow」はウィンドウイベントの登録……といった具合に,それぞれのコールバック関数で行う内容が決まっている
画像集#006のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 起動時には「Initialize」「SetWindow」に続いて「Load」「Run」の順で呼び出される。Loadでは「ゲームが使う素材などをロードできる」(Boyd氏)とのことで,非同期で行えるそうだ。Loadでデータのロードを開始すると同時に,ゲームではローディング中の画面を表示し,Runで実行できることになる。

InitializeからRunまでをゲームの画面に対応させたもの。Loadでローディング開始,Runの間もロードが終わっていなければロード続行,終わったらゲームスタートという流れになる
画像集#007のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 アプリにライフタイムという概念があるのもAndroidに近いところだ。
 Androidアプリの場合,システムメモリが足りなくなってくるとOSからアプリを終了させるリクエストが出るため,それに従う必要がある。また,サスペンドなどのイベントが発生したときにはそれに応じた挙動を取るようソフトウェアを実装する必要があり,それに従う必要もあるが,このあたりはMetroスタイルアプリでも同じだ。言い換えると,Metroスタイルアプリをユーザーが意識的に終了させたり停止させたりする必要はない。

 Metroスタイルアプリの場合,システムメモリが不足したときに終了リクエストが発行されるほか,サスペンドのリクエストも行われるが,Metroスタイルアプリの場合はサスペンド通知後に5秒間の猶予があるとBoyd氏は説明している。つまり,5秒のうちにサスペンドへ備えた操作を行えるようにすればいいわけだ。

システムメモリが不足すると終了リクエストが送られるあたりはAndroidとよく似ている
画像集#008のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 さらに面白いのは,Androidと同じように,アプリに「権限」の仕組みがある点だ。Androidの場合,「完全なインターネットアクセスが必要」といった具合に,アプリ側の要求する権限が(アプリの入っている)APKファイルに埋め込まれており,インストール時にはユーザーに対して権限の許可が求められるような仕組みになっている。

 Metroスタイルアプリも同様で,ZIP形式ベースのアプリケーションファイルに権限の情報が埋め込まれていて,インストール時にユーザーに許可を求めるような仕様になっているという。もちろん拒否することも可能だ。
 従来のWindowsにはなかった仕組みだが,セキュリティを確保するためには必要という判断から,Metroスタイルアプリで組み込まれたのだろう。

「Broker」という監視役が,権限を必要とするAPIの呼び出しを監視し,「AppxManifest」に記された権限が与えられていなければ呼び出しを止める,というスライド。インターネットアクセスやファイルへのアクセスなど,さまざまな動作が監視対象となる
画像集#009のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ


入力デバイスは

タッチパネルが最優先


 Metroスタイルアプリの開発にあたってはそのほかにも,従来のWindowsアプリにはなかった要素に気を配る必要がある。たとえば画面の下段に表れる通知バー「AppBar」や,画面左側に表示されるペイン「SettingPane」を使う方法などが,Sandy氏から紹介された。

 ここで重要なのは,Metroスタイルアプリが,ソーシャル的要素を持ったゲームを簡単に作り込めるような機能を持っているとされたこと。プレイヤー同士がスコアやスクリーンショットを共有するという,ソーシャルに欠かせない機能をWinRTが提供してくれるということが強調されている。

Sandy氏が示した「ハイスコアを共有するコード」の例。詳細は省くが,この程度の規模のコードでソーシャル的機能を盛り込めるという
画像集#010のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 もう1つ,入力系では,Boyd氏が「Windows 8ではタッチパネルが最優先」と述べていたことを押さえておきたい。
 もちろん,それ以外の入力デバイスが使えないわけではなく,「キーボードなども違和感なく使えるように作るべし」とも氏は述べていたが,タッチパネルインタフェースの作り込みが大切にはなるようだ。

 ちなみに下に示したのはMicrosoftが開発しているオーバーレイ表示型の方向パッド「Virtual Touch Thumbsticks」。一般にオーバーレイ型の方向パッドは場所が固定されているため,目で逐一確認しておかないと指が操作エリアから外れて無反応になってしまったりするが,Virtual Touch Thumbsticksでは,指が外れそうになると中心の位置を補正して指に追従させるという。これはなかなか面白い。

Thumbstickサンプルの動作。指が操作エリアから外れそうな位置まで動いてしまった場合には,中心を修正しつつ追随させる。「指が外れてイライラすることがない」とBoyd氏
画像集#011のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ 画像集#012のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ

 Windows 8の場合,製品によっては,さらに三次元加速度センサー,ジャイロ,地磁気計といったデバイスも入力に利用できる。これらの生データを処理し,ユーザーから見て分かりやすい情報に変換するレイヤーも,WinRTが提供するとのことだ。


セッションではMetroスタイルアプリのコードが次々と紹介されたほか,紹介した機能を盛り込んで作ったものとして,ボールをゴールへと誘導する「Marble Maze」というゲームデモも披露された
画像集#013のサムネイル/[GDC 2012]Windows 8のMetro UI上で動くゲームは既存のWindowsタイトルとほぼ互換性なし!? MetroスタイルはAndroidやiOS用アプリと同じ方向へ
 このようにMetroスタイルアプリは,従来のWindowsアプリと異なるAPI上で動作し,また,まるで異なる機能が提供されていることが分かってもらえたのではなかろうか。
 正直なところ,既存のWindows用ゲームタイトルをMetroスタイルアプリ化するのは,不可能ではないものの,(シンプルなゲームを除けば)かなり大変そうな気配だ。どちらかといえば,Metro UIのために新規開発されるタイトルが多くなるだろう。「Windows 8時代には,タブレット機でPCゲームを」と期待している人も多いと思われるが,現実には,従来型の移植ではなく新規タイトルが多くなり,AndroidやiOSなどといったプラットフォームとあまり変わらない状況になる可能性が高そうである。

Windows 8 Consumer Previewダウンロードサイト

  • 関連タイトル:

    Windows 8.x

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:04月23日〜04月24日