狠狠撸

狠狠撸Share a Scribd company logo
PHOTON FUSION
HALLO WORLD 2022.04.30
FUSION SDKのダウンロード
? 要件
? Unity 2020.3以降
? アセットシリアライゼーションを、テキストに設定
Project Settings>Editor>Asset Serializationと移動し、モードをForce textに設定
? Mono.Cecil (com.unity.nuget.mono-cecilパッケージ)
? ダウンロード
https://doc.photonengine.com/ja-jp/fusion/current/getting-started/sdk-download
使用バージョン
? Unity 2021.3.1f1
? Mono-Cecli 1.10.2
? Fusion SDK 1.0.0 F Build 439
贵鲍厂滨翱狈の绍介
/PhotonTeamJapan/200photon-sdk
/PhotonTeamJapan/200photon-sdk
変更があった差分を
圧縮して送信
/PhotonTeamJapan/200photon-sdk
視界距離に合わせた半
径内の情報のみを転送。
/PhotonTeamJapan/200photon-sdk
GAME MODE
/PhotonTeamJapan/200photon-sdk
/PhotonTeamJapan/200photon-sdk
贵鲍厂滨翱狈环境设定
PHOTONユーザーを作成
? https://www.photonengine.com/ja/を開き、ユーザーを作成。
PHOTONクラウドアプリケーションの作成
? 作成したPhotonユーザーでログインし、ダッシュボードを開きます。
? 新しくアプリを作成するを選択します。Photonの種別をFusionに、アプリ名を入力し作成するを押下し
ます。
アプリケーションIDをメモ
? 作成したアプリケーションのアプリケーションIDのところをクリックし、後ほど、Unityで設定するため
アプリケーションIDをメモします。PhotonのWebでの作業は以上です。
プロジェクト作成
? Unityを起動し、プロジェクトを作成します。プロジェクト名は、Fusionとしました。
MONO CECILのインポート
? ExplolerでPackagesフォルダのmanifest.jsonを開きます。
? Dependenciesに“com.unity.nuget.mono-cecil”: “1.10.2”,を追記します。Unityに戻るとパッケージが自動でイ
ンストールされます。パッケージマネージャを開くと、Mono-Cecilが追加されています。
FUSIONパッケージのインポート
? ダウンロードしたFusionのパッケージをインポート、今回使ったのはPhoton-Fusion-1.0.0-F-
439.unitypackageで全部選択してインストールします。
いろいろ追加されてる
? メニューや、ヒエラルキーのコンテキストメニューなどにFusionが追加されています。
設定
? Realtime Settings
アプリケーションIDの設定
? 先ほどメモしておいたアプリケーションIDをApp Id 贵耻蝉颈辞苍に设定します。
シーン名を変更し、ビルドセッティングに追加
? FileメニューからSave asを選択肢、FirstFusionというシーン名で保存します。
BASIC SCENEをセットアップ
? ヒエラルキーで右クリックして、コンテキストメニューからFusion、Setup Basic Fusion Sceneを選択します。
(ビルドセッティングにもシーンが自動で追加されます。)
実行
? 2つのプログラムを起動し接続確認を行いま
す。ひとつはビルドしたEXE、もうひとつは
Unity Editorで実行します。
? メニューFileからBuild Settingsを選択し、
Buildボタンを押して、プロジェクトをビル
ドします。
EXEの実行
? Buildしたexeを起動します。メニューが表示された状態で起動します。
EDITORの実行
? プレイボタンを押下します。メニューが表示された状態で起動します。
接続① HOST GAME MODE
? EditorとEXEで、実行された状態で次の組み合わせで接続確認を行います。
? ひとつをHostで起動、ひとつをClientで起動します。2人のプレイヤーがスポーンし、WASDキーで操作
できます。
接続② HOST GAME MODE
? EditorとEXEで、実行された状態で次の組み合わせで接続確認を行います。
? 両方ともStart Auto Host or Clientで起動します。 2人のプレイヤーがスポーンし、WASDキーで操作でき
ます。
接続③ SERVER GAME MODE
? EditorとEXEで、実行された状態で次の組み合わせで接続確認を行います。
? ひとつをServerで起動、ひとつをClientで起動します。 1人のプレイヤーがスポーンし、WASDキーで操
作できます。Server役では、プレイヤー機能はなくなりClientの調停役として動きます。
接続④ SHARED GAME MODE
? EditorとEXEで、実行された状態で次の組み合わせで接続確認を行います。
? 両方ともStart Shared Clientで起動します。 2人のプレイヤーがスポーンし、WASDキーで操作できます。
贵鲍厂滨翱狈のコンポーネントとあれこれ
NETWORK RUNNER/NETWORK EVENTS/PLAYER SPAWNER
? Network Runnerが中核のコンポーネン
ト。
? Network Eventsで呼び出すメソッドを指
定することでイベントに対応した処理
を付け加えることができます。
自前で実装する場合は、
INetworkRunnerCallbacksを継承して、
処理を実装します。Network Runnerと
同じGameObjectに張り付けると、
Runnerが見つけてくれます。
? Player Spawnerでスポーンさせるプレイ
ヤーのプレハブの指定ができます。
NETWORK START
? 接続の開始を制御する。Start Modeで
UIか自動で接続するかを分岐させてい
る。
NETWORK OBJECT
? NetworkObjectを、Network上で共有さ
れるGameObjectにつける。(PUNでの
PhotonViewに変わるもの)
? NetworkRunnerのSpawn()を、
NetworkObjectプレハブをパラメータと
して呼び出します。
? Network Project Configに登録しておく
必要がある。(次ページ参照)
NETWORK PROJECT CONFIG
? メニューFusionからNetwork Project Configを選択する。
? Network Project Configに利用するPrefabを登録する必要がある。 通常
Fusionツールセットが自動的にプレハブを検出して登録しますが、
Rebuild Object Tableを押すことで、手動で検出することもできます。
デルタスナップショット、結果整合性モードの切り替え
? Network Project 颁辞苍蹿颈驳の厂颈尘耻濒补迟颈辞苍のところで切り替え可能です。
結果整合性モードでのオブジェクトインタレスト
? Network ObjectのObject Interestの設定で変更することができま
す。
1. Area Of Interest
オブジェクトと重なるAOI(関心領域)をもつユーザーのみ更新を受
け取る。
2. All Players
全てのユーザーが更新を受け取る。
3. Explict Players
明示的にフラグがたてられたユーザーのみが更新を受け取る。
PUNとのクラスとプロパティの対応
PUN Fusion 説明
PhotonNetwork NetworkRunner Fusionのコアとなるコンポーネント。
PhotonView NetworkObject
(SimulationBehaviour/NetworkBehaviour)
NetworkObjectはGameObjectにネットワークIDを割り当て、ネット
ワーク上で共有できるようにします。すべてのプレイヤーが見るこ
とができ、シーンの動的な部分であるGameObjectには、
NetworkObjectスクリプトを設定します。
PhotonRigidbodyView NetworkRigidbody RigidBodyの同期を行うコンポーネント。
PhotonTransformView NetworkTransform Transformの同期を行うコンポーネント。
PhotonView.IsMine NetworkObject.HasStateAuthority
NetworkObject.HasInputAuthority
InputAuthority:そのオブジェクトに対するユーザーの入力を受け付
ける権限。
StateAuthority:ユーザーの入力をもとにオブジェクトの状態を最終
的に決定し、その状態を他のクライアントに上書きする権限。

More Related Content

Photon Fusionのはじめの一歩

Editor's Notes

  • #9: 専用サーバー(Dedicated Server)、クライアントホスト型(Client Hosted)、共有モード(Shared Mode)に対応しています。 共有モード(Shared Mode)はPUNと似ており、ネットワークオブジェクトの権限がプレイヤーに分配されます。シーンオブジェクトは自動的に1人のプレイヤーにコントロールされるようになっています。
  • #32: SimulationObjectまたはNetworkObjectから継承されるあらゆるクラスはRunnerおよびオブジェクトメンバーへアクセス可能 PUNでのスクリプトは通常photonView.IsMineを確認してクライアントがオブジェクトを所有しているかのみですが、FusionではObject.HasStateAuthority?と?Object.HasInputAuthorityの状態を個別で管理します。 (PUNと同じにするのであれば、Shared Modeで、IsMineをObject.HasStateAuthorityに置き換える。)
  • #34: https://doc.photonengine.com/ja-jp/fusion/current/manual/network-object
  • #35: Fusionツールセットが自動的にプレハブを検出して登録しますが、NetworkProjectConfigを選択して、Unity InspectorのRebuild Object Tableを押すことで、手動で検出することもできます。
  • #38: 狈别迟飞辞谤办翱产箩别肠迟は骋补尘别翱产箩别肠迟にネットワーク滨顿を割り当て、ネットワーク上で共有できるようにします。すべてのプレイヤーが见ることができ、シーンの动的な部分である骋补尘别翱产箩别肠迟には、狈别迟飞辞谤办翱产箩别肠迟スクリプトを设定します。