# HG changeset patch # User riono # Date 1644167390 -32400 # Node ID 441f0e35fb71a6c775429daf326d5da76950d2fa # Parent a60e8d536a2838d9443a6e3d6d173bf8384bce36 update PUN2 diff -r a60e8d536a28 -r 441f0e35fb71 Paper/chapter/5-LibraryComparison.tex --- a/Paper/chapter/5-LibraryComparison.tex Sun Feb 06 21:27:31 2022 +0900 +++ b/Paper/chapter/5-LibraryComparison.tex Mon Feb 07 02:09:50 2022 +0900 @@ -1,8 +1,49 @@ \chapter{Christie Sharpの評価} -\section{Unityの通信ライブラリとの比較} +前章まではChristie Sharpの実装やUnity上での動作について述べた。 +本章では、Unityで使用可能な通信ライブラリであるPhoton Unity Networking2、MirrorとChristie Sharpの比較を行い、 +Unityで使用する場合のChristie Sharpの評価を行う。 + +\section{Photon Unity Networking 2} +Photon Unity Networking 2(以下PUN2)はUnityで利用可能なネットワークライブラリである。 +自動で他のClientへの接続や同期を可能とし、マッチメイキング機能なども備わっている。 + +図\ref{}はPUN2でのGame Serverまでの接続の過程を表した図である。 +PUN2ではサーバクライアント型の通信を行っており、Photon CloudというCloud Serverに接続することで通信を可能にしている。 +ClientはPhoton Cloudに接続を行うと、始めにName Serverに接続される。 +Name Serverでは、そのClientが利用可能なリージョンを提供し、最低PingのMaster Serverへの接続が自動で行われる。 +Master Serverでは、ゲーム全体における接続しているプレイヤーや、作成されているルーム情報などの監視を行っている。 +マッチメイキングや、新しいRoomの作成、参加などが可能である。 +各リージョンのMaster Serverは完全に分離しており、マッチメイキングはそれぞれのMaster Serverでのみ可能である。 +Game Serverでは、Master Serverで作成された各ルームの管理が行われおり、実際にClient同士の通信を行ってゲームプレイを可能としているのはGame Serverである。 + +% 開発面でのできること アタッチするだけとか +% 制限面 20mucみたいな 500messageとか +% ネット環境がないとlocal通信すらできない -\section{Photon network 2} +開発面においてはUnity API対応がされており、座標や回転データなどを持っているTransform、アニメーション、 +物理演算のRigidbodyの同期にはコードを書かずに用意されているScriptをGameObjectにAttatchするだけで同期可能となっている。 + +\lstinputlisting[label=src:Pun2Example, caption=PUN2の使用例]{src/Library/Pun2Example.cs} + +ソースコード\ref{src:Pun2Example}は、PUN2でサーバに接続を行いゲーム内にプレイヤーを生成する例である。 +Callbackの使用にはMonoBehaviourPunCallbacksを継承する必要があり、MonoBehaviourPunCallbacksにはUnityのMonoBehaviourを継承しているため、 +Startメソッドなどが使用可能である。 +Startメソッドでは、事前に設定したName ServerおよびMaster Serverへの接続を行っている。 +OnConnectedToMasterメソッドはMaster Serverへ接続した際に呼ばれ、Roomへ加入を試しなければ作成を行い、 +OnJoinedRoomメソッドではGameServerにあるRoomに加入後に呼ばれ、プレイヤーの生成を行っている。 +このようにPUN2では各サーバへの接続/切断時のコールバックが豊富に用意されており、柔軟に処理を記述することが可能である。 + + +PUN2の基本料金は無料であるが、使用上の注意としていくつかの制限がある。 +\begin{itemize} + \item 同時接続人数が20人以下 + \item 1Roomの秒間Message数が500以下 + \item データの転送量が60GB以下 + \item etc ... +\end{itemize} + +これらの制限を超えて利用する場合には、別途料金や有料プランに加入する必要が発生する。 \section{Mirror} diff -r a60e8d536a28 -r 441f0e35fb71 Paper/master_paper.pdf Binary file Paper/master_paper.pdf has changed diff -r a60e8d536a28 -r 441f0e35fb71 Paper/src/Library/Pun2Example.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/src/Library/Pun2Example.cs Mon Feb 07 02:09:50 2022 +0900 @@ -0,0 +1,13 @@ +public class PhotonController : MonoBehaviourPunCallbacks { + void Start() { + PhotonNetwork.ConnectUsingSettings(); + } + + public override void OnConnectedToMaster() { + PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions(), TypedLobby.Default); + } + + public override void OnJoinedRoom() { + PhotonNetwork.Instantiate("Charactor", Vector3.zero, Quaternion.identity); + } +} \ No newline at end of file diff -r a60e8d536a28 -r 441f0e35fb71 riono-master.mm --- a/riono-master.mm Sun Feb 06 21:27:31 2022 +0900 +++ b/riono-master.mm Mon Feb 07 02:09:50 2022 +0900 @@ -91,10 +91,17 @@ - + + + + + + + +