언어:

iOS 게임 센터 업적 사용법

iOSachievements.png

환경설정

어플리케이션에 iOS 게임 센터 구성 관련 정보는 Leaderboards, Achievements and Challenges 문서를 참고하세요.

언리얼 프로젝트의 경우:

  1. 언리얼 에디터편집 메뉴에서 프로젝트 세팅 을 선택하면 프로젝트의 환경설정 옵션을 볼 수 있습니다.

  2. 왼편에서 플랫폼: iOS 탭을 선택합니다.

  3. Enable Game Center Support (게임 센터 지원 활성화)를 True 로 설정합니다.

어플리케이션을 Android와 iOS 양쪽 디바이스에서 출시하려는 경우, Google 플레이 업적 사용법 문서에서 업적 구성 관련 자세한 정보를 참고하시기 바랍니다.

업적 캐시

Cache Achievements 는 플랫폼의 게임 서비스에서 업적 목록과, 그 업적에 대한 현재 플레이어의 값을 요청합니다. 이 노드가 값을 반환하는 데 성공하면 Get Cached Achievement Value 를 사용할 수 있을 것입니다.

참고로 이는 latent (잠복성) 노드로, 실행 출력 핀이 여럿 있을 수 있습니다. 가장 위의 것은 "pass through" (통과)로, 다른 실행 출력 핀과 똑같이 작동합니다. 다른 두 가지 핀은 (On SuccessOn Failure) 온라인 서비스가 값을 반환( 또는 실패)할 때 실행됩니다.

블루프린트:

아래는 Unreal Match 3 (언리얼 매치 3) 샘플 게임의 Global Game Instance 블루프린트 예제입니다. 사용자가 디바이스의 게임 플랫폼(Game Center, Google Play)에 로그인한 이후에는 Cache Achievements 노드를 실행, 이 시점에서 (상단 출력 실행 핀의 실행을 제거하는 것으로) 사실상 실행을 멈춰 서비스가 모든 업적을 반환할 수 있는 시간을 줍니다.

cacheAchievements.png

업적에서 값 읽기

Get Cached Achievement Progress 는 제공된 Player Controller 에 대해 주어진 Achievement ID 의 진행상황을 반환하며, 앞서 Cache Achievements 노드가 실행되고 성공적으로 반환된 경우에만 작동합니다.

iOS Game Center 의 경우, 이 값은 사실상 integer 로 저장되기에 그 float 에다 floor 를 적용한(, 즉 그 값보다 작은 정수인) 것입니다. Google 플레이 서비스에서는 float 값을 받습니다.

블루프린트:

아래는 Unreal Match 3 (언리얼 매치 3) 샘플 게임의 Global Game Instance 블루프린트 예제입니다. 업적이 캐시에 저장되면, 업적 이름과 함께 배열에서 그 목표 점수까지 같이 끌어오는 루프를 돌리고, 이미 오프라인 값이 있으면 빠르게 비교를 합니다. 그런 다음 서비스 또는 로컬 중 높은 값을 취합니다:

readAchievement.png

업적에 값 쓰기

Write Achievement Progress 는 플랫폼의 업적 시스템에 메시지를 전송하여 주어진 사용자(, 즉 Player ControllerUser Tag) 에 대해 제공된 업적에 Progress (진행상황)을 기반으로 한 백분율 (0.0% - 100.0%) 값을 씁니다. "일회성" 업적의 경우 Progress 에 항상 100.0 을 전달하는 반면, 진행형 업적의 경우 해당 업적에 도달하는 것을 100.0 으로 해서 항상 그보다 적은 백분율 값을 전달합니다.

iOS 게임 센터의 경우, 이 값은 실제로 정수로 전송되므로, 진행형 업적 값은 1 에서 100 사이의 정수만 가능합니다. Google 플레이 서비스에서는 실수가 전송됩니다.

참고로 이는 latent (잠복성) 노드이므로, 실행 출력 핀이 여럿 있습니다. 가장 상단의 것은 "pass through" (통과)로, 다른 실행 출력 핀과 마찬가지로 작동합니다. 다른 두 개의 핀 (On SuccessOn Failure) 은 온라인 서비스가 값을 반환( 또는 실패)할 때 실행됩니다. 실행시 성공을 반환하면 Written Achievement Name, Written Progress, Written User Tag 는 노드에 전달한 것과 동일한 비공백 값을 반환합니다.

블루프린트:

아래는 언리얼 매치 3 샘플 게임의 Global Game Instance 블루프린트 예제입니다. 현재 업적 값을 해당 업적 진행에 필요한 단위와 비교하는 루프가 있고, 진행이 되었다면 Write Achievement 이벤트가 호출됩니다:

writeAchievement.png

이렇게 한 이유는, 잠복성 노드는 함수에서 사용할 수 없기 때문입니다.

플랫폼별 업적 화면 표시

Show Platform Specific Achievement Screen 은 현재 플랫폼에 대해 제공된 Player Controller 의 업적을 표시합니다.

블루프린트:

아래는 언리얼 매치 3 샘플 게임의 GameOverButtons 블루프린트 위젯 예제입니다. ShowAchievements 버튼이 눌리면, 게임은 현재 플랫폼의 업적 화면 표시를 시도합니다.

showAchievements.png