[GTMF2016]ゲームのために開発されたデータ圧縮ミドルウェア「Oodle」とは
データ圧縮という話題はとんでもなく地味なものだが,実はゲームにはなくてはならない存在で,なおかつゲーマーのゲーム体験をも左右する重要な存在だったりもする。セッションで語られたOodleの特徴を紹介してみよう。
解凍速度に重点を置いた複数のコーデックを提供するOodle
また,ユーザーの質問には開発者自らが24時間以内に回答する,という社内ルールを設けており,日本からの日本語の質問に関しても翌営業日以内に開発者からの回答が得られる体制を整えているそうだ。
ライセンスは,Oodleデータ圧縮はゲームタイトルごとに1ライセンス,一方のOodleネットワーク圧縮はプラットフォームごとに1ライセンスというライセンス体系になっているという。対応プラットフォームはWindows,Linux,PlayStation 3/4,Xbox 360,Xbox One,iOS,Androidで。PlayStation Vitaには対応していないが「開発者によると対応させるのは簡単だそうなので,要望があれば対応するかもしれない」(阿部氏)とのこと。一方,WiiU,Nintendo 3DSには現在のところ対応する予定がないそうだ。
まず,データ圧縮についての説明がされた。Oodleデータ圧縮には5種類のコーデックがあり,用途に合わせてコーデックが選べる仕組みになっているという。それぞれのコーデックには下のスライドのような特徴があるが,全体としては解凍速度に重点を置いているという。というのは,「ゲーム中にクライアント側でリアルタイムにデータ圧縮を行うことはあまりないだろう」という理由からだ。
Oodleデータ圧縮にはスライドに示されている5種類のコーデックがあり,さらに現在,「Oodle Mermaid」というコーデックを開発中だそうで,それが完成すれば6種類のコーデックが選択できるようになるわけだ。ユーザーは必要とされるデータ圧縮率や,解凍速度といった要件から適切なコーデックが選択できるという。
解凍に関しては並列化も可能とのことで,たとえばプレーヤーがゲームをしている最中に裏でデータの解凍を行うといったことも容易にサポートできるという。
Unreal Tournament 4に採用されているOodleネットワーク圧縮
続いてOodleネットワーク圧縮だが,こちらはUDPおよびTCPに対応するリアルタイムの圧縮ライブラリである。特徴として挙げられるのは,まずきわめて高い圧縮率を実現し,ネットワーク帯域を大きく削減できるという点だ。
さらに辞書を使った圧縮にも対応している。高頻度に現れるデータの辞書を作成してクライアントに配布すれば,より高い圧縮が可能になる仕組みである。辞書の学習を進めていけば圧縮をさらに高めることができるが,辞書サイズが大きくなってしまうので,バランスを考えて辞書を利用するということになるだろうと阿部氏は説明していた。
Oodleネットワーク圧縮はメモリ使用量の少なさも特徴だそうだ。UDPに関してはコネクションごとのメモリを確保しないため,コネクションが増えてもメモリ使用量は増えない。また,TCPもメモリ使用量はきわめて小さいという特徴があるそうだ。
Oodleネットワーク圧縮は,阿部氏によるとEpic GamesのUnreal Tournament 4に採用されているという。「そのソースコードをGitHubから入手できるという情報を得た」(阿部氏)と語っていた。Epic GamesのGitHubはユーザー登録が必要なので,筆者はまだ未確認だが,興味がある方は参照してみるとよいのではないだろうか。
以上,データ圧縮ミドルウェアOodleの概要を紹介してみた。かなり地味なものだが,ゲーマーにとっては待ち時間を減らしてくれたり,ネットワークのラグを軽減するという意味でゲーム体験を大きく左右する重要なミドルウェアでもある。ゲーム開発者であれば,データ圧縮のみならず,ネットワークトラフィックの圧縮に対応したミドルウェアの存在は注目してもよいのではないだろうか。一般ゲーマーも優れたデータ圧縮がゲーム体験を支えているということを,ちょっと意識しておくとゲームをより楽しむことができるかもしれない。