본문으로 건너뛰기

환경 설정

개요

환경 별 플랫폼 연동을 위한 SDK의 설정 정보에 대한 가이드 입니다.

  • 개발 버전과 라이브(릴리즈) 버전의 환경 설정 정보를 정리 합니다.
  • 마켓 심사와 같은 Sandbox 리뷰 과정이 필요한 게임의 설정정보의 변경 시점에 대해 정리합니다.

SDK 플랫폼 환경 설정

환경 설정 방법

SDK의 플랫폼 환경은 Mount 시 env 파라메터로 전달 받고, 해당 환경의 PlatformConfig.json 파일을 통해 설정 합니다

Unity SDK

PlatformConfig.jsonBuildEnv 값을 이용해 환경을 지정합니다. 환경에 따라 다수의 Config 를 추가해 두고 런타임 시 초기화(Mount) 할 때 결정 할 수 있습니다.

# 파일 위치
Resources/Platform/{env}/PlatformConfig.json

# Sample
Resources/Platform/dev/PlatformConfig.json
Resources/Platform/qa/PlatformConfig.json
Resources/Platform/prod/PlatformConfig.json
// Sample Resources\Platform\dev\PlatformConfig.json
{
"BuildEnv": "dev",
"serviceId": "100xxxx",
"CustomScheme": "platformstarter"
}

Unreal Engine SDK

초기화(Mount) 할 때 #platform-configuration JSON의 BuildEnv 값을 이용해 환경을 지정합니다.

빌드 별 환경 설정

환경BuildEnv설명
개발 빌드qa
QA 빌드qa
마켓 초도 검수qa유저에서 공개 되지 않는 빌드는 BuildEnvqa로 유지 합니다.
라이브(QA/마켓 심사 중)qa라이브(릴리즈) 빌드는 마켓 심사 완료 전 까지는 BuildEnvqa로 유지 합니다.
라이브(유저 공개)prod라이브(릴리즈) 빌드가 유저에게 공개 되는 시점에 별도의 패치 없이 BuildEnvprod로 변경 합니다.
위험

마켓 심사 전 QA와 심사 중에는 Sandbox 환경을 사용하기 위해 BuildEnvqa로 설정 되어야 합니다.

마켓 심사 완료 후 라이브(릴리즈) 빌드가 유저에게 공개 되는 시점은 Production 환경 플랫폼을 사용하기 위해 BuildEnvprod로 변경 해야 합니다. 이 과정은 별도의 패치 없이 서버사이드(CDN 포함)에서 제어할 수 있어야 합니다.

환경 설정 권장 사항

  1. 버전별 리뷰서버 ↔ 라이브서버 간 전환이 가능한 환경을 구축합니다.
    1. 방안1: 버전별 메타정보 파일을 서버에서 수정할 수 있고, 해당 파일을 CDN을 통해 클라이언트에 전달 합니다.
    2. 방안2: 버전별 메타정보를 관리하는 별도의 서버 구성이 있고, GMTool 등 관리 툴을 통해 제어 합니다.
    3. 기타: 버전별 메타정보 관리 정책을 별도로 협의 합니다.
  2. 환경 전환 시 Server의 Endpoint와 함께 SDK 초기화 환경 설정도 함께 변경이 가능해야 합니다.

방안1 Unity 예시

버전별 메타정보 파일을 서버에서 수정할 수 있고, 해당 파일을 CDN을 통해 클라이언트에 전달 하여 BuildEnv를 유연하게 설정 합니다.

1) 리뷰 서버와 라이브 서버 둘 모두의 환경 파일을 준비하여 빌드에 포함합니다.

정보

review, prod 와 같은 env 는 샘플이며, 프로젝트별로 임의 지정 가능합니다.

Resources/Platform/review/PlatformConfig.json
Resources/Platform/prod/PlatformConfig.json
// Resources/Platform/review/PlatformConfig.json
{
"BuildEnv": "qa",
"serviceId": "100xxxx",
"CustomScheme": "sampleapp"
}
// Resources/Platform/prod/PlatformConfig.json
{
"BuildEnv": "prod",
"serviceId": "100xxxx",
"CustomScheme": "sampleapp"
}

2) 앱 버전별 env 값을 CDN을 통해 취득합니다.

// CDN을 통해 전달되는 메타 정보 샘플
[
{
"version": "1.0", // 배포된 버전
"env": "prod"
},
{
"version": "1.1", //심사중인 버전
"env": "review"
}
]

3) 심사중인 앱의 경우 버전(1.1)의 env 값이 review 임을 확인하고 SDK 를 초기화 합니다.

...
var buildEnv = string.IsNullOrEmpty(env) ? "prod" : env; // env = review

// 초기화 정의 파일 Resources/Platform/review/PlatformConfig.json
PlatformSupervisor.Mount(buildEnv);

4) 심사 완료 후 앱 공개 후 2)에 배포한 CDN 정보를 prod로 업데이트하거나, 정보를 삭제 하여 CDN에 버전 정보가 없는 경우 기본적으로 prod로 접속할 수 있도록 한다.

[
{
"version": "1.1", //심사중인 버전
"env": "prod"
}
]
...
var buildEnv = string.IsNullOrEmpty(env) ? "prod" : env; // env = prod

// 초기화 정의 파일 Resources/Platform/prod/PlatformConfig.json
PlatformSupervisor.Mount(buildEnv);
정보

환경 설정과 관련된 시스템 구성은 게임 특성을 고려하여 방안1, 2 혹은 별도의 방안으로 기술PM과 협의 할 수 있고, 가이드 및 시스템 구축 기술 지원 가능 합니다.