기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: Amazon GameLift Servers 래퍼를 사용한 빠른 온보딩
에 대한 온보딩 자습서에 오신 것을 환영합니다Amazon GameLift Servers. 이 자습서에서는 클라우드 기반 컴퓨팅 리소스 플릿에서 호스팅할 게임 서버를 빠르게 배포합니다. 이 자습서를 사용하여 용 서버 SDK를 게임 코드Amazon GameLift Servers에 통합하는 작업을 건너뛰고, 대신 Amazon GameLift Servers 서비스와 통신하고 게임 세션을 실행하는 최소한의 기능으로 게임을 배포합니다. 기본 호스팅 솔루션을 설정하고 이를 사용하여 자동 조정 및 매치메이킹과 같은 모든 기능을 경험할 수 있습니다. 또한 라이브 데모의 일부로 게임의 프로토타입을 호스팅하거나 테스트할 수 있는 좋은 방법입니다.
이 온보딩 방법의 주요 이점:
-
빠르게 호스팅할 수 있도록 게임 서버를 빠르게 배포합니다.
-
게임 코드가 변경되지 않으므로 수정할 필요가 없습니다.
-
게임 엔진에 관계없이 모든 게임 실행 파일에서이 방법을 사용합니다.
-
게임 세션 활동 모니터링 및 호스팅 상태를 포함한 모든 Amazon GameLift Servers 관리 도구를 살펴봅니다.
참고
래퍼는 평가 및 기본 프로덕션 용도로 사용됩니다. 세부 플레이어 세션 관리와 같은 고급 기능을 사용하려면 전체 서버 SDK 통합이 필요합니다.
사전 조건
시작하기 전에 다음을 갖추었는지 확인하세요.
-
적절한 권한이 AWS 계정 있는
-
AWS CLI 설치됨
-
Go 1.18 이상
-
멀티플레이어 게임 서버 실행 파일
-
Make(Linux/Mac)
-
활성 계정과 함께 설치된 Git
개요
이 자습서에서는 다음을 수행합니다.
-
래퍼 가져오기 및 빌드
-
게임 빌드 준비
-
래퍼 구성
-
게임 서버 빌드 업로드
-
관리형 EC2 플릿 생성
-
게임 세션 생성 및 연결
-
게임 서버 모니터링 및 관리
-
게임 서버 규모 조정
1단계: 게임 서버 래퍼 가져오기 및 빌드
다음 명령을 사용하여 게임 서버 래퍼 소스를 가져오고 래퍼를 빌드합니다. 이러한 명령은 SSH를 사용하지만 Github 리포지토리로 직접 이동할 수도 있습니다.
Windows
> git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git > cd amazon-gamelift-servers-game-server-wrapper > powershell -file .\build.ps1
Mac 및 Linux
$ git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git $ cd amazon-gamelift-servers-game-server-wrapper $ make
빌드가 성공하면 'out' 디렉터리가에 추가됩니다amazon-gamelift-servers-game-server-wrapper
. 이 디렉터리에는 지원되는 각 호스팅 플릿 옵션에 대해 하나씩 3개의 폴더가 있으며, 여기에는 빌드 아티팩트 세트가 포함되어 있습니다. 이 자습서에서는 관리형 EC2 플릿에 배포하므로 폴더를 사용합니다gamelift-servers-managed-ec2
.
2단계: 게임 서버 빌드 준비
이 단계에서는에 업로드할 게임 서버 빌드 파일을 준비합니다Amazon GameLift Servers.
게임 디렉터리 생성
이제 로컬 시스템에서 게임 디렉터리를 준비합니다. 이 디렉터리에는를 사용하여 게임 서버를 실행하는 데 필요한 모든 파일이 포함되어야 합니다Amazon GameLift Servers. 여기에는 게임 서버 래퍼, 게임 서버 빌드 및 래퍼가 게임 서버와 함께 작동하도록 하는 config.yaml이 포함됩니다.
다음 단계를 사용합니다.
-
관리형 EC2 플릿. 게임 서버 래퍼 출력 폴더에서 관리형 EC2 플릿에 배포할 빌드 아티팩트를 찾습니다. 빌드는에 표시된 대로 Out Directory에 기록됩니다
out\linux\amd64\gamelift-servers-managed-ec2
. -
게임 서버 실행 파일과
gamelift-servers-managed-ec2
폴더로 실행하는 데 필요한 모든 관련 파일을 복사합니다. 필요에 따라 중첩된 디렉터리를 보유할 수 있습니다.
디렉터리 구조의 예는 다음과 같습니다.
gamelift-servers-managed-ec2 │-- config.yaml │-- amazon-gamelift-servers-game-server-wrapper │-- MyGame │ │-- server-executable.exe │ │-- my-game-settings │ │ ......
3단계: 플릿의 래퍼 구성
Amazon GameLift Servers는 플릿 컴퓨팅 인스턴스의 수명 주기를 관리하여 서버 빌드가 설치된 새 인스턴스를 실행하고 필요에 따라 인스턴스를 재활용합니다. 서비스는 각 인스턴스에서 실행되는 게임 서버 프로세스 수명 주기를 관리합니다. 관리형 EC2 플릿에는 플레이어가 어디에 있든 지원할 수 있는 인스턴스가 여러 위치에 있을 수 있습니다.
config.yaml 파일을 편집하여 로깅, 포트 설정 및 서버 초기화를 위한 래퍼를 구성합니다.
-
로깅 설정을 구성합니다. 게임 서버 래퍼는 각 게임 서버 프로세스에 대한 로그 메시지를 생성합니다. 기본적으로 로그 수준은 최대 세부 정보를 위해 디버깅하도록 설정됩니다. 이는 설정 및 문제 해결 시 매우 유용하며 로그 메시지의 세부 정보를 결정합니다.이 경우 가장 상세합니다. 옵션에는 디버그, 정보, 경고 및 오류(최소 상세 정보)가 포함됩니다.
-
게임 서버 로그 디렉터리의 경로를 지정합니다. 게임 서버 로그의 기본 경로는 입니다
./game-server-logs
. 이 디렉터리에는 게임 서버에서 생성된 모든 로그가 포함되며 각 인스턴스에는 로그가 있습니다. 로그는 이벤트 탭에서 액세스할 수 Amazon GameLift Servers 있는에 자동으로 업로드됩니다. 자세한 내용은 문제 해결 섹션을 참조하세요. -
네트워크 포트 구성을 정의합니다. 게임 포트를 원하는 대로 설정합니다. 이 자습서에서는 인스턴스당 하나의 동시 게임 서버 프로세스만 실행하는 플릿을 생성하므로 포트 하나만 지정합니다. 한 번에 여러 프로세스를 실행하기로 결정한 경우 각 동시 프로세스에 대해 충분한 포트를 구성해야 합니다. 구성 파일에 표시된 기본값은 37016이지만 일반적으로 Linux 빌드를 사용하는 플릿의 경우 포트 22 및 1026-60000을 사용합니다. Windows 빌드를 사용하는 플릿의 경우 포트 1026-60000을 사용합니다.
-
게임 서버 실행 파일의 경로를 설정합니다. 의 경우 게임 서버 실행 파일의 경로를 실제 이름과 위치로
./MyGame/my-server-executable.exe
사용자 지정합니다. 게임 서버를 시작하기 위한 진입점입니다. -
게임 서버 인수를 구성합니다. 최소한 -port 인수를 지정하고 이전에 정의한 것과 동일한 게임 포트 값을 사용합니다. "pos" 값 0은 이것이 첫 번째 인수임을 나타냅니다. 필요에 따라 다른 인수를 추가합니다. 이러한 인수는 시작 시 게임 서버로 전달되므로 런타임 동작을 구성할 수 있습니다.
-
인수:
"--port"
-
값:
"{{.port number here}}"
-
위치:
0
(목록의 첫 번째 인수)
-
구성의 예제:
log-config: wrapper-log-level: debug game-server-logs-dir: ./game-server-logs ports: gamePort: 37016 game-server-details: executable-file-path: ./MyGame/my-server-executable game-server-args: - arg: "--port" val: "{{.gameport}}" pos: 0
4단계: 게임 서버 빌드 업로드
이제 게임 서버 빌드의 모든 필수 요소(게임 서버 래퍼, config.yaml 및 게임 서버 파일)를 완료했으며 호스팅을 Amazon GameLift Servers 위해 게임 빌드를에 업로드할 준비가 되었습니다. 게임 빌드를 업로드하는 가장 빠른 방법은 다음 예제와 upload-build
같이 AWS CLI 명령을 사용하는 것입니다.
Windows를 사용하여 게임 빌드 업로드:
aws gamelift upload-build \ --name gamelift-test-2025-03-11-1 \ --build-version gamelift-test-2025-03-11-1 \ --build-root out/windows/amd64/gamelift-servers-managed-ec2 \ --operating-system WINDOWS_2016 \ --server-sdk-version 5.3.0 \ --region us-west-2
참고
Mac 및 Linux 빌드의 경우 --operating-system AMAZON_LINUX_2023을 사용합니다.
빌드를 생성할 때 API 응답의 빌드 ID를 기록하여 플릿 생성에 사용합니다.
5단계: 관리형 EC2 플릿 생성
다음 단계에서는 최소 플릿 구성을 설명하므로 가능한 한 빨리 시작하고 실행할 수 있습니다.
플릿을 생성하려면:
-
에 로그인 AWS Management Console 하고 로 이동합니다Amazon GameLift Servers.
-
콘솔 창 상단의 메뉴 모음에서 빌드가 있는 리전을 확인합니다. 플릿이 동일한 리전에 있어야 하거나 빌드를 찾거나 선택할 수 없으므로 기록해 둡니다.
-
관리형 EC2 섹션의 탐색 창에서 빌드를 선택합니다.
-
이전에 업로드한 빌드를 선택하여 빌드 세부 정보 페이지를 표시합니다.
-
플릿 섹션에서 플릿 생성을 선택합니다. 그러면 플릿의 상태를 추적하고 이벤트 탭에서 플릿 생성 이벤트를 볼 수 있는 관리형 EC2 플릿 세부 정보 정의 페이지가 표시됩니다.
-
이름과 설명을 입력하고 다음을 선택합니다.
-
인스턴스 세부 정보 정의 페이지에는 기본적으로 빌드의 리전이 표시됩니다. 추가하려는 리전을 선택합니다.
-
플릿 유형에서 온디맨드를 선택합니다.
-
인스턴스 유형에서 c5.large를 선택하고 다음을 선택합니다.
-
런타임 구성에서 업로드된 게임 빌드는 래퍼를 사용하므로 대신 래퍼 실행 파일을 가리켜야 합니다. Windows 게임 서버의 경우
C:\game\amazon-gamelift-servers-game-server-wrapper.exe
입니다. Linux 게임 서버의 경우 입니다/local/game/amazon-gamelift-servers-game-server-wrapper
.예:
LaunchPath": "/local/game/amazon-gamelift-servers-game-server-wrapper", "ConcurrentExecutions": 1, "Parameters": "—port 37016
또한
config.yaml
및 런타임 구성 시작 파라미터에 설정된 포트를 허용하는 범위로 게임 포트 값을 구성합니다. 의 포트는 플릿의 런타임 구성에 지정된 포트와 일치할config.yaml
필요는 없지만, 구성이 다른 포트를 지정하는 경우 런타임 시이 값은에 있는 값을 재정의합니다config.yaml
. 런타임 구성에 입력된 시작 파라미터도에 있는 파라미터를 재정의합니다config.yaml
. 검토 및 생성 페이지에서 모든 구성을 다시 확인한 다음 제출을 선택하여 플릿을 생성합니다. 플릿 상태는 게임 서버를 호스팅하기 위한 용량을 가동할 때 변경되며, 곧 활성 상태가 표시됩니다. 활성화가 완료되고 플릿이 배포되면 서비스는 게임 세션 요청을 수신할 준비가 된 래퍼를 시작합니다.
6단계: 게임 세션 생성 및 연결
플릿 상태가 활성으로 표시되면 게임 서버가 게임 세션을 호스팅할 준비가 되고 대기 중임을 의미합니다. 게임 세션을 시작하려면 Amazon GameLift Servers 서비스에 게임 세션을 요청합니다. 여기서는 AWS CLI 를 사용하여이 요청을 수행합니다.
참고
를 사용하여 게임 세션을 생성하는 AWS CLI 것은 프로세스를 테스트하고 익숙해지는 데 유용합니다. 어느 시점에서는 게임 매치메이킹 또는 게임 세션 배치 시스템의 일부로 게임 백엔드 서비스에 프로그래밍 방식의 AWS SDK 호출을 추가합니다.
다음을 사용하여 게임 세션을 생성합니다.
aws gamelift create-game-session \ --fleet-id <FLEET_ID> \ --game-properties '[{"Key": "exampleProperty", "Value": "exampleValue"}]' \ --maximum-player-session-count 3 \ --region us-west-2
사용자 지정 게임 속성을 서버 실행 파일에 전달할 수도 있습니다. 자세한 내용은 README의 게임 서버 인수를 참조하세요. create-game-session 호출을 수신하면는 래퍼에 게임 서버 실행 파일을 시작하고 게임 세션을 시작하도록 Amazon GameLift Servers 알립니다. 의 내용은 게임 서버의 구성에 config.yaml
영향을 미치며 콘솔에 설정된 시작 파라미터에 따라 게임 세션 자체의 구성이 결정됩니다.
게임 속성을 추가하기 위한 예제 형식:
defaultArgs: - arg: "--port" val: "{{.GamePort}}" pos: 0 - arg: "--ipAddress" val: "{{.IpAddress}}" pos: 1 - arg: "--gameSessionId" val: "{{.GameSessionId}}" pos: 2
7단계: 플릿 관리 및 모니터링
이제 게임 서버 플릿이 설정되고 게임 세션이 시작되었으므로 Amazon GameLift Servers 콘솔에서 이를 관리하고 모니터링할 수 있습니다. 이를 수행하는 가장 좋은 방법은 플릿 세부 정보 페이지에서 플릿 세부 정보를 편집하거나 조정 탭에서 플릿 조정 및 용량을 변경할 수 있습니다. 게임 서버 조정에 대한 다음 섹션을 참조하세요.
활동 및 하드웨어 지표에 대한 모니터링을 보여주는 그래프를 보려면 지표 탭을 선택합니다. 지표 그래프에 대한 자세한 내용을 보려면 플릿 ID 옆의 정보 링크를 선택합니다. 또한 지표 탭에서 게임 서버를 면밀히 모니터링할 수 있지만 CloudWatch 대시보드에서 이러한 지표에 경보를 추가할 수도 있습니다.
콘솔에서 CloudWatch 대시보드로 이동하려면:
-
검색 창에 "CloudWatch"를 입력하고 검색 결과 목록에서 선택하여 CloudWatch 개요를 표시합니다.
-
아래로 스크롤하여 GameLift 대시보드 보기를 선택하면 플릿 및 게임 세션의 주요 지표를 기반으로 그래프를 볼 수 있습니다.
8단계: 게임 서버 규모 조정
다음 단계에서는 Auto Scaling을 설정합니다. Auto Scaling을 사용하면 게임 서버 활동에 따라 플릿 용량을 동적으로 조정할 수 있습니다. 플레이어가 게임 세션에 도착하고 시작하면 Auto Scaling은 더 많은 인스턴스를 추가하고 플레이어 수요가 감소하면 Auto Scaling은 미사용 인스턴스를 릴리스합니다. 이는 원활하고 빠른 플레이어 경험을 제공하면서 호스팅 리소스와 비용을 최소화하는 효과적인 방법입니다.
게임 시작을 준비할 때 플릿에 대한 Auto Scaling을 설정해야 합니다. 호스팅 리소스와 비용을 최소화하면서 원활하고 빠른 플레이어 경험을 제공할 수 있는 효과적인 방법으로 Auto Scaling을 사용하는 것이 좋습니다.
플릿 용량을 수동으로 설정하려면
플릿 용량을 수동으로 설정하려면
-
플릿의 세부 정보 페이지에서 조정 탭으로 이동합니다.
-
위치를 선택하고 편집을 선택합니다.
-
원하는 인스턴스 값을 변경하고 최소 및 최대 크기 설정을 변경하여 현재 값 이상으로 확장합니다.
참고
과도한 규모 조정 및 비용을 방지하려면 최대 인스턴스 설정을 중지 갭으로 사용합니다.
-
확인을 선택합니다.
대상 기반 Auto Scaling을 사용하려면
대상 기반 Auto Scaling을 사용하려면
대상 기반 자동 크기 조정(대상 추적)은 플릿 크기 조정을 사용 가능한 게임 세션의 백분율에 연결합니다. 플레이어가 게임을 플레이하는 속도가 급증하고 사용 가능한 게임 세션이 감소하면 플릿에 인스턴스를 자동으로 추가하여 응답합니다.
-
대상 기반 Auto Scaling 정책에서 정책 추가를 선택하고 설정한 사용 가능한 게임 세션 비율의 임계값에 도달하면 플릿의 용량이 자동으로 변경되도록 설정합니다. 버퍼가 클수록 급증을 더 잘 처리할 수 있어 새 플레이어가 게임에 빠르게 참여할 수 있지만 호스팅 비용이 증가할 수도 있습니다.
-
확인을 선택하여 변경 사항을 수락합니다.
규칙 기반 Auto Scaling은 조정을 다른 플릿 지표에 연결하고 사용자 지정 임계값 및 조정 응답을 설정하는 기능과 같은 보다 세분화된 제어를 제공합니다. 강력한 옵션을 제공하지만 사용자 지정 규칙이 작동하는 방식을 이해하려면 CLI와 중요한 테스트를 사용해야 합니다. 이 자습서에서는 먼저 대상 기반 접근 방식을 설정하는 데 중점을 둡니다.
일반적인 문제 해결
다음은 게임 서버 및 게임 세션을 실행하는 동안 발생할 수 있는 일반적인 문제입니다. 서버 또는 게임 세션이 제대로 실행되지 않는 경우 첫 번째 단계는 프로덕션 환경에서의 새 배포 또는 게임에 대해 아래에 설명된 문제 중 하나를 나타낼 수 있는 로그를 확인하는 것입니다.
로그에 다음이 표시되는 경우가 많습니다.
-
게임 서버 프로세스를 시작할 수 없습니다. 이는 래퍼 구성의 오류일 수 있습니다. 파일에 올바른 시작 경로와 올바른 시작 파라미터 및 인수가 있는지 확인합니다.
-
게임 서버 빌드를 실행할 수 없습니다. 이는 게임 코드의 오류일 수 있습니다.
-
플레이어는 게임 세션에 연결할 수 없습니다. 이는 포트 구성 오류일 수 있습니다.
-
연결이 지연되거나 느립니다. 조정 정책 및 임계값을 검토합니다.
-
연결이 없습니다. 플릿의 포트 규칙 및 구성을 확인합니다.
Amazon GameLift Servers 플릿의 이벤트 로그를 보려면
Amazon GameLift Servers 플릿의 이벤트 로그를 보려면
-
Amazon GameLift Servers 콘솔을 엽니다.
-
플릿 세부 정보 페이지에서 이벤트 탭을 선택하고 로그를 다운로드합니다. 지표 탭에서 게임 서버 상태 및 게임 세션 활성화에 대한 활동 및 하드웨어 지표를 모니터링할 수도 있습니다.
게임 세션 로그를 보려면
게임 세션 로그를 보려면
-
콘솔에서 플릿을 열고 게임 세션 탭을 엽니다.
-
목록에서 게임 세션 ID를 선택하여 개요 페이지를 표시합니다.
-
로그 다운로드를 선택하여 로그 파일을 로컬로 다운로드합니다.
CLI를 사용하여 게임 세션 로그를 보려면 GetGameSessionLogURL
API를 사용합니다.는 14일 동안 로그를 Amazon GameLift Servers 자동으로 저장합니다.
플릿에 대해 Amazon CloudWatch logs를 구성할 수도 있습니다. 이를 통해 추가 로깅 기능을 제공하고 다른 AWS 모니터링 서비스와 통합할 수 있습니다.
CloudWatch를 통한 실시간 로그 액세스 또는 연장된 보존 기간의 경우:
-
Amazon GameLift Servers 콘솔 대시보드 상단의 검색 창에 "CloudWatch"를 입력하고 결과 드롭다운에서 선택합니다.
-
CloudWatch 로그 그룹으로 이동하여 특정 세션을 검색합니다. 가장 쉬운 방법은 모두 검색을 클릭하고 gameSessionId 또는 clientId를 사용하여 필터링하는 것입니다.