2012年8月20日から22日までパシフィコ横浜にて開催されているゲーム開発者向けカンファレンス「CEDEC 2012」。ここでは、CRI・ミドルウェアの研究開発部チーフマネージャー・櫻井敦史氏の講演「ミドルウェアで解決!スマートフォンアプリ開発の苦労や悩み」の内容をお届けする。

櫻井敦史氏
櫻井敦史氏

櫻井氏はまず、CRI・ミドルウェアはセガサターンの頃から音声、映像のミドルウェアを専門に開発してきた会社であり、現在はiPhone/Android含めた携帯機や、据え置き機などほぼすべてにミドルウェアを展開していると、自社について説明を行った。

同社のミドルウェアの総称は「CRIWARE」と呼ばれ、これまでに2400以上のタイトルに使用されており、昨年のCEDECでは最優秀賞も受賞。最近では、Unity向けミドルウェアのリリースをはじめ、バンタンゲームアカデミーのサウンドコースの授業向けに、ゲームサウンド制作をカバーするオール・イン・ワン型のオーディオソリューション「ADX2」の提供を行なっている。

今回の講演では、同社のスマートフォン向けCRIWAREの特徴を上げつつ、それらの要素で何が解決できるのか、何に役立つのかといった内容が語られた。

まず、ムービー演出と音声データに関しての話を進める前に、カードに描かれたキャラクターをムービーとして動かすことができるというデモが披露された。昨今、スマートフォンアプリではカード収集を売りにしたものやカードバトルといったジャンルのゲームが増えてきているが、それらに登場するカードのキャラクターが、グリグリと動く姿を想像すれば分かりやすいだろうか。キャラクターと背景は別々のムービーになるような構造となっているので、別の背景を用意すればすぐに違った印象のカードに変更することもできる。

さらにカードを表示させている画面上で音を流すことも可能。サウンドに関しては、短いサウンドファイルをシームレスにループ再生することで音を流したり、そこに別の音声ファイルが入ってきて複数の音を同時に流す、といったことも簡単に行えるという。

もちろんサウンドというからにはボイスを流すこともでき、デモ内では「セリフ」というボタンを押すとキャラクターが喋るという場面も披露された。なお、この時再生されたボイスは、ローカルに存在するファイルを読み込んだのではなく、ネットワーク上にあるファイルを再生する仕組みになっていた。

これらのデモを行ったところで、スマートフォンアプリ開発で苦労するポイントが列挙され、各項目をまとめて「アプリは小さく、ゲームは快適&豪華に」というテーマで悩みを解決する手立てが語られた。

まずは、アプリのサイズを削減するための「圧縮」について。圧縮にもサウンド、パタパタアニメのような映像、そしてゲーム本体の3つの圧縮がある。サウンドデータの場合、最初に圧縮コーデックの使用・不使用と、コーデックを使用する際はコーデックの選択という問題が出てくる。

リニアPCMのように圧縮を行わない場合、CPU負荷は軽いがデータサイズが大きく、MP3は一本だけならハードウェアデコードで軽いがループ再生や複数同時再生が苦手といった、それぞれ長所と短所がある。そこで登場するのが、ADX2の独自コーデック「HCA-MX」だ。

これは高圧縮・低負荷の音声コーデック「HCA」を複数音の同時再生用にカスタマイズしたもの。iPad2を使ったデモでは、1つの音声ファイルを鳴らすと、HCAの場合、CPU使用率が約1%から3%まで上昇。さらに、一気に16個のファイルを再生すると、CPU利用率は約25%にまで跳ね上がった。しかしHCA-MXの場合は、同じ16個のファイルを同時再生しても、9%程度までしか上昇しなかったのだ。

ゲーム中では普段BGMが流れているところに効果音やキャラクターのボイスが入ったりと、複数の音が流れることがあるため、HCA-MXを使うとトータルでのCPU負荷があまり上がらなくて済むという。ただし、これを使うためには、同時に鳴らす音のサンプリングレートを揃えておく必要があったり、個別のピッチ変更が行えないなどの制限があるようだ。現状では同時に16個もの音を鳴らすゲームはスマートフォンではなかなかないが、櫻井氏は「今後そういった世界に突入していくのでは」と話す。

ちなみにHCA/HCA-MXは、圧縮率だけで言えばステレオで64kbps、モノラルで42kbpsぐらいまで圧縮しても聞ける範囲の音質になっているという。こういったサウンドデータの圧縮が、ファイルサイズにどれだけインパクトを与えるものなのか、具体的な計算例も提示された。同じサウンドでも、オンメモリの効果音になるとメモリ使用量にも影響を与えるため、ここでも圧縮の効果が効いてくるのだとか。

音声の次は、パタパタアニメの話に。画像圧縮やZIP圧縮により連番でアプリで再生するのと比べると、連番テクスチャを動画圧縮してしまえば、アルファ値(透過度の情報)がついたものでも100~150KBにまで圧縮できるうえ、ループ再生や途中からの再生にも対応できるという。

データ圧縮の際、ZIP圧縮が使われることが多いようだが、同社の「ファイルマジックPRO」は、ランタイムライブラリからシステムメモリ間の中間バッファを使わない独自の圧縮コーデックを持っているとのこと。そのため、ファイルを圧縮したかどうかをプログラムで気にする必要がなく、今まで無圧縮で開発の後半になって急に圧縮をかけたとしても、プログラムが変わらないで済むという強みがある。

続いては「バックグラウンドダウンロード」をキーワードに話題が展開。ここまで話のあった圧縮により、アプリサイズを小さくすることは可能だが、最近はアプリも大規模化してきているため、追加データのダウンロードを考える必要性も出てくるという。

この追加データのダウンロードのポイントは、同社製品を活用しての提案と言うより、こうして作って欲しいという要望に近く、「ゲームを止めずにプレイヤーを待たせない」ようにしてほしいのだと櫻井氏は語る。

最初のカードのデモ内容でキャラクターのボイスをネットワークから読み込んで再生していることに触れたように、CRIWAREのうち「ファイルマジックPRO」では、ファイル名の代わりにURLを指定するだけでネットワークからデータが読める構造になっている。また、ネットワークが切断されたら自動的に再接続を待って、つながったら続きのデータを読み込むといった機能もあるようだ。

このポイントとなるのが「バックグラウンドインストール」だが、これは名前からも分かる通り、アプリの裏でインストールを進める機能となっている。本機能は「ファイルマジックPRO」でなくても実装できる機能ではあるが、この機能を使うことで、アクションゲームであれば現在のステージを遊んでいる最中に次のステージをダウンロードしておくといったように、ユーザーが先に落としたゲーム本体を遊んでいるうちに追加データのインストールを手軽に行うことができる。

ピンク色のエプロンドレスを着たキャラクター以外は、追加データをダウンロードして表示させている。
こちらはステージのデータを読み込み、スムーズに次のステージへ移行するというデモの様子。

アプリ本体のサイズが小さくても、実際に遊ぶときにダウンロードが必要になり、ユーザーがかなりの時間待たされてしまうというのは十分に起こりうるケースなので、櫻井氏は「新しいステージに行く時にダウンロード待ちをしなくてもいいような構造を作ってもらえると嬉しいですし、それを手伝えるようなミドルウェアにしていきたい」とした。

なお、データの追加ダウンロードを行うようにすると、ゲームデータのパックファイルも複数個になる。これでアプリ側の手間が増えるのももったいないため、「ファイルマジックPRO」ではバインダーと呼ばれる仮想的な読み込みデバイスを読み込み元に指定するという。アプリ側はバインダーにパックファイルを登録すると、読み込み時に指定されたファイルパスに合わせてパックファイルの中やディレクトリの中を自動で読みこむようになるのだ。

パックファイルを複数登録することもできるので、ゲームデータを追加でダウンロードする形をとってもゲームプログラム側を変更する必要がなく、バインダーにファイルを追加で登録するだけで進められるというのがポイントとなる。この機能を自力で実装する際にも、このように指定できるようにすると便利ではないかと述べた。

続いては、スマートフォンでの動画再生について。システムに標準搭載された機能を使うと負荷をあまりかけずに再生可能だが、アルファ値をつけたりテクスチャとしてゲームに取り込むとなると、その難易度が跳ね上がるという。Unityの場合だと、動画テクスチャはスマートフォンではサポートされていないので、パタパタアニメのような演出はアプリ側で実現しなくてはいけなくなる。

ここで櫻井氏は、「Sofdec」というソフトの機能の一つを紹介して「テクスチャに動画を貼れるという発想を持って欲しい」と述べた。テクスチャに動画を貼れるということは、モデルデータの絵を動かすこともできる。また、アルファ値を使ったりループ再生も自然にできるので、演出の幅が一気に広がるのだという。

ではアルファが使えるテスクチャだとどんなことができるのか、というデモでは、立方体の表面にテクスチャで実際に動画を貼り付けられている場面や、アルファ値をつけて水槽を模した立方体の奥が透けて見えるといった場面が披露された。

これらは機能的なデモのようで、講演の最初にも使用されたカードバトル風の画面を用いてのデモも行われた。ここでは、左側に表示されている女の子のカードをタッチすることで、バトル演出が入るようになっていた。ポイントは、演出をムービーのフル画面再生で切り替えているわけではないので、ゲームに実装した際など、ユーザーのタッチ操作で演出をキャンセルできるようになっているところにある。櫻井氏は「どんなに綺麗なムービーでも繰り返し見ていると飽きてしまうので、キャンセル機能をつけてプレイを快適にするのも重要だと思います」とした。

ここまでのデモはすべてキャラクターのモデルを動画として動かすというものだったが、先にも説明したように、キャラクターと背景は別々のムービーになっているので、背景を動かす演出を加えることもできる。また、背景はムービーを再生しているだけなので、例えばデザイナーが別のムービーを作れば、背景を差し替えて違う雰囲気の場面を作ることもできるのだ。これにより、プログラマーとデザイナーの分業のひとつにでも使えるのではと話していた。

機体をいろんな角度から見られるロボットビューワーのような機能デモ。
ロボットだけでなく、背景も宇宙を流れるような映像になっていた。

講演が進むと、CRIの新しい機能として「αプラス合成」というものが紹介された。これは以前から存在する「アルファ合成」と、光のエフェクトなどで使う「加算合成」を一本のムービーファイルで行うというもの。光のエフェクトなどをアルファムービーで作成する場合、縁の部分が黒っぽくなってしまうことがあり、この問題を解消するのも大変だが、αプラス合成を使えばムービー一本の描画でも、このエフェクトがアニメーションで使えるようになるという。特に重ねる演出となったときに、アルファだけでなく加算も一緒に使えるのがポイントとなる。実際にゲームを作る際にも、Unityであればムービーが使えるので、アルファ付きの動画テクスチャをそのまま使用することが可能だ。

続いては、サウンド演出について。「ADX2」の基本コンセプトはプログラマとサウンドデザイナーの分業度合いを高めて効率を上げることであり、サウンドデザイナーが「ADX2」のオーサリングツールを使って音声ファイルからいろんな音をデザインして、ツールから出力したバイナリファイルをゲームプログラマに渡せば、プログラマは名前を指定して音を鳴らすだけで済むという。音量やエフェクトのかけ方、再生タイミングをなるべくデータ側に埋め込んでしまうことで、プログラマは再生開始の指示を出せばいいだけというのが狙いのようだ。

このあとは、「ADX2」同梱の「AtomCraft」と呼ばれるオーサリングツールを使った、サウンドの再生制御についても説明が行われた。「AtomCraft」の特徴の一つであるランダマイズの要素は、音のピッチやボリュームなどを指定した範囲でランダムに鳴らすことができるというもの。

インタラクティブなサウンド制御は、ゲーム側から受け取るパラメーターによって音が変化するというものだ。例えばキャラクターがセリフと喋るとBGMの音量が下がるといったように、音をカテゴリ付けしておけばカテゴリ間の影響設定も行えるようになっている。

次のブロック再生は、ツールの画面を参考にしつつ説明が行われた。画面に青、黄緑、赤、水色の4つのブロックがあり、音を再生すると一個目のブロック(青)をループするようになっているが、プログラマ側から2個目のブロックにいけと指示があると、1ブロックの曲が終わったところで2ブロック目の再生を行えるようになっている。

ゲーム内ではフィールドの切り替わりなどで使用できそうだが、BGMだけでなく効果音にも使用できるという。例えば、ボタンを押している間はビームを溜めるというゲームシステムがあった場合、ボタンが押され続けている間は溜めの音をループするようにして、ボタンが離されたところで発射音を出すといった感じだろう。別の使用例では、クイズなどでよくある正解までの溜めにも活用できるとのこと。

これらをプログラムでやるのと何が違うのかについては、サウンドデザイナーが音のつながりや変化の度合いをツール上で確認しながら聞けることが大きいという。ブロックの区切りがいいところで次のブロックに、というのをプログラムでやるのも手間になるのではないかという。

Unityで使用する際には、「ADX2」のプラグインがあるので、Unityの標準機能と比べると、サウンド制御のスクリプトがシンプルになるメリットがあるという。なお、デザインした音はバイナリーデータをUnityのアセットフォルダに入れるという形になるが、アセットの中に入っているバイナリーデータの中身を一覧表示でき、そこに入っている音のプレビューも可能だという。そのため、「AtomCraft」で作ったデータを渡されてもUnity上で確認できるし、ツール側で「この音はこんな音で、こういった場面で使う」といったコメントを入れておけば、それも表示させることが可能だ。

こうしたサウンドデザインツールとしての機能だけでなく、「ADX2」にはインゲームプレビュー機能も付いており、動いているゲームプログラムに「AtomCraft」から通信でつないで、直接音をいじることもできるようだ。この機能を使えば、思う存分パラメーターを調整したものをビルドして、Unityのプログラマにデータを渡せば情報が全部更新されるのだという。

最後には、ピンボールゲームを用いた最新のデモが披露された。ここまで紹介された機能はすでに提供されているものになるが、この最新デモはiPhone/iPad用のインゲームプレビュー機能を用いたものになっていた。iPhone/iPadではアプリをビルドするだけでも時間がかかるので、実機で音を聞きながら調整できるようになれば、もう一歩音作りを豪華にしていけるのではないかとしている。

そして講演の締めくくりに櫻井氏は「我々CRIはゲームを作っていませんが、ゲーム作りを少しでもお手伝いできたり、発想を飛躍できるようなものがあれば嬉しいと思っています。ご意見・ご要望があればどんどんお聞かせください」と語った。

※画面は開発中のものです。

  • セガ特集ページ
  • Figgy
  • 軌跡シリーズ特設サイト
  • BUSTAFELLOWS特設サイト

REGULAR定期配信

  • ゲーム発売日・配信日カレンダー
6月26日(金)
Crying suns
Summer Pockets REFLECTION BLUE
Summer Pockets REFLECTION BLUE 豪華限定版
ラストオリジン
6月28日(日)
厨二病 鎮魂歌―Concertino Edgelord―
6月29日(月)
ブラスターマスター ゼロ
ブラスターマスター ゼロ 2
6月30日(火)
AFKアリーナ
SINoALICE
ストライカーズ 1999
7月1日(水)
イケメン王子 美女と野獣の最後の恋
幻想神域2 -AURA KINGDOM-
7月2日(木)
BOSSGARD
わんニャンどうぶつ病院 ペットを助けるだいじなお仕事
キャサリン・フルボディ for Nintendo Switch
トリッキーS
ドゥードゥルゴッド:エボリューション
プッシー&プリー・イン・ブロックランド
常夏プールパレス
彩色のカルテット
7月3日(金)
スピリットウィッシュ~三英雄と冒険の大地~
マーベルアイアンマン VR
マーベルアイアンマン VR デジタルデラックス版
消しゴム落とし 謎
甲鉄城のカバネリ -乱- 夜明けの舞花
7月6日(月)
常夏プールパレス
7月7日(火)
ひよこ社長のまちづくり
7月9日(木)
CrossCode
eBASEBALLパワフルプロ野球2020
eBASEBALLパワフルプロ野球2020 パワフルエディション
QuietMansion2
SWORD ART ONLINE Alicization Lycoris
SWORD ART ONLINE Alicization Lycoris デラックスエディション
SWORD ART ONLINE Alicization Lycoris 初回限定生産版
Warparty
とらぶるでいず
オーバーパス
ゴラッソ!
ブレア・ウィッチ 日本語版
ブレア・ウィッチ 日本語版 初回限定版
7月10日(金)
Bloodstained: Curse of the Moon 2
Deadly Premonition2
7月13日(月)
レイトン教授と最後の時間旅行 EXHD for スマートフォン
7月14日(火)
DEATH STRANDING PCデジタルダウンロード版 / 初回限定生産版
DEATH STRANDING PCデジタル版スタンダードエディション
ロケットアリーナ ミシックエディション
7月16日(木)
Code:Realize ~白銀の奇跡~ for Nintendo Switch
Code:Realize ~白銀の奇跡~ for Nintendo Switch 限定版
【超激レア】ふたりでにゃんこ大戦争「ソフト&ポーチセット」
インディヴィジブル 闇を祓う魂たち
スペースマウス2
ハンターズアリーナ:レジェンド(アーリーアクセス)
ボクらの大運動会
リジットフォース・リダックス
7月17日(金)
Ghost of Tsushima
Ghost of Tsushima デジタルデラックスエディション
ペーパーマリオ オリガミキング