CEDEC2008

CEDEC2008イメージ画像

2008年9月9日(火)~ 9月11日(木)

CEDEC2008
(CESAデベロッパーズカンファレンス2008)

概要

会場昭和女子大学(アクセスマップ
日時2008年9月9日(火)~ 9月11日(木)9:30~18:00
概要当社はレギュラーセッション、展示テーブルにて出展いたします。
講演内容光ディスクを乗りこなせ! / ロード時間の短縮手法
講演者:押見 正雄(代表取締役専務CTO)
日時:9月11日(木)14:50~16:10
ロード時間に関する調査結果はこちら

イベントレポート

日時:2008年9月9日(火)~9月11日(木)
会場:昭和女子大学
主催:コンピュータエンターテインメント協会
後援:経済産業省

 株式会社CRI・ミドルウェアは、10回目の開催となる国内最大のゲーム開発者カンファレンスCEDEC 2008(CESAデベロッパーズカンファレンス 2008)に出展し、レギュラーセッションの講演を行いました。展示ブースでは、講演テーマとなった「ロード時間の短縮」を実現するミドルウェア「ファイルマジックPRO」、高品質な音声再生を行う「救声主 for NINTENDO DS」、複数の音声ファイルを同時にストリーミング再生できる「CRI ADX」、高画質HDムービー(1080p)をなめらかに再生する「CRI Sofdec」などの製品をご紹介しました。さらに、DS間で行う動画のストリーミング配信、DSでリアルタイムに音声のピッチを抽出できる音声解析、抜いた画像を背景に重ねるパンチスルームービーなどの新技術も参考出品しました。当社の技術が皆さまのゲーム開発のお役に立てれば幸甚です。

ブース風景

ブース風景

レギュラーセッションレポート

『光ディスクを乗りこなせ! / ロード時間の短縮手法』
 ~ロードの高速化と快適なプレイ環境の実現~

講師:株式会社CRI・ミドルウェア 代表取締役専務CTO 押見 正雄

 当社は、ゲームメーカーの皆さまが面白いゲームを開発するためのお手伝いをしている。今回取り上げる「ロード時間の短縮」というテーマは、プレイヤーの方々に、よりゲームに集中して楽しんでいただくための重要な課題だ。ここでは、ロードの高速化を図るために当社が蓄積してきたさまざまなノウハウと、それを基に開発したファイル圧縮システム「ファイルマジックPRO」の特徴について紹介したい。

セッション風景

セッション風景

■光ディスクとドライブの構造を理解する

 光ディスクタイトルのロード高速化のためには、以下のようなディスクとドライブの構造特性を理解しておくことが必要だ。
 光ディスクの読み取りはスイング型とストローク型の2つのシーク動作を組み合わせて行う。スイング型はピックアップの先端が首を振るように動き、動作は速いが狭い範囲のシークにのみ有効だ。

 ストローク型は内周~外周の全域を移動するが動作は遅い。そのため、シークはディスク上の一定の範囲では高速だが、それを超えると途端に時間がかかる。
ディスクの外側では偏心や反りによってリードエラーが起きやすい。リードエラーが起こると回転速度を落としてリトライするため、ロード時間をロスしてしまう。

図1:2種類のシーク(講演資料より)

図1:2種類のシーク(講演資料より)

■光ディスクのロード時間を短縮する手法

 ロード時間は、リードとシークの時間を合計したものだ。リード時間の短縮にはファイル圧縮、シーク時間の短縮にはファイルの連続配置などが有効となる。続いては、光ディスクのシーク特性や、ドライブキャッシュを考慮したロード時間の短縮法を考えてみる。

図2:ロード時間=リード時間+シーク時間

図2:ロード時間=リード時間+シーク時間

図2:ロード時間=リード時間+シーク時間

(1)パッキングによるオープン/クローズの除去
 ゲームタイトルでは数千~数万単位の数のデータファイルを扱うため、オープン/クローズの処理だけでも負荷がかかる。オープン時にはディスク最内周のディレクトリ情報がシークされたり、クローズがOSにブロックされることもあり、それらが音声の途切れやフレーム落ちの原因にもなる。これを避けるため、データファイルはまとめてパッキングし、ディレクトリ情報はメモリに常駐させるとよい。パッキングはグラフィックの確認やデバッグ効率の点で問題となるが、当社のファイルマジックPROでは、追記機能や再パッキングなしにデータを更新できる仕組みを用意している。

(2)ファイル配置の最適化
 ファイル配置を最適化するには、ログを解析して自動的に配置を決めていく手法がある。しかし、ファイルの数が数万単位にもなると順列の数も膨大となるため、当社では人工知能的なアプローチによるFile MANA(ファイル・マナ)を開発中だ。ファイル・マナにアクセスログを読み込んで解析をかけると、シーク量がだんだんと収束していく。人工知能を利用してロード時間を短縮できるのは非常に有用であることが分かってきた。

図3:File MANAによるシーク時間の削減デモ

図3:File MANAによるシーク時間の削減デモ

(3)圧縮によるロード時間の短縮
 データを圧縮して記録すれば読み込むデータ量が減り、リード時間が短縮できる。この用途のアルゴリズムとしては、スライド辞書による圧縮がよいと考えている。ZIPやLHAではハフマン圧縮を使っているが、辞書領域が必要で、展開にも時間がかかる。
 ファイルマジックPROでは、圧縮ファイルを「自己エリア展開」するため、展開用の一時バッファを必要としない。また、読み込みながら別スレッドで展開するオーバーラッピングも可能だ。実際に圧縮してみると、面白いのがWiiウェアだ。Wiiウェアは本体に内蔵しているNAND型フラッシュメモリに保存されているが、このフラッシュメモリですら速くなっている。圧縮は光メディアだけでなくROMメディアにも効果があることがわかる。

(4)ストリーミング再生中のデータロード
  データのロード途中で音声ファイルやビデオファイルへのアクセスを少なくすることも重要だ。ストリームバッファを500KBくらい用意し「残り1秒を切ったら再読み込み」といったしきい値を持たせると、それまでの時間は問題なくデータをロードし続けることができる。

図4.マジック・ディコンプによるワーク領域を必要としない圧縮ファイル展開

図4.マジック・ディコンプによるワーク領域を必要としない圧縮ファイル展開

■ランタイム設計による高速化

 ファイルマジックPROでは、ランタイムライブラリの設計に当たり、(1)非同期型のAPIを実現する、(2)パックしたファイルとパックしていないファイルを区別しない、(3)圧縮されたファイルか否かを区別しない、(4)スレッドアーキテクチャをきちんとサポートする、ということを目標に設定した。
 非同期型のAPIを実現するために設計したのが「ローダー」だ。「バインダ」とファイル名を指定してロードすると、ロードが開始~完了するのを待っているだけでよい。バインダとは仮想的なデバイスで、ドライブ名のようなものだ。マルチバインド機能により複数のパックファイル、ディレクトリ、ファイルからのロードも可能である。バインダは入れ子にすることもでき、非常に柔軟性のあるデータ構造を実現できる。
 また、最近実装したのがグループロード機能だ。次に移る可能性のあるステージやマップなどのデータを一括で読んでおくことで、シームレスにゲームを進めることができる。ステートに対してメモリ領域を割り付けて、グループロードを行っておくと、まったくロードのないゲームも実現できるのではないかと考える。
 プレイヤーにとって、ロードの待ち時間は、遊ぶことに没頭できる時間をそれだけ薄くしてしまう。ロード時間をできるだけ無くして楽しいゲームを作ることに、今後もぜひ協力していきたい。

ページ上部へ