SlideShare 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
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:ユーザーの入力をもとにオブジェクトの状態を最終
的に決定し、その状態を他のクライアントに上書きする権限。

More Related Content

PDF
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
PDF
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
PDF
200人での対戦も可能!?Photon 新SDKについて
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
PDF
Azure kinect DKハンズオン
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
200人での対戦も可能!?Photon 新SDKについて
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
Azure kinect DKハンズオン

What's hot (20)

PDF
Unityでオンラインゲーム作った話
PPTX
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
PDF
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
PDF
Pythonによる黒魔術入門
PDF
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
PPTX
DockerコンテナでGitを使う
PDF
ゲームサーバ開発現場の考え方
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
PPTX
Photonのサービス選択の勘どころ
PDF
Hubsを何度も破壊して得た知見、話します
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PPTX
ゲームエンジニアのためのデータベース設計
PDF
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
PPTX
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
PDF
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
PDF
Unityでパフォーマンスの良いUIを作る為のTips
Unityでオンラインゲーム作った話
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
Pythonによる黒魔術入門
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
DockerコンテナでGitを使う
ゲームサーバ開発現場の考え方
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
Photonのサービス選択の勘どころ
Hubsを何度も破壊して得た知見、話します
新入社員のための大規模ゲーム開発入門 サーバサイド編
ゲームエンジニアのためのデータベース設計
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
ネットワーク ゲームにおけるTCPとUDPの使い分け
【Unite Tokyo 2019】Understanding C# Struct All Things
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
Unityでパフォーマンスの良いUIを作る為のTips
Ad

Similar to Photon Fusionのはじめの一歩 (20)

PPTX
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編・前編】
PPTX
Unityで Photonを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編】
PDF
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
PDF
ARLT_06_Photon使ってみた
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
PDF
Cedec2013 photon network engine
PDF
Unityティーチャートレーニングデイ -認定アソシエイト編-
PPTX
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
PPTX
PhotonCloudで一ヶ月ゲーム作った話
PPTX
【Unite 2017 Tokyo】マルチプレイゲームのグローバル展開事例(BNE様)と完全同期を実現するPhoton TrueSync のご紹介
PDF
Photon勉強会(クライアントサイド)2015/8/4 発表資料
PDF
【Unity道場 4月 ~アーティストの為のPBR再入門~】Unity Connected Gamesってなに?
PDF
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
PDF
UnityとBlenderハンズオン第8章
PDF
Unityと.NET
PDF
Unity&unreal engineハンズオン資料 unity
PPTX
GTMF 2017:Photonの実用ケーススタディご紹介とPlayCanvas新機能 GMOクラウド株式会社
PPTX
Unity ゲーム開発
PPTX
HoloLensでPhotonを使ってみる(とりあえず動くか編)
PDF
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編・前編】
Unityで Photonを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編】
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
ARLT_06_Photon使ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Cedec2013 photon network engine
Unityティーチャートレーニングデイ -認定アソシエイト編-
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
PhotonCloudで一ヶ月ゲーム作った話
【Unite 2017 Tokyo】マルチプレイゲームのグローバル展開事例(BNE様)と完全同期を実現するPhoton TrueSync のご紹介
Photon勉強会(クライアントサイド)2015/8/4 発表資料
【Unity道場 4月 ~アーティストの為のPBR再入門~】Unity Connected Gamesってなに?
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
UnityとBlenderハンズオン第8章
Unityと.NET
Unity&unreal engineハンズオン資料 unity
GTMF 2017:Photonの実用ケーススタディご紹介とPlayCanvas新機能 GMOクラウド株式会社
Unity ゲーム開発
HoloLensでPhotonを使ってみる(とりあえず動くか編)
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Ad

More from 聡 大久保 (20)

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

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: NetworkObjectはGameObjectにネットワークIDを割り当て、ネットワーク上で共有できるようにします。すべてのプレイヤーが見ることができ、シーンの動的な部分であるGameObjectには、NetworkObjectスクリプトを設定します。