728x90
반응형
- 개요
PlayerSession은 GameSession에 대한 플레이어의 입장 권한과 연결 상태를 관리하며,
개별 플레이어가 게임 서버에 안전하게 접속하고 세션 내에 머무르는 과정을 추적하는 관리 단위를 의미한다
CreatePlayerSessionCommand API를 호출하여 PlayerSession을 생성할 수 있다
따라서 해당 API를 호출하는 람다 함수를 작성한다
- 절차
1) 람다 함수에 적용할 권한 생성

생성한 람다 함수에 적용할 권한 정책을 설정한다
GameLift Servers 서비스에 대한 CreatePlayerSession 명령어의 권한을 허용한다
CreatePlayerSessions 명령어는 파티 플레이와 같은 대규모 플레이어를 동시에 처리하는 용도로 사용한다
프로젝트에서는 파티 플레이 기능은 없으므로 따로 사용하지는 않는다

생성한 권한 정책의 이름을 위와 같이 설정한다
2) 람다 함수 선언

AWS 콘솔에 접속하고 Lambda 탭에서 "함수 생성"을 선택하여 CreatePlayerSession 람다 함수를 생성한다

선언한 람다 함수에 1)에서 생성한 권한 정책을 연결한다
3) 람다 함수 정의
import { GameLiftClient, CreatePlayerSessionCommand } from "@aws-sdk/client-gamelift";
export const handler = async (event) => {
try {
const gameLiftClient = new GameLiftClient( { region: process.env.REGION } );
const createPlayerSessionInput = {
GameSessionId: event.gameSessionId,
PlayerId: event.playerId,
Location: "custom-Home-LocalPC", // 테스트용 Anywhere 로케이션(추후 EC2 Managed 로케이션으로 수정)
};
const createPlayerSessionCommand = new CreatePlayerSessionCommand(createPlayerSessionInput);
const createPlayerSessionResponse = await gameLiftClient.send(createPlayerSessionCommand);
return createPlayerSessionResponse.PlayerSession;
} catch(error) {
return error;
}
};
위와 같이 람다 함수의 코드를 작성하였다
- 지정된 AWS 리전을 바라보는 메인 클라이언트 객체를 생성 + 해당 객체를 통해 GameLift와 통신
- GameLift에 전달할 데이터를 정의 - 람다를 호출할 때 인자로 넘겨준 event 객체의 정보를 사용
- GameSessionId 속성 : 접속하려는 GameSession의 ID
- PlayerId 속성 : 접속하려는 사용자의 ID
- Location 속성 : 게임 서버가 실행중인 위치
- 이후 CreatePlayerSessionCommand API를 실행하여 PlayerSession을 생성

테스트하기 위한 이벤트 데이터를 위와 같이 정의하였다
4) 실행
# 1) 토큰 발급
aws gamelift get-compute-auth-token ^
--fleet-id "플릿 ID" ^
--compute-name "컴퓨팅 자원 이름" ^
--region "사용중인 리전" ^
--profile "프로필 이름" // 해당 옵션은 필요한 경우 사용
# 2) 발급된 토큰을 사용하여 서버 exe 파일 실행
"경로\Build\Build_1\운영체제Server\프로젝트Server.exe" -log -glAnywhere ^
-glAnywhereAuthToken="발급된토큰" ^
-glAnywhereHostId="컴퓨팅 자원 이름" ^
-glAnywhereFleetId="플릿 ID" ^
-glAnywhereWebSocketUrl="리전에 따른 소켓 URL" ^
-port=7777 // 기본 포트번호
# 3) GameSession 생성(Anywhere)
aws gamelift create-game-session ^
--fleet-id "플릿 ID" ^
--name "생성할 GameSession 이름" ^
--maximum-player-session-count "참여할 최대 플레이어 수" ^
--region "사용중인 리전" ^
--location "컴퓨팅 자원의 위치" ^
--profile "프로필 이름" // 해당 옵션은 필요한 경우 사용
위와 같이 AWS CLI에 명령어를 입력한다


GameSession이 생성된 후에 반환된 GameSessionId 값을 복사하고 이벤트 데이터에 붙여넣기한다

테스트 실행 결과는 위와 같다
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| PlayerSessions - 3) CreatePlayerSession 람다 함수의 실행 결과 파싱 (0) | 2026.05.29 |
|---|---|
| PlayerSessions - 2) 클라이언트를 통한 PlayerSession 생성 준비 (0) | 2026.05.28 |
| Game Sessions - 최종) 서버로부터 반환된 CreateGameSessionCommand API 실행 결과 파싱 (0) | 2026.05.23 |
| Game Sessions - 5) UI를 통한 GameSession 생성 (0) | 2026.05.22 |
| Game Sessions - 4) GameSession 생성 (0) | 2026.05.22 |