환경 설정
개요
환경 별 플랫폼 연동을 위한 SDK의 설정 정보에 대한 가이드 입니다.
- 개발 버전과 라이브(릴리즈) 버전의 환경 설정 정보를 정리 합니다.
- 마켓 심사와 같은 Sandbox 리뷰 과정이 필요한 게임의 설정정보의 변경 시점에 대해 정리합니다.
SDK 플랫폼 환경 설정
환경 설정 방법
SDK의 플랫폼 환경은 Mount 시 env 파라메터로 전달 받고, 해당 환경의 PlatformConfig.json 파일을 통해 설정 합니다
Unity SDK
- 가이드: #mount
PlatformConfig.json 에 BuildEnv 값을 이용해 환경을 지정합니다. 환경에 따라 다수의 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
초기화(Mount) 할 때 #platform-configuration JSON의 BuildEnv 값을 이용해 환경을 지정합니다.
빌드 별 환경 설정
| 환경 | BuildEnv | 설명 |
|---|---|---|
| 개발 빌드 | qa | |
| QA 빌드 | qa | |
| 마켓 초도 검수 | qa | 유저에서 공개 되지 않는 빌드는 BuildEnv를 qa로 유지 합니다. |
| 라이브(QA/마켓 심사 중) | qa | 라이브(릴리즈) 빌드는 마켓 심사 완료 전 까지는 BuildEnv를 qa로 유지 합니다. |
| 라이브(유저 공개) | prod | 라이브(릴리즈) 빌드가 유저에게 공개 되는 시점에 별도의 패치 없이 BuildEnv를 prod로 변경 합니다. |
마켓 심사 전 QA와 심사 중에는 Sandbox 환경을 사용하기 위해 BuildEnv를 qa로 설정 되어야 합니다.
마켓 심사 완료 후 라이브(릴리즈) 빌드가 유저에게 공개 되는 시점은 Production 환경 플랫폼을 사용하기 위해 BuildEnv를 prod로 변경 해야 합니다. 이 과정은 별도의 패치 없이 서버사이드(CDN 포함)에서 제어할 수 있어야 합니다.
환경 설정 권장 사항
- 버전별 리뷰서버 ↔ 라이브서버 간 전환이 가능한 환경을 구축합니다.
- 방안1: 버전별 메타정보 파일을 서버에서 수정할 수 있고, 해당 파일을 CDN을 통해 클라이언트에 전달 합니다.
- 방안2: 버전별 메타정보를 관리하는 별도의 서버 구성이 있고, GMTool 등 관리 툴을 통해 제어 합니다.
- 기타: 버전별 메타정보 관리 정책을 별도로 협의 합니다.
- 환경 전환 시 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과 협의 할 수 있고, 가이드 및 시스템 구축 기술 지원 가능 합니다.