Unity を検索

Unityのデータ圧縮の未来

2015年12月16日 カテゴリ: テクノロジー | 4 分 で読めます
Placeholder image Unity 2
Placeholder image Unity 2
シェア

Is this article helpful for you?

Thank you for your feedback!

こんにちは皆さん!

私はRich Geldreichといいます。私はゲーム開発者で、グラフィックプログラマーで、そしてデータ圧縮の専門家です。わたしはこれまで20年以上にわたってEnsemble Studios (Microsoft)やValveといった会社でいくつかの主要なゲームエンジンの開発や最適化、そして強化の最前線に立ってきました。

また、この数年間ゲームをリリースする合間に、クローズドあるいやオープンソース問わず、いくつかのゲーム開発者向けの圧縮ライブラリーの開発に取り組んできました。crunchLZHAMminizjpeg-compressorなんかがそうです。picojpeg というメモリーの極端に少ない8bitの組み込みCPU向けに最適化したJPEGデコーダーを書いた事もあります。ゲーム以外の領域だと、これらのライブラリーは驚くほど多くの種類の面白いアプリケーションで活用されています。例えばWebGLのコンテンツ配信用に作られたpicosatellitesやGPUに最適化されたUHD videoデコーディングなどがそうです。その他、教材としても活用されています。

UnityではわたしとWebGLチームのAlexander Suvorov が、驚くほど広く深い、データ圧縮の領域を担当します。

で、圧縮って何?なんで重要なの?

世界随一のデータ圧縮エキスパートであるMatt Mahoneyによると、データ圧縮というのは「保存・もしくは送信するデータのビット数を削減する技術」です。さまざまなレベルで圧縮というのは必要不可欠な技術で、時間を節約したり、ストレージの容量を節約したり、メモリーの利用効率を高めたり、通信の使用バンド幅を削減したりといったことを可能にします。圧縮はハードウェアやストレージ、データ送信のリソースを鑑みたときにそれまでは非現実的であったり採算の取れなかったようなことを可能にします。

圧縮システムには大きくわけで2つの種類があります。一つは特定用途に特化したJPEGやMP3などといった非可逆な技術、もう一つはZIPのような汎用に使える可逆な技術です。この2つのカテゴリーの中には果てしないバラエティーのアプリケーション、アプローチと特定用途に特化したアルゴリズムが存在します。その中からいくつか、最も重要かつ価値の高いシステムが世界標準となり、専用の回路によってハードウェアで直接実装されています。

Unity内部に結成された私たちデータ圧縮チームは、データ圧縮に関することすべてを担当します。内部的には、サウンド、テクスチャー、アニメーション、メッシュ、アセットバンドルなどの領域で、Unityは独自技術・既存技術問わず、すでに数々のゲームアセット向けの圧縮システムを活用しています。言うまでもなく、これらの圧縮システムなしにUnityは多くのプラットフォームで全く使い物にならないようなメモリー使用量を要求することになってしまいます。モバイルデバイスでは特にそうです。

わたしたちのチームの責任の一つは、すでに現在利用している圧縮システムをチューニング・最適化し、適切な状態に保つことです。近い将来、私たちは新しいオフライン&リアルタイムの汎用バイナリデータ差分圧縮機能をUnityの内部のいくつかのチームと一緒に実装していきます。圧縮チームの最も重要な長期的ゴールはUnity全体のソフトウェアスタックを見直し、どのように分割していけば設計上の障害を取り除いて最高の圧縮ソリューションを導入できるかを見極めることにあります。

現在までの進展

Unityの一員になって以来、Alexander Suvorovとわたしは現在の可逆圧縮の世界を深く調査していきました。可逆圧縮技術はUnityがダウンロード可能なアセットバンドルファイルが必要とするディスク容量やダウンロード時間を大きく削ることが出来るようにします。私たちのゴールは最新技術がどうなっているのかを確認するだけでなく、この分野がどこに向かうかを予測することでした。さらに、私たちはGPUテクスチャー圧縮に関する長期的な展望についても話し合いました。

実務的には、私たちは最初のモバイルフレンドリーなバイナリ差分データ圧縮(または「ファイルパッチング」の)ライブラリーを開発し、分析を始めました。この独立したライブラリーはUnityが、とある2点間で(できれば関連のある)「古い」データを持つ相手に対して「新しい」データを効率的に送信する必要があるときに利用出来ます。最後に、私たちはWebアプリケーション用にJavascript版のLZHAM可逆データコンプレッサーをテストし始めました。

可逆圧縮技術の調査中、私たちは新しいタイプのカスタムテクスチャー、ジオメトリーとアニメーションの圧縮が出来る機能が、現在の可逆圧縮にすぐに追加できることを発見しました。さらに私たちはそもそもデータがどのように可逆圧縮処理に投入されるべきかの流れを完全に再定義することも検討しています。また、UnityのCloud Buildやサービスチームの開発者との素晴らしいディスカッションの結果、現在の開発しているオフライン用のバイナリ差分データ圧縮機能をどのようにすればリアルタイムで動作させることが可能かのリサーチも始めました。

これらの仕事を通して、圧縮チームが取り組むべき長期的なポイントはUnityとよりよくコミニュケーションできるデータ圧縮エンジンをどうやって開発するか?ということだというのが見えてきました。長期的なゴールでは、Unityのデータに最適化された新しい不可逆圧縮および可逆圧縮のエンジンをいくつも開発していくことになるでしょう。

とにかく、非常にエキサイティングな時代がUnityで始まっています!これからの展開が待ちきれません。

2015年12月16日 カテゴリ: テクノロジー | 4 分 で読めます

Is this article helpful for you?

Thank you for your feedback!