GameLiftとは

https://aws.amazon.com/jp/gamelift/

手順

# コード

リアルタイムサーバースクリプトコードについて

https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/realtime-script-objects.html

末尾のエクスポートで、各操作に対応する関数を関連付け

exports.ssExports = {
    init: init,
    onProcessStarted: onProcessStarted,
    onStartGameSession: onStartGameSession,
    onProcessTerminate: onProcessTerminate,
    onPlayerConnect: onPlayerConnect,
    onPlayerAccepted: onPlayerAccepted,
    onPlayerDisconnect: onPlayerDisconnect,
    onPlayerJoinGroup: onPlayerJoinGroup,
    onPlayerLeaveGroup: onPlayerLeaveGroup,
    onSendToPlayer: onSendToPlayer,
    onSendToGroup: onSendToGroup,
    onMessage: onMessage,
    onHealthCheck: onHealthCheck
};

定義された関数

init(rtsession)
# 初期化時に実行され、リアルタイムサーバーへのインターフェース(rtsession)を受け取る


onStartGameSession(session)
# 新しいゲームセッションが開始されてゲームセッションオブジェクトを渡された時実行
# 関数内で tickLoop(); を呼び出し監視することで、アクティブプレイヤーが0人の時に離脱する設定が可能


onPlayerAccepted(player) 
onPlayerDisconnect(peerId)
# プレイヤーが接続し、ルームに入った時に呼び出し(その逆も)


onMessage(gameMessage)
# メッセージを受信した時

# 大抵はメッセージの種類で場合分する
switch (gameMessage.opCode) {
        case SendTest1: {
            // do operation 1 with gameMessage.payload for example sendToGroup
            const outMessage = session.newTextGameMessage(RecieveTest1, session.getServerId(), gameMessage.payload);
            session.sendGroupMessage(outMessage, -1);
            break;
        }
        case SendTest2: {
            // do operation 1 with gameMessage.payload for example sendToGroup
            const outMessage = session.newTextGameMessage(RecieveTest2, session.getServerId(), gameMessage.payload);
            session.sendGroupMessage(outMessage, -1);
            break;
        }
    }
}


rtSession.sendGroupMessage(gameMessage, targetGroup)
rtSession.sendReliableMessage(gameMessage, targetGroup)
# TCP or UDPで対象のグループにメッセージを送信

リアルタイムクライアントコードについて

https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/realtime-sdk-csharp-ref-actions.html

ビルドエラーについて

Microsoft.CodeAnalysis を参照する AWSSDK.GameLift.CodeAnalysis をビルド時に除去することでビルド成功した(動くんだろうか…)

クライアントでやること

  • 部屋の作成 → 部屋に参加
  • 部屋の検索 → 部屋に参加

参考

1.GameLift RealTimeServerで遊んでみよう for Unity(AWS設定編) - Qiita https://qiita.com/nimitsu/items/61cf2b177c10b59ebd3f