コアオブジェクト
目次
Tick Engine設定
ScriptableObjectに保管されているグローバル設定を計画します。 これらのグローバル設定はWindowメニューにあります。
以下のように進んでください:
Window > Photon Unity Networking > Tick Engine Settings
- Enabel Tick Engine(Tick Engineを有効化する) - テスト目的のみ。 無効になっていると、NetMasterからのコールバックが全て停止し、結果としてSimpleのコード全てが無効となります。
- Send When Solo(Soloの場合に送信する) - ルームに誰もいない場合でも所有しているオブジェクトからアップデートを送信できます。 デフォルトでは有効になっています。
- Show GUI Headers(GUIヘッダを表示する) - Simpleコンポーネント用インスペクタの大きいグラフィックヘッダをトグルします。
Time Manager
Fixed Timestamp
UnityのTime設定で使用されたレファレンスと同様です。 PhysX同期率を調整し、FixedUpdate率に影響を与えます。
Ring Buffer
Send Every X Tick
SimpleSync uses FixedUpdate as its primary tick but can produce a network rate that is a subdivision of the fixed time rate. For example the default Unity physics fixedDeltaTime is .02 secs (50 ticks per sec). Setting Send Every X to 3 would result in a net rate of .06 (16.7 ticks per second) which is 1/3rd of the physics rate, resulting in 1/3rd the traffic.
Buffer Correction
- Manual - 手動で値を設定します。
- Auto - fixedDeltaTime値とSendEveryX値に基づいて値を設定します。
Frame Count
リングバッファに割り当てられているフレームの数。 The more frames, the greater the memory footprint but the longer the buffer. フレーム数が増えると、メモリフットプリントも大きくなりますが、長くなるほどバッファも増えます。 バッファとなる値は、合計で1-2秒を推奨しています。
Target Buffer Size
消費時間(OnSnapshot)にバッファ上にあるフレームの理想の数です。 ゼロに近ければ近いほど、レイテンシも低くなります。ただし、低すぎるとバッファがアンダーランする傾向が高くなります。
Buffer Min/Max
バッファのサイズ調整が必要とみなされる値です。
Ticks Before Grow/Shrink
小生が行われる前にバッファがMin/Max値を超過するティック数です。 調整はフレームの繰り返し、または1ティックに対し複数のフレームを消費することで行われます。 これらの値が大きければ大きいほど、バッファ自身が積極的にサイズ修正を行おうとすることが少なくなります。 修正すると目に見えて遅延が発生するので、これらは回避することがベストです。
Pack Object Settings
Code Generation
Auto Generate
有効にしていると、[PackObject]属性のクラスに対してアセンブリがスキャンされ、稼働するのに必要なsyncvarコードが生成されます。無効にすると既存のCodegenを所定の場所に残しまずが、新しいcodegenは再度有効にされるまで作成されません。
Delete Bad Code
生成された拡張スクリプトでコンパイラエラーが発生した場合、そのスクリプトは自動的に削除されます。 このオプションは常に有効にしておいてください。
Net Master & Net Master Late
シーンに何も存在しない場合、ランタイムでシングルトンが2つ作成されます。 これらのシングルトンでSimple NetObjectsおよびPackObjectsが使用するタイミングコールバックが作り出され、また全てのアクティビティの開始地点となります。
NetObject
PhotonViewを拡張子し、全てのSyncObjectsおよびPackObjects、また関連するコールバックを管理します。 このオブジェクトは、ゲームオブジェクトにある全てのISyncObjectコンポーネントの全コールバックインターフェースを、PackObject Attributeを持つコンポーネントと同様に収集して管理します。 NetObjectはNetMasterで生成したタイミングに反応し、コールバックを経由してそれらをSyncObjectsコンポーネントとPackObjectコンポーネントにパスします。 NetObjectはViewID、IsMine、PhotonViewのネットワークコールバックをいくつか使用するため、PhotonViewが必要です。
Skip When Empty: EXPERIMENTAL
NetObjectが何も送信しないようにします。心音1つさえも、です。 心音データを取り除くことで、ティックごとに3バイト節約されますが、副作用として望ましくない外挿を行うことがあります。 これは、シーンにたくさんのアイドルオブジェクトがあり、節約に値する寝起きの挙動のエッジケースのためにあります。 子同期オブジェクトにキーフレームレートを設定するようにしてください。キーフレームで強制的に送信されます。 キーフレームがゼロになっていると、キーフレームは1つも送信されません。 PUNではオブジェクトを初期化しない点にも留意ください。オブジェクトが動くまで、後から参加する人には正しい位置が見えません。
Ignore Non Controller Updates
アップデートがこのネットエンティティの現在のOwner/Controllerから発信されている場合のみ、デシリアライズします。 このオプションを外したくなるようなユースケースはあまりありません。
Resimumlate Late Arrivals
ネットオブジェクトアップデートの到着が遅すぎる場合、通常Simpleではフレームを外挿します。 これを有効化しておくと、ネットオブジェクトが遅延しているフレームへ巻き戻り、その値を適用して全ての後続フレームを最新状態に戻して再度シミュレーションすることができます。 CPUを集中的に使用しますが、ネットオブジェクトがネットワークの渋滞をよりうまく対処できるようになります。 無効にすると、遅延パケット対処用のカスタムコードが追加されない限りリライアブルなパケットでも正常に適用されなくなります。
Event Flow