PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

一時的なアンチエイリアシング

注意: これは、GPUまたはレンダリングプロセスで用いられるグラフィックのアンチエイリアシング技術とは異なるものです。

Boltには、Unity内のUpdateFixedUpdate間の互いに素な関係を処理する組み込みサポートがあります。簡潔に言うと、ゲームのシミュレーション(FixedUpdate)とレンダリング(Update)の部分が互いに常に1:1となる必要が無いということです。
これにより'マイクロスタッター'として知られる現象が起こります。

'Trasform'のプロパティを状態上で定義するとき、ネットワーク上で同期するため、Attachedコールバック内でそれに変換を割り当てる必要があります。
通常、シンプルなプレハブは以下のようになります:

Photon Bolt: Simple Prefab
Photon Bolt: シンプルなプレハブ

変換を接続するコードは以下のようになります:

C#

using UnityEngine;
using System.Collections;

public class Sphere : Bolt.EntityBehaviour<ISphereState> {
  public override void Attached() {
    state.Transform.SetTransforms(state.Transform, transform);
  }
}

'Bolt 101'シリーズで以前Boltを用いたことがある場合、これは非常に似たようなものとなります。
シミュレーションはすべてFixedUpdate内で発生するため、このセットアップは 'マイクロスタッター 'を引き起こします。
これに対処するには、一時的なアンチエイリアシング と呼ばれるものを用います。
詳細は"こちら"を参照してください。

最初に、'Sphere'クラス上で通常のクラスフィールドを設定し、それにSetTransformsに対する 2つ目 の値として渡してください。

C#

public class Sphere : Bolt.EntityBehaviour<ISphereState> {
  [SerializeField]
  Transform renderTransform;

  public override void Attached() {
    state.Transform.SetTransforms(state.Transform, transform, renderTransform);
  }
}

続いて、ルートゲームオブジェクトからメッシュレンダリングパートを子オブジェクトに分割してください。
そして、'Sphere'スクリプト上に作成した'Render Transform'プロパティに対して新たな'SphereMesh'の子オブジェクトを割り当ててください。
以下のようになります:

Photon Bolt: Recommended Prefab
Photon Bolt: 推奨されるプレハブ

これで、BoltはFixedUpdateまたはUpdateから発生した、完全に整列されていないアーティファクトを全て処理できるようになります。

Back to top