[언리얼 C++] External UI 인터페이스(온라인 서브시스템)
일부 온라인 서비스는 게임 콘솔처럼 전용 디바이스에서 실행되는 경우라면 특히나, 특정 작업을 실행할때마다 뜨는 표준화된 내장 유저 인터페이스가 있습니다. 예를 들어 친구 추가, 매치 참가를 위한 초대 전송, 신용 카드 등록과 같은 작업을 하면 게임과 무관한 별도의 양식, 오버레이, 화면, 워크플로를 통해 사용자가 조작하게 될 수 있습니다. 그렇게 하는 이유는 보통 민감할 수도 있는 작업을 항상 똑같은 방식으로 처리하기 위해서입니다. 그리고 개별 타사가 아닌 온라인 서비스를 소유한 회사가 제어할 수 있도록 하기 위해서입니다.
이 기능이 모든 온라인 서비스에 전부 표준이 아닐 수도 있으며, 어떤 경우에는 한 특정 서비스나 시스템에만 존재할 수도 있습니다. 이처럼 제 각각인 기능을 처리하기 위해, 온라인 서브시스템은 그 상호작용을 위한 모든 정보를 수집하여 External UI 인터페이스로 제공합니다.
1. External UI 인터페이스 사용
External UI 인터페이스는 자신만의 여러 델리게이트 호출을 통해 닫힐때 온라인 서브시스템에 알립니다.
추가로 그 변경사항이 온라인 서브시스템의 다른 부분, 예를 들면 로그인 인터페이스로의 델리게이트로 이어질 수도 있습니다. External UI 인터페이스의 특정 함수가 대부분의 온라인 서비스에 구현되어 있지 않을 수가 있기 때문에, 이 함수의 반환값에 주의를 기울이는 것이 중요합니다. 반환값이 false면 해당 사용자 함수는 현재 온라인 서비스에 지원되지 않거나 어떤식으로는 여는데 실패했음을 나타냅니다. 이 실패 유형은 별다른 동작을 할 것이 없기에 다른 델리게이트를 호출하지 않습니다.
지금부터 External UI 인터페이스에 내장된 여러 기능들에 대해 설명드리겠습니다.
- 메시지 박스 표시
플랫폼 내장 스타일로 메시지를 표시하려는 경우, ShowPlatformMessageBox() 함수를 호출합니다. 보통 (게임 메시지와 다른) 시스템 메시지를 표시할때 흔히 사용되는 방식으로, 사용자에게 패치 또는 업데이트 정보를 알리거나, 오프라인에서 멀티플레이어 전용 기능을 사용하려 했을때의 오류 메시지를 표시하는 등의 경우에 사용됩니다.
이 작업은 완료시 델리게이트를 호출하지 않습니다.
- 사용자 프로필 보기
사용자 프로필 오버레이를 보려면, ShowProfileUI() 함수에 프로필 확인을 요청하려는 사용자, 프로필을 소유한 사용자의 FUniqueNetId 값을 넘겨 호출하면 됩니다.
오버레이가 닫히면, 제공된 (FOnProfileUIClosedDelegate 유형) 델리게이트가 호출됩니다.
- 로그인
사용자 인증을 처리하는 곳은 보통 ID 인터페이스이긴 하지만, 플랫폼에 따라 별도의 유저 인터페이스 흐름을 통해야 하는 경우도 있는데, 이 경우에 단순히 로그인 유저 인터페이스 흐름을 직접 작성하는 것보다 편의성과 일관성이 뛰어나기 때문에 사용합니다.
ShowLoginUI() 함수는 현재 온라인 서비스의 표준 로그인 UI가 존재하면 사용합니다. 사용자가 인터페이스를 닫으면, 제공된 (FOnLoginUIClosedDelegate 유형) 델리게이트가 호출됩니다.
사용자의 로그인 상태에 대한 변경은 여전히 ID 인터페이스를 통해 델리게이트를 호출합니다.
- 친구 목록 사용
ShowFriendsUI() 함수는 온라인 서비스에 내장 기능이 포함된 경우 친구 목록을 띄웁니다.
친구 목록 관련 보다 직접적인 동작을 알기 위해서는, Friends 인터페이스의 내용을 보셔야합니다.
사용자가 외부 친구 목록 UI를 통해 가한 변경사항도 그대로 적합한 Friends 인터페이스 델리게이트로의 호출로 이어집니다.
- 초대 전송
게임 세션으로 초대하기 위한 친구 목록을 제공하는 내장 UI 표시를 위해서는, ShowInviteUI() 함수에 세션 이름을 넘겨 호출합니다.
- 다른 사용자에게 메시지 전송
"메일박스" 기능을 제공하는 서비스에서 ShowSendMessageUI() 함수는 메시지 전송을 위한 UI를 엽니다.
(FOnShowSendMessageUIClosedDelegate 유형) 델리게이트를 제공하며, 이는 메시지 UI 가 닫히면 호출됩니다.
제공된 FShowSendMessageParams 파라미터는 인터페이스를 초기화합니다.
- 업적 보기
ShowAchievementsUI() 함수에 로컬 사용자의 인덱스를 넘겨 호출하면 내장 인터페이스를 통해 지정된 사용자가 해제한 업적을 확인하고 다른 사용자와 비교할 수 있습니다.
- 계정 생성 또는 업그레이드
일부 온라인 서비스, 특히 콘솔의 경우 웹사이트를 거치지 않고 계정을 생성 또는 업그레이드하는 기능이 있습니다. 그 기능의 유저 인터페이스를 열려면, ShowAccountCreationUI() 함수 및 ShowAccountUpgradeUI() 함수를 사용합니다.
ShowAccountCreationUI() 함수는 완료시 제공된 (FOnAccountCreationUIClosedDelegate 유형) 델리게이트를 호출합니다.
- 스토어 방문
ShowStoreUI() 함수는 온라인 서비스의 스토어로 이동합니다. 온라인 서비스에서 지원하는 경우, 개발자는 FShowStoreParams 데이터 구조체에 카테고리 이름이나 제품 ID를 지정하여 스토어 내 특정 카테고리나 제품을 확인할 수도 있습니다. 스토어 UI가 닫히면 제공된 (FOnShowStoreUIClosedDelegate 유형) 델리게이트가 호출됩니다.
- 외부 웹사이트 방문
게임이 사용자를 외부 웹사이트로 보내는 경우, ShowWebURL() 함수를 사용하여 시스템의 기본 브라우저 안에서 사이트를 열고, 사용자가 더이상 사이트를 볼 필요가 없다고 판단되는 경우 CloseWebURL() 함수로 사이트를 닫을 수 있습니다.
사용자가 닫았든 CloseWebURL() 함수 호출로 인해서든 사이트가 닫힐때, ShowWebURL() 함수에 제공된 (FOnShowWebUrlClosedDelegate 유형) 델리게이트가 호출됩니다.