Help us understand the problem. What is going on with this article?

Photon(PUN2)でサーバーに接続してルームを作成する際のメモ

概要

PUN2を使ってサーバーに接続してルームを作成する際に、どのようなコードを書いていけばいいのか迷ってしまった時の為の備忘録的なメモです。

環境

  • PUN2
  • Unity 2018.3以降

実装

MasterClientに同期

PhotonNetwork.AutomaticallySyncScene = true;

このように設定すると、MasterClient以外のClientがシーンの切り替えを、MasterClientのシーンの切り替えに同期して行うことができます。

Awake()メソッド内などに書くと良いと思います

サーバーに接続する

1.PhotonServerSettingsで設定を行う

Assets/Photon/PhotonUnityNetworking/Resources/にあるPhotonServerSettingsで設定を行います。

とりあえずApp VersionとFixed Regionを設定しておけば大丈夫だと思います。

App Version : 1.0
Fixed Region : jp

のように設定します。

2.ゲームのバージョンを設定する

PhotonNetwork.GameVersion = "1.0";

バージョンの異なるClient同士はマッチングすることができないので注意しましょう。

3.次にPhotonのサーバーに接続する

サーバーに接続したい場所で

PhotonNetwork.ConnectUsingSettings();

を実行すればサーバーに接続することができます。

ルームが既に作られている場合はルームに入る

public override void OnConnectedToMaster()
{
    PhotonNetwork.JoinRandomRoom();         
}

サーバーに接続した際に呼ばれるコールバックであるOnConnectedToMaster()メソッド内に処理を記述します。

ここではランダムなルームに入る場合について考えます。

ランダムなルームに入る処理はPhotonNetwork.JoinRandomRoom()です。
なのでこれをOnConnectedToMaster()内に記述します。

ルームが無い場合はルームを作る

public override void OnJoinRandomFailed(short returnCode, string message)
{
    PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = 4});
}

もしルームが1つも作られていない状態で上記のようにルームに入ろうとすると失敗します。

この時に呼ばれるコールバックがOnJoinRandomFailed()です。

なので、このOnJoinRandomFailed()メソッド内にルームを作る処理を書きます。

ルームを作る処理はPhotonNetwork.CreateRoom()です。

PhotonNetwork.CreateRoom()の第一引数にはルーム名を記述できますが、ルーム名を特に設定したくない場合はnullと書きます。

PhotonNetwork.CreateRoom()の第二引数にはRoomOptionsクラスのインスタンスを代入します。

RoomOptionsクラスは様々なプロパティを持ち、これらを色々と調整することによって、作成する部屋の設定を決めることができます。

ここでは部屋の最大の人数が4人になるようにMaxPlayers = 4設定しています。

他の設定をしたい場合は次のページをご覧ください。
Photon Unity Networking 2: RoomOptions Class Reference

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした