スタートガイド
はじめに、すでに開発コンソール上で開発者アカウントを取得し、そのアカウント上でアプリを作成していることを確かめてください。事前にこの作業が必要なのは、ネットワーキング SDK はアプリケーションキー(App Key)を利用するためです。
一般的な流れ
ゲームサーバに接続するためには、まず接続し、ログインし、ロビーサーバへのアクセストークンを取得するリクエストを行う必要があります。マッチメーカーはマッチングを行い、ゲームサーバのIPアドレスとポートをリクエストされたクライアントに送ります。この情報を元に、クライアントはゲームサーバへの接続を行います。その後、メッセージの送受信を開始し、マルチプレイヤーを実現することができます。
一見複雑に見えますが、ほとんどの部分を SDK が担当してくれます。
using PretiaArCloud.Networking;
using UnityEngine;
public class NetworkWrapper : MonoBehaviour
{
private async void Start()
{
// NetworkManagerComponent is provided by the SDK.
NetworkManager networkManager = NetworkManager.Instance;
Matchmaker matchmaker = Matchmaker.Instance;
// NetworkManager.ConnectAsync will establish a TCP connection to the Lobby Server.
bool networkInitialized = await networkManager.ConnectAsync();
if (!networkInitialized) throw new System.Exception();
// NetworkManager.LoginAsync will make a login request to the Lobby Server.
// Keep in mind that this will be a different account than what you've used to login to the developer portal.
var guest = "guestName";
(NetworkStatusCode loginResult, byte[] token, string displayName) = await networkManager.GuestLoginAsync(guest);
// Check the login result, and request a match if succeeded.
if (loginResult == NetworkStatusCode.Success)
{
var sessionName = "session-name";
var labels = new Dictionary<string, string>();
labels.Add("my-key", "my-value");
// Create a new session
var (sessionInfo, ipEndPoint) = Matchmaker.Instance.CreateSessionAsync(token, sessionName, priv: false, labels);
// Connect to the game session
// IGameSession is the main interface that will be used for sending/receiving messages.
IGameSession gameSession = await networkManager.CreateGameSessionAsync(ipEndPoint, token);
// IGameSession.ConnectSessionAsync will send a Connect Session Protocol Request to the Game Server.
// This is required before you can start sending/receiving messages.
// Take note that this is the IGameSession instance making a connection, not the NetworkManager.
// If you need to get this instance from another script, you can access it by:
// var gameSession = await NetworkManager.Instance.GetLatestSessionAsync();
gameSession.ConnectSessionAsync();
// Wait until the GameSession is connected.
bool gameSessionConnected = await gameSession.WaitForConnectionAsync();
// You can now start sending messages!
}
}
}
Scene Setup
Project Settings
NetworkSettings は、SDK で用いるデータを設定するために用いられる ScriptableObject サブクラスです。プロジェクトタブを右クリックすることで新しい Setting を作成し、 Create > Pretia ArCloud > Network > Network Settings を選択してください。
2.2.2. NetworkManager Prefab
NetworkManager プレハブが Project タブにあるので、シーンにドラッグ&ドロップしてください。
Package > Pretia SDK > Prefabs > NetworkManager
注記: NetworkManager プレハブは Singleton であり、シーンを切り替えても存続します。