GS2-Realtime Beta

GS2-Realtime は現在β版として提供しています。
プロダクションでの採用前にサポートケースを通じてGS2と相談してください。



GS2-Realtime はマルチプレイゲームを実現するにあたってプレイヤー間のリアルタイム通信を実現する為のサービスです。
通信には WebSocket を利用し、ギャザリングに参加しているすべてにブロードキャストされるメッセージと、特定のプレイヤーにのみ届くユニキャストメッセージを組み合わせて通信することができます。

ギャザリングのライフサイクル
GS2-Realtime では ギャザリングを作成すると サーバの IPアドレス, 待ち受けポート番号, 暗号鍵 の3つのパラメータを受け取ります。
指定された IPアドレス, 待ち受けポート に WebSocket を利用して接続すると、まずは INIT ステートになります。
この状態でサーバは Login コマンドのみ受け付けます。
Loginコマンドが受理されると、ACTIVE ステート となります。この状態になると、ギャザリングに参加しているプレイヤーにメッセージパケットを送信したり、
他プレイヤーのメッセージパケットを受け取ることが出来るようになります。
WebSocket のコネクションを切断したり、サーバから切断されると CLOSED ステート に遷移します。
ギャザリングに参加している全てのプレイヤーのステートが CLOSED ステート になった状態で1分間なにもイベントが発生しない場合 ギャザリングは破棄されます。

コマンド
メッセージパケットを送信するとき、JSON形式のテキストデータをギャザリング作成時に受け取った暗号鍵で暗号化(AES128)してBase64をかけたデータをソケットに送信することで通信します。
Realtime サーバは以下のコマンドを受け付けます。
 コマンド 説明 送信可能なステート サンプル
 Login Realtimeサーバにログインします

 パラメータ名 説明
 userId 自身のユーザID
 INIT {
  "type": "login",
  "userId": {userId}
}
 Message ギャザリングに参加しているメンバーにメッセージを送信します

 パラメータ名 説明
 message 送信するメッセージ
 dest 宛先ユーザID
"all" を指定することで、ギャザリングの全参加者にメッセージが届けられます。
 ACTIVE {
  "type": "message",
  "message": {message},
  "dest": {dest}
}

イベント
他プレイヤーがギャザリングに参加したときや、メッセージを送信してきたときにはイベントとしてメッセージパケットを受け取ります。
メッセージパケットは暗号化(AES128)されており、ギャザリング作成時に受け取った暗号鍵で復号化して利用することができます。

 イベント 説明 サンプル
 Login Loginコマンドの結果を返します

 パラメータ名 説明
 code ステータスコード
 message メッセージ
 {
  "code": {code}
  "type": "login",
  "message": {message}
}
 Information Login直後に現在のギャザリングの状態を表す情報として送信されます

 パラメータ名 説明
 code ステータスコード
 userIds 既に参加しているプレイヤーのユーザIDリスト
 {
  "code": {code}
  "type": "information",
  "userIds": [{userIds}]
}
 Join 他プレイヤーがギャザリングに参加したときに送信されます

 パラメータ名 説明
 code ステータスコード
 userId 参加したプレイヤーのユーザID
 {
  "code": {code}, 
  "type": "join",
  "userId": {userId}
}

 Leave 他プレイヤーがギャザリングから離脱したときに送信されます

 パラメータ名 説明
 code ステータスコード
 userId 参加したプレイヤーのユーザID
 {
  "code": {code}, 
  "type": "leave",
  "userId": {userId}
}
 Complete 全ての参加者が揃った時に送信されます

 パラメータ名 説明
 code ステータスコード
 {
  "code": {code}, 
  "type": "complete"
}
 Receive 他プレイヤーからメッセージを受け取った時に送信されます

 パラメータ名 説明
 srcUserId メッセージを送信したユーザID
 message メッセージ
  {
  "type": "message",
  "srcUserId": {userId},
  "message": {message}
}
 Unreached メッセージの送信に失敗したときに送信されます

 パラメータ名 説明
 code ステータスコード
 userId 送信に失敗したプレイヤーのユーザID
 timestamp 時間(unixepoch)
 message 送信に失敗したメッセージパケットのメッセージ
 dest 送信に失敗したメッセージパケットの宛先ユーザID
 {
  "code": {code}, 
  "type": "error",
  "userId": {userId},
  "timestamp": {timestamp}
  "message": {
    "type": "message",
    "message": {message},
    "dest": {dest}
  }
}

サブページ リスト


サブページ (3): APIリファレンス SDK 料金