SlideShare ist ein Scribd-Unternehmen logo
1 von 37
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
FUSIONの紹介
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
変更があった差分を
圧縮して送信
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
視界距離に合わせた半
径内の情報のみを転送。
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
GAME MODE
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
https://www.slideshare.net/PhotonTeamJapan/200photon-sdk
FUSION環境設定
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 Fusionに設定します。
シーン名を変更し、ビルドセッティングに追加
 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キーで操作できます。
FUSIONのコンポーネントとあれこれ
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 ConfigのSimulationのところで切り替え可能です。
結果整合性モードでのオブジェクトインタレスト
 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:ユーザーの入力をもとにオブジェクトの状態を最終
的に決定し、その状態を他のクライアントに上書きする権限。

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
 
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
 

Mehr von 聡 大久保

Mehr von 聡 大久保 (20)

Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編
 
Oculus Interaction SDK でグラブまわりの設定方法
Oculus Interaction SDK でグラブまわりの設定方法Oculus Interaction SDK でグラブまわりの設定方法
Oculus Interaction SDK でグラブまわりの設定方法
 
空間を認識する - 取り込みから表示まで -
空間を認識する - 取り込みから表示まで -空間を認識する - 取り込みから表示まで -
空間を認識する - 取り込みから表示まで -
 
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
 
Hololens2でアカウント情報の取得
Hololens2でアカウント情報の取得Hololens2でアカウント情報の取得
Hololens2でアカウント情報の取得
 
HoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとりHoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとり
 
UnityでVRアプリ(Android Cardboard)を作る -準備編-
UnityでVRアプリ(Android Cardboard)を作る -準備編-UnityでVRアプリ(Android Cardboard)を作る -準備編-
UnityでVRアプリ(Android Cardboard)を作る -準備編-
 
VRでのUI設計のヒント
VRでのUI設計のヒントVRでのUI設計のヒント
VRでのUI設計のヒント
 
ハードサーフェイスモデリング勉強会(Blender2.79b編)
ハードサーフェイスモデリング勉強会(Blender2.79b編)ハードサーフェイスモデリング勉強会(Blender2.79b編)
ハードサーフェイスモデリング勉強会(Blender2.79b編)
 
Google Tangoで 現実世界を感じてみよう
Google Tangoで現実世界を感じてみようGoogle Tangoで現実世界を感じてみよう
Google Tangoで 現実世界を感じてみよう
 
仮想マシンを仮想空間で見る Cloud roadshow
仮想マシンを仮想空間で見る Cloud roadshow仮想マシンを仮想空間で見る Cloud roadshow
仮想マシンを仮想空間で見る Cloud roadshow
 
AWSのEC2の複数インスタンスからファイルを共有する方法
AWSのEC2の複数インスタンスからファイルを共有する方法AWSのEC2の複数インスタンスからファイルを共有する方法
AWSのEC2の複数インスタンスからファイルを共有する方法
 
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加するAwsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
 
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
 
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
 
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
 
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残すAwsで構築したのだよ 01 ユーザのコンソール操作をログに残す
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
 
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
 
AWSを学ぶ上で必要となる前提知識(SSL)
AWSを学ぶ上で必要となる前提知識(SSL)AWSを学ぶ上で必要となる前提知識(SSL)
AWSを学ぶ上で必要となる前提知識(SSL)
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

Photon Fusionのはじめの一歩

Hinweis der Redaktion

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