PUN Classic(PUN1とも呼ばれます)はPUNのはじめの主要バージョンです。 現在は、リファクタリングおよび機能拡張されたPUN2に切り替わっています。 新しいプロジェクトはPUN2をご利用いただき、また可能であれば既存のプロジェクトについてもPUN1からPUN2へ移行していただくよう強く推奨しています。 こちらをご参照ください: "移行情報".
PUN Cloassicは今後数か月メンテナンスされます。 重要なバグの修正や新しいUnityバージョンのサポートは行いますが、新機能の追加はPUN2のみとなります。
pun
| v1
switch to v2
Photon Steam認証
目次
アプリケーションのセットアップ
Steamは認証プロバイダとして簡単に追加でき、 追加はPhotonアプリケーションのダッシュボードから数秒で設定できます。 アプリケーションの「管理」ページに進み、「認証」セクションにスクロールダウンしてください。
新たな認証プロバイダをSteamに追加する場合、または既存の認証プロバイダを編集する場合には、以下の設定が必須です:
- apiKeySecret: SteamパブリッシャーWeb APIのキーです。Steam User Keyと混同しないよう留意してください。取得の方法はこちらを参照してください。
- appid: SteamゲームのID。Steam Directの処理後(旧 Steam Greenlight)にこのIDを取得できます。
- verifyOwnership:
true
またはfalse
の値となります:認証の際に所有権の検証を有効化するかを設定します。 これによって、ユーザーが本当にそのゲームを所有しているか(ゲームを購入し、ライブラリにそのゲームを所有しているか)を検証できます。 有効化されている場合には、この手順はユーザーのセッションチケットを認証後に実行されます。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。 - verifyVacBan:
true
またはfalse
の値となります: 認証の際にValveのAnti-Cheat (VAC)を使用し、ユーザーが禁止されたか確認を設定できます。 詳細はこちらを参照してください。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。 - verifyPubBan:
true
またはfalse
の値となります:認証の際にPublisher Banを使用し、ユーザーが禁止されたか確認を設定できます。 詳細はこちらを参照してください。 これを有効化すると、認証が遅延する可能性があります。このため、本当に必要な場合のみ有効化してください。
クライアントコード
クライアントは、セッションチケットを取得するためにValveのSteamworks APIを使用する必要があります。 このチケットは、そのクライアントが有効なSteamユーザーであることの証明です。
このページに記載された手順にしたがって、Steamworks.NETのUnityバージョンをインポートしてください。
チケットを取得
Steamworks APIを使用し、以下のコードでセッションチケットを取得してください。その後、そのチケットを16進暗号化UTF-8文字列に変換します:
// hAuthTicket should be saved so you can use it to cancel the ticket as soon as you are done with it
public string GetSteamAuthTicket(out HAuthTicket hAuthTicket)
{
byte[] ticketByteArray = new byte[1024];
uint ticketSize;
hAuthTicket = SteamUser.GetAuthSessionTicket(ticketByteArray, ticketByteArray.Length, out ticketSize);
System.Array.Resize(ref ticketByteArray, (int)ticketSize);
StringBuilder sb = new StringBuilder();
for(int i=0; i < ticketSize; i++)
{
sb.AppendFormat("{0:x2}", ticketByteArray[i]);
}
return sb.ToString();
}
チケットを送信
クライアントはユーザーのセッションチケット(16進暗号化UTF-8文字列に変換後)をクエリ文字列キー「チケット」の値として送信する必要があります。
PhotonNetwork.AuthValues = new AuthenticationValues();
PhotonNetwork.AuthValues.UserId = SteamUser.GetSteamID().ToString();
PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Steam;
PhotonNetwork.AuthValues.AddAuthParameter("ticket", SteamAuthSessionTicket);
// do not set AuthValues.Token or authentication will fail
// connect
チケットをキャンセル
認証完了後に、チケットをキャンセルまたは無効化することを推奨します。
PUNの場合には最初のコールバックがトリガーされ、チケットは OnConnectedToPhoton
でキャンセルできます:
private void OnConnectedToPhoton()
{
SteamUser.CancelAuthTicket(hAuthTicket);
}