テクスチャデータを圧縮してPhotonのRaiseEventとモノビットエンジンのRPCで送信する

はじめに

以前、Photonやモノビットエンジンを使って、ランタイムで生成されたテクスチャ画像(インメモリのデータ)を他のユーザーに送信する方法を実装した。 しかし、テクスチャデータを圧縮しないまま送受信していたので転送時間が長かった。
データを小さくして転送時間を短くするために、テクスチャを可逆圧縮ロスレス圧縮)して送受信するように実装を修正する。

実装の修正

テクスチャデータを可逆圧縮PNG形式にエンコード)するように、TextureSharingComponent のスクリプトを一部修正した。
TextureSharingComponent.cs
TextureSharingComponentForMUN.cs

修正は以下の2点

  • 送信用のテクスチャデータの取得を、texture.GetRawTextureData() から texture.EncodeToPNG() に修正
  • 受信したテクスチャデータの読み込みを、texture.LoadRawTextureData(this.receiveBuffer) から texture.LoadImage(this.receiveBuffer) に修正

実行結果の確認

データを圧縮した結果、転送時間が短くなっていることが分かる

圧縮なしの実装(前回の動画)

youtu.be

圧縮ありの実装

youtu.be

まとめ

  • テクスチャデータを可逆圧縮PNG形式にエンコード)した状態で送受信するように修正した
  • 送受信するデータ量が小さくなり転送時間も短くなった