目次

Amazon GameLift Servers v2.0 完全ガイド 2026

概要

Amazon GameLift Servers は、マルチプレイヤーゲームサーバーのデプロイ・スケーリング・マッチメイキングを統合管理するゲーム専用フルスタックサービスです。EC2・コンテナ・Anywhere(オンプレミス・他クラウド)で実行するゲームサーバーを、セッション管理・フリートオートスケール・FlexMatch マッチメイキング・スポットインスタンス活用により、低レイテンシで大規模マルチプレイヤー体験を実現します。2024-2026年の拡張により、Spot 統合、スケールトゥーゼロ、オンデマンド価格 9% 削減、グローバルマルチリージョン対応を実装。

解決する課題

ゲームサーバー基盤の複雑性排除

  • EC2 でゲームサーバーを自前管理する場合、セッション管理・プレイヤー接続追跡・フリートスケーリング・プロセス再起動の実装が必須だが、GameLift は全てマネージド化

地理的遅延の最小化

  • FlexMatch のレイテンシベースマッチングにより、プレイヤーが最も近いサーバーロケーションに自動配置されて 50ms 以下の低遅延を実現

動的スケーリング対応

  • アクティブゲームセッション数に基づいてフリート容量を自動調整して、オンデマンド課金で無駄を排除

スポット活用による大幅コスト削減

  • スポットインスタンスで 70-90% の実行コスト削減、セッション終了時は別インスタンスに自動移行

アーキテクチャ全体

ゲームクライアント層:
    PC / Console (PlayStation/Xbox) / Mobile (iOS/Android)
    ├─ マッチメイキングリクエスト (プレイヤーメタデータ: スキル・レート・地域)
    └─ GameLift バックエンド API

GameLift フロントエンド:
    ┌────────────────────────────────────────────────────────┐
    │  FlexMatch Matchmaker                                  │
    │  ├─ Rule Engine (スキル等化・チーム構成・地理最適化)  │
    │  ├─ Ticket Queue (検索キューイング)                  │
    │  ├─ Expansion Rules (タイムアウト時に条件緩和)       │
    │  └─ Backfill Mode (セッション途中の欠員補充)        │
    └────────────────────────────────────────────────────────┘

GameLift 管理平面:
    ┌────────────────────────────────────────────────────────┐
    │  Fleet Management                                      │
    │  ├─ Fleet Types: EC2 / CONTAINER / ANYWHERE           │
    │  ├─ Locations: Multi-region (東京・シンガポール・米国西)│
    │  ├─ Auto Scaling (Target: ActiveGameSessions)        │
    │  ├─ Health Check (Game Server SDK ハートビート)      │
    │  └─ Session Placement (ベストフィット配置アルゴ)     │
    └────────────────────────────────────────────────────────┘

ゲームサーバー実行層:
    ┌────────────────────────────────────────────────────────┐
    │  Game Server Processes (EC2 Instance 上で複数プロセス) │
    │  ├─ Instance: c6i.xlarge x 10 (フリート規模)        │
    │  ├─ Process 1: Game Session 1-10 (最大プレイヤー数)  │
    │  ├─ Process 2: Game Session 11-20                    │
    │  ├─ Process 3: Game Session 21-30                    │
    │  └─ Process N: Game Session N                        │
    │                                                       │
    │  各プロセスの責務:                                    │
    │  ├─ OnGameSessionCreated → ゲームロジック初期化       │
    │  ├─ OnUpdateGameSession → リモートコマンド処理        │
    │  ├─ Health Check Callback → 健全性報告                │
    │  └─ OnProcessTerminate → クリーンアップ              │
    └────────────────────────────────────────────────────────┘

ネットワーク:
    Game Server Port: UDP 7777-7788, TCP 7777-7780
    CloudFront (optional): CDN 経由のリーダーボード・メタデータ配信

コアコンセプト詳細

1. Fleet(フリート)

フリートは、同一設定のゲームサーバープロセスを実行する EC2 インスタンスグループ。

# Fleet タイプの選択

# EC2 Fleet (推奨: 既存ゲームサーバーバイナリ対応)
aws gamelift create-fleet \
  --fleet-type ON_DEMAND \
  --ec2-instance-type c6i.xlarge \
  --locations '{"Location": "ap-northeast-1"}' \
  --runtime-configuration '{
    "ServerProcesses": [{
      "LaunchPath": "/local/game/server",
      "Parameters": "-port 7777",
      "ConcurrentExecutions": 5
    }],
    "MaxConcurrentGameSessionActivations": 10,
    "GameSessionActivationTimeoutSeconds": 120
  }'

# CONTAINER Fleet (Docker コンテナ: ECS オーケストレーション)
aws gamelift create-fleet \
  --fleet-type ON_DEMAND \
  --compute-type CONTAINER \
  --container-group-definition-arn arn:aws:ec2:...
  # → GameLift が ECS タスク管理を自動化

# ANYWHERE Fleet (オンプレミス・他クラウド: 固定コスト課金)
aws gamelift create-fleet \
  --fleet-type ON_DEMAND \
  --compute-type ANYWHERE \
  --anywhere-configuration '{"Cost": 0}'
  # → GameLift Anywhere Agent をオンプレミスで実行

2. Game Session(ゲームセッション)

1つのゲームマッチ = 1 Game Session。複数プレイヤーが同時参加する実行単位。

import boto3

gamelift = boto3.client('gamelift', region_name='ap-northeast-1')

# セッション作成(マッチメイキング完了後にバックエンドで実行)
response = gamelift.create_game_session(
    FleetId='fleet-xxxxx',
    MaximumPlayerSessionCount=10,
    Name='Match-2026-01-15-001',
    GameProperties=[
        {'Key': 'GameMode', 'Value': 'TDM'},
        {'Key': 'MapName', 'Value': 'Urban_Outpost'},
        {'Key': 'Difficulty', 'Value': 'Hard'}
    ]
)

session = response['GameSession']
session_id = session['GameSessionId']

# プレイヤーセッション作成(各クライアントに接続URL+ポート情報を返す)
player_session = gamelift.create_player_session(
    GameSessionId=session_id,
    PlayerId='player-12345',
    PlayerData=json.dumps({'Rank': 2500, 'Region': 'Tokyo'})
)

# クライアントに返す情報
player_session_id = player_session['PlayerSession']['PlayerSessionId']
ip_address = session['IpAddress']
port = session['Port']

# クライアントに通知
notify_client({
    'server_ip': ip_address,
    'server_port': port,
    'player_session_id': player_session_id
})

# セッション終了
gamelift.terminate_game_session(GameSessionId=session_id)

3. FlexMatch マッチメイキング

スキル・ELO レート・地理的位置・チーム構成を考慮した自動マッチング。

{
  "name": "RankedDuelMatchmaking",
  "ruleLanguageVersion": "1.0",
  "playerAttributes": [
    {
      "name": "skill_rating",
      "type": "number",
      "default": 1500
    },
    {
      "name": "country",
      "type": "string",
      "default": "US"
    }
  ],
  "teams": [
    {
      "name": "Team_A",
      "minPlayers": 1,
      "maxPlayers": 1,
      "quantity": 1
    },
    {
      "name": "Team_B",
      "minPlayers": 1,
      "maxPlayers": 1,
      "quantity": 1
    }
  ],
  "rules": [
    {
      "name": "BalancedTeams",
      "type": "comparison",
      "measurements": [
        "avg(teams[*].players.attributes[skill_rating])"
      ],
      "operation": "="
    },
    {
      "name": "SkillProximity",
      "type": "distanceRule",
      "measurements": [
        "avg(teams[*].players.attributes[skill_rating])"
      ],
      "maxDistance": 300
    },
    {
      "name": "RegionMatch",
      "type": "comparison",
      "measurements": [
        "count(teams[Team_A].players.attributes[country])",
        "count(teams[Team_B].players.attributes[country])"
      ],
      "operation": "="
    }
  ],
  "expansions": [
    {
      "target": "rules[SkillProximity].maxDistance",
      "steps": [
        {"waitTimeSeconds": 10, "value": 500},
        {"waitTimeSeconds": 20, "value": 1000},
        {"waitTimeSeconds": 30, "value": 5000}
      ]
    }
  ]
}

4. Game Server SDK 統合

ゲームサーバープロセスは GameLift Agent と通信してセッション管理。

// Unreal Engine 4/5 での統合例

#include "GameLiftServerSDK.h"

void FGameServer::Initialize()
{
    // SDK 初期化(AWS IAM ロール自動使用)
    Aws::GameLift::Server::InitSDK();

    // コールバック登録
    Aws::GameLift::Server::ProcessParameters parameters(
        std::bind(&FGameServer::OnGameSessionStart, this, std::placeholders::_1),
        std::bind(&FGameServer::OnGameSessionUpdate, this, std::placeholders::_1),
        std::bind(&FGameServer::OnProcessTerminate, this),
        std::bind(&FGameServer::OnHealthCheck, this),
        7777,  // Game Server port
        {}
    );

    // GameLift に準備完了を報告
    Aws::GameLift::Server::ProcessReady(parameters);
}

void FGameServer::OnGameSessionStart(
    Aws::GameLift::Server::Model::GameSession gameSession)
{
    // マッチメイキング完了 → セッション開始
    std::string sessionId = gameSession.GetGameSessionId();
    int maxPlayers = gameSession.GetMaximumPlayerSessionCount();

    // ゲームロジック初期化
    InitializeGameMatch(sessionId, maxPlayers);

    // セッションをアクティベート(プレイヤー接続受け入れ開始)
    Aws::GameLift::Server::ActivateGameSession();
}

void FGameServer::OnGameSessionUpdate(
    Aws::GameLift::Server::Model::UpdateGameSession updateSession)
{
    // リモートコマンド処理(例: マップ変更・パラメータ更新)
    auto reason = updateSession.GetReason();
    if (reason == "MATCHMAKING_DATA_UPDATED") {
        // マッチメイキング情報の更新(例: プレイヤー追加)
        RefreshPlayerData(updateSession.GetGameSessionData());
    }
}

bool FGameServer::OnHealthCheck()
{
    // GameLift エージェントの定期ヘルスチェック(15秒ごと)
    // ゲームサーバーが正常に動作しているか報告
    return (FPlatformTime::Seconds() - lastUpdateTime) < 30.0f;
}

void FGameServer::OnProcessTerminate()
{
    // Fleet スケールダウン時の終了通知(5分間の Graceful Shutdown)
    // セッション終了・プレイヤー切断・ネットワーククローズ
    ShutdownAllSessions();
    DisconnectAllPlayers();
    Aws::GameLift::Server::ProcessEnding();
    exit(0);
}

void FGameServer::ValidatePlayerSession(const FString& PlayerSessionId)
{
    // クライアント接続時にプレイヤーセッション検証
    auto outcome = Aws::GameLift::Server::AcceptPlayerSession(
        std::string(TCHAR_TO_UTF8(*PlayerSessionId)));

    if (!outcome.IsSuccess()) {
        // 不正なセッション ID → 接続拒否
        DisconnectPlayer(PlayerSessionId);
    }
}

フリートのオートスケーリング設定

import boto3

gamelift = boto3.client('gamelift', region_name='ap-northeast-1')

# ターゲットトラッキングスケーリング(推奨: CloudWatch メトリクス不要)
gamelift.put_scaling_policy(
    FleetId='fleet-xxxxx',
    Name='scale-by-active-sessions',
    PolicyType='TargetTrackingScaling',
    TargetConfiguration={
        'TargetValue': 70.0  # アクティブセッション 70% 目標
    },
    # Scaling metrics options
    ComparisonOperator='GreaterThanOrEqualToThreshold',
    EvaluationPeriods=2,
    MetricAggregationType='Average'
)

# ルールベーススケーリング(手動でより細かく制御)
gamelift.put_scaling_policy(
    FleetId='fleet-xxxxx',
    Name='scale-up-fast',
    PolicyType='RuleBased',
    MetricName='ActiveGameSessions',
    ComparisonOperator='GreaterThanThreshold',
    Threshold=500,
    ScalingAdjustmentType='PercentChangeInCapacity',
    ScalingAdjustment=30,  # 30% 増加
    EvaluationPeriods=1,
    CooldownMinutes=5
)

# スケールトゥーゼロ設定(2024 年以降: 完全にアイドル時に EC2 削減)
gamelift.put_scaling_policy(
    FleetId='fleet-xxxxx',
    Name='scale-to-zero-idle',
    PolicyType='RuleBased',
    MetricName='ActiveGameSessions',
    ComparisonOperator='LessThanOrEqualToThreshold',
    Threshold=0,
    ScalingAdjustmentType='ExactCapacity',
    ScalingAdjustment=0,  # EC2 インスタンス数: 0
    EvaluationPeriods=2,
    CooldownMinutes=300  # 5 時間待機後にスケール
)

# リザベーション割引(年単位で 30-50% 割引)
ec2_fleet = ec2.Resource('ec2', region_name='ap-northeast-1')
reserved_instances = ec2_fleet.meta.client.describe_reserved_instances(
    Filters=[
        {'Name': 'instance-type', 'Values': ['c6i.xlarge']},
        {'Name': 'scope', 'Values': ['Region']}
    ]
)

Spot インスタンス統合

Spot インスタンス活用で 70-90% のコスト削減(セッション中断時は自動フェイルオーバー)。

# Spot Fleet の作成
aws gamelift create-fleet \
  --name production-spot-fleet \
  --ec2-instance-type c6i.xlarge \
  --fleet-type SPOT \
  --locations '[{"Location": "ap-northeast-1"}]' \
  --spot-price-strategy CAPACITY_OPTIMIZED \
  --capacity-limiting-metric ActiveGameSessions \
  --capacity-target-value 100

# Spot 中断時の自動リーバランス設定
aws gamelift put-scaling-policy \
  --fleet-id fleet-spot-xxxxx \
  --name spot-interruption-handler \
  --policy-type RuleBased \
  --metric-name AvailablePlayerSessions \
  --comparison-operator LessThanThreshold \
  --threshold 50 \
  --scaling-adjustment 50 \
  --scaling-adjustment-type PercentChangeInCapacity

# Spot インスタンス割り当て率の監視
aws cloudwatch get-metric-statistics \
  --namespace AWS/GameLift \
  --metric-name SpotRequestsFulfilled \
  --dimensions Name=FleetId,Value=fleet-xxxxx \
  --start-time 2026-01-01T00:00:00Z \
  --end-time 2026-01-02T00:00:00Z \
  --period 3600 \
  --statistics Sum

GameLift Anywhere(オンプレミス対応)

自社データセンター・他クラウド(Azure・GCP)でゲームサーバーを実行しながら GameLift の管理機能を活用。

# オンプレミスの GameLift Agent をインストール(Linux/Windows)
curl https://releases.game-server-hosting.aws/amazon-gamelift-agent/releases/latest/amazon-gamelift-agent.tgz

# Agent 設定(認証情報)
cat > /etc/gamelift/agent.yaml << EOF
Credentials:
  RoleArn: arn:aws:iam::123456789012:role/GameLiftAnywhereRole
  AssumeRoleSessionDuration: 3600
ComputeName: onprem-server-001
ComputeLocation: tokyo-dc-01

LogParameters:
  Level: INFO
  Path: /var/log/gamelift-agent/

NetworkConfiguration:
  PortRanges:
    - FromPort: 7777
      ToPort: 7788
      Protocol: UDP
    - FromPort: 7777
      ToPort: 7780
      Protocol: TCP
EOF

# Anywhere フリート作成(オンプレミスロケーション)
aws gamelift create-fleet \
  --name on-premises-fleet \
  --fleet-type ON_DEMAND \
  --compute-type ANYWHERE \
  --locations '[{"Location": "custom-tokyo-dc"}]' \
  --anywhere-configuration '{"Cost": 0}'

# Anywhere コンピュート登録
aws gamelift register-compute \
  --fleet-id fleet-anywhere-xxxxx \
  --compute-name onprem-server-001 \
  --certificate-path /etc/gamelift/server.crt

# オンプレミスサーバーでゲームサーバーを実行(GameLift Agent が管理)
systemctl start gamelift-agent
systemctl enable gamelift-agent

Queue(ゲームセッションキュー)

複数フリート・複数リージョンにまたがるマッチメイキング リクエストのルーティング。

# Queue 作成(優先度付きフリート配置)
aws gamelift create-game-session-queue \
  --name main-queue \
  --timeout-in-seconds 30 \
  --priority-configuration '[
    {"priority": 1, "destinationArn": "arn:aws:gamelift:ap-northeast-1:123456789012:fleet/fleet-tokyo"},
    {"priority": 2, "destinationArn": "arn:aws:gamelift:ap-southeast-1:123456789012:fleet/fleet-singapore"},
    {"priority": 3, "destinationArn": "arn:aws:gamelift:us-west-2:123456789012:fleet/fleet-california"}
  ]' \
  --custom-event-data '{"Region": "APAC", "GameMode": "Ranked"}'

# マッチメイキング時に Queue を指定
aws gamelift start-matchmaking \
  --ticket-id ticket-12345 \
  --configuration-name ranked-match \
  --players '[
    {"PlayerId": "player-001", "Attributes": {"skill_rating": {"N": 2500}, "country": {"S": "JP"}}},
    {"PlayerId": "player-002", "Attributes": {"skill_rating": {"N": 2480}, "country": {"S": "JP"}}}
  ]'

Alias(フリート抽象化)

フリート ID をクライアントに隠蔽して、バックエンドで透過的にフリート切り替え可能。

# Alias 作成(フリートのエイリアス)
aws gamelift create-alias \
  --name production-alias \
  --routing-strategy '{"Type": "SIMPLE", "FleetId": "fleet-xxxxx"}'

# Alias での参照(フリート ID が変わってもクライアント変更不要)
aws gamelift describe-alias \
  --alias-id alias-xxxxxx

# Terminal Alias(廃止フリートへのリダイレクト)
aws gamelift update-alias \
  --alias-id alias-xxxxxx \
  --routing-strategy '{"Type": "TERMINAL", "Message": "This game version is no longer supported"}'

Real-time Servers

C++ コードなしで WebSocket ベースのマルチプレイヤーを実装(Node.js ランタイム)。

// GameLift Real-time Servers スクリプト
const kryo = require('@amazon-web-services-blox/gamelift-realtime-client-sdk');

const logger = console;
const onPlayerConnect = (session, connectMessage) => {
  logger.log(`Player connected: ${connectMessage.opCode}`);
  
  // クライアント接続イベント
  const payload = connectMessage.getPayloadAsText();
  session.setAttributes(connectMessage.peerId, {
    playerName: payload.playerName,
    team: payload.team
  });
};

const onPlayerDisconnect = (session, peerId) => {
  logger.log(`Player disconnected: ${peerId}`);
  // クリーンアップ
};

const onMessage = (session, message) => {
  // クライアントからのメッセージ受信
  const opCode = message.opCode;
  const payload = message.getPayloadAsText();

  if (opCode === 1) {
    // Movement 更新
    session.sendMessage(message.peerId, {
      opCode: 101,
      data: {x: payload.x, y: payload.y, timestamp: Date.now()}
    });
  } else if (opCode === 2) {
    // Shooting イベント
    const otherPlayers = session.getAttributes();
    // 他プレイヤーに自分の射撃を通知
    session.broadcastMessage({
      opCode: 102,
      data: {shooter: message.peerId, targetPos: payload.target}
    }, [message.peerId]);
  }
};

module.exports = {onPlayerConnect, onPlayerDisconnect, onMessage};

料金体系(2026年時点)

項目 料金 備考
EC2 インスタンス(フリート) EC2 標準価格 オンデマンド: 標準価格、Spot: 最大 90% 割引
FlexMatch マッチメイキング 無料(GameLift 統合) 別途 MTurk/SageMaker 使用時のみ課金
GameLift Anywhere $1.50/リアルタイムサーバー時間 オンプレミス・他クラウド実行時
データ転送(フリート間) AWS の通常データ転送料金 リージョン内無料、リージョン間 $0.02/GB
Reserved Instance(年間) EC2 定価の 30-50% 割引 1年・3年・全払い/時間払い
Realtime Servers $0.0000141/秒/サーバープロセス Node.js ランタイム

比較: GameLift vs 競合サービス

観点 GameLift Unity Multiplay Azure PlayFab Edgegap
マッチメイキング FlexMatch(完全統合) 限定的 PlayFab Party(別料金) 外部統合必要
フリート管理 EC2/Container/Anywhere Unity Cloud Azure VM Kubernetes
地理的最適化 レイテンシベース自動配置 手動設定 リージョン選択 自動 CDN 最適化
スポット対応 ✓ 統合 × 限定的 ×
コスト削減 70-90%(Spot)、30-50%(RI) 低価格 Azure 価格設定 最低価格
学習曲線 中(SDK 統合) 簡単 中(多機能) 簡単
推奨ユースケース AAA タイトル・大規模マッチ インディー・中規模 Microsoft エコ 低コスト志向

ベストプラクティス

1. フリート設計

  • 単一フリート・複数リージョン: 一貫した設定を複数リージョンに展開
  • 専用フリート分離: ランク戦・カジュアル・新作テストを分離フリート化
  • リザベーション契約: 基本負荷を Reserved Instance で確保、ピークを Spot で対応

2. マッチメイキング

  • Expansion Rules: ウェイトタイムに応じて条件を段階的に緩和
  • バックフィル: セッション途中の欠員補充で プレイヤー体験向上
  • Latency-based routing: 地理的距離ベースで最適サーバー自動選択

3. モニタリング

  • ActiveGameSessions: フリート使用率・スケーリング基準メトリクス
  • PlayerConnectivity: プレイヤー接続エラー率・切断率監視
  • SessionQueueDepth: マッチメイキング待機キューの深さを監視

4. Graceful Shutdown

  • 5分間のシャットダウン期間: Fleet スケールダウン時に既存セッション完了を待機
  • オンボード/オフボード: セッション中のプレイヤーを計画的に他インスタンスに移行

設計チェックリスト

  • [ ] ゲームサーバーバイナリが GameLift SDK で SDK が正しく初期化されている
  • [ ] マッチメイキングルール(PlayerAttributes・Teams・Rules・Expansions)が定義済み
  • [ ] フリートスケーリングポリシーが設定済み(ターゲット値: 60-80%)
  • [ ] CloudWatch でセッション数・レイテンシ・エラー率を監視中
  • [ ] スポットインスタンス中断時の自動リーバランス機構が実装済み
  • [ ] Anywhere フリート使用時は Agent ログ・証明書更新を自動化
  • [ ] Queue で複数リージョンへの優先度付けが設定済み
  • [ ] タイムアウト・キュー深さの上限閾値を定義済み
  • [ ] DR: フリート丸ごと削除時のセッション移行戦略が決定済み

実装パターン: モバイル対戦ゲーム

要件: 1対1 デュエル・最大遅延 100ms・グローバル対応

# バックエンド統合フロー
class GameLiftMatchmaker:
    def __init__(self):
        self.gamelift = boto3.client('gamelift', region_name='ap-northeast-1')
        self.matchmaking_config = 'ranked-duel-config'

    def find_match(self, player_id: str, skill_rating: int, region: str):
        # MatchMaking Ticket 作成
        ticket = self.gamelift.start_matchmaking(
            TicketId=f'ticket-{player_id}-{int(time.time())}',
            ConfigurationName=self.matchmaking_config,
            Players=[{
                'PlayerId': player_id,
                'Attributes': {
                    'skill_rating': {'N': str(skill_rating)},
                    'region': {'S': region}
                }
            }]
        )
        return ticket['MatchmakingTicket']['TicketId']

    def get_match_status(self, ticket_id: str):
        # マッチメイキング進行状況確認
        ticket = self.gamelift.describe_matchmaking(TicketIds=[ticket_id])
        if ticket['TicketList'][0]['Status'] == 'Matched':
            game_session = ticket['TicketList'][0]['GameSessionConnectionInfo']
            return {
                'status': 'matched',
                'server_ip': game_session['IpAddress'],
                'port': game_session['Port'],
                'session_id': game_session['GameSessionId']
            }
        elif ticket['TicketList'][0]['Status'] == 'Searching':
            return {'status': 'searching', 'wait_ms': ...}

    def create_player_session(self, session_id: str, player_id: str):
        # プレイヤーセッション作成
        response = self.gamelift.create_player_session(
            GameSessionId=session_id,
            PlayerId=player_id
        )
        return response['PlayerSession']['PlayerSessionId']

最新動向(2024-2026)

  • スケールトゥーゼロ: アイドル完全削減で低トラフィック時コスト大幅削減
  • コンテナ対応: ECS オーケストレーション統合で CI/CD パイプライン効率化
  • Anywhere 拡大: オンプレミス・マルチクラウド対応で自由度向上
  • リアルタイムサーバー: Node.js ランタイムで C++ コーディング不要化
  • Spot 自動管理: セッション中断時の自動フェイルオーバー完全自動化
  • グローバル拡張: 6 新リージョン追加(2026年初頭)

まとめ

Amazon GameLift Servers は 「ゲーム業界標準のマルチプレイヤーサーバー基盤」。FlexMatch マッチメイキング・マルチリージョン展開・スポット活用による大幅コスト削減を統合し、100ms 以下の低レイテンシでグローバルなマルチプレイヤー体験を実現する。

EC2 自前管理の複雑性を排除し、セッション管理・フリートスケーリング・プレイヤー接続の安全な処理をマネージド化。インディーゲームから AAA タイトルまで、スケーラブルなゲームサーバー基盤を数分で構築できる。