언리얼 93

[언리얼 C++] Store 인터페이스(온라인 서브시스템)

게임에서 사용자 구매를 지원하는 두가지 인터페이스 중 Store 인터페이스는 사용자에게 특정 항목을 제안하며, Purchase 인터페이스는 사용자가 그 제안을 수락할 수 있도록 해줍니다. Store 인터페이스를 통해 게임에서는 온라인 서비스에서 제안을 검색하여 카테고리 별로 분류하고 필터를 적용해 개별적으로 관리할 수 있습니다. 제안(FOnlineStoreOffer 클래스)에는 사용자가 게임을 통해 구매할 수 있는 모든 것에 대한 필수 정보가 전부 들어있습니다. 여기에는 설명, 가격, 시작 및 종료일과 같은 정보가 포함됩니다. 카테고리(FOnlineStoreCategory 클래스)에는 훨씬 단순한 데이터가 저장되며, 하위 카테고리 이름과 목록만 들어갑니다. 온라인 서비스 자체에서 제안을 설정하고 관리하는..

[언리얼 C++] Purchase 인터페이스(온라인 서브시스템)

게임에서 사용자 구매를 지원하는 두가지 인터페이스 중 Store 인터페이스는 사용자에게 특정 항목을 제안하며, Purchase 인터페이스는 사용자가 그 제안을 수락할 수 있도록 해줍니다. Purchase 인터페이스로 할 수 있는 작업은 다음과 같습니다. 사용자가 구매 가능한지 확인합니다. 구매 프로세스를 시작합니다. 과거 구매 내역을 확인합니다. 사용자가 구매할 수도 있는 제안 목록을 검색하거나 필터를 적용하려면, Store 인터페이스를 사용하시기 바랍니다. 1. 게임 내 구매 Purchase 인터페이스 관점에서, 구매란 게임 내 통신이 아닌 실제 통신으로 게임 내 아이템 또는 컨텐츠를 액세스할 수 있도록 하는 것입니다. 그러나 Purchase 인터페이스 자체가 신용 카드 정보를 받거나 자녀 보호 기능을..

[언리얼 C++] Presence 인터페이스(온라인 서브시스템)

온라인 서비스에 로그인하면 사용자는 자신의 친구나 온라인에서 만난 다른 사용자에 대한 (온라인인지, 지금 무얼 하는지, 게임에 참가할 수 있는지 등의) 정보를 볼 수 있습니다. Presence 인터페이스는 온라인 서브시스템에 이러한 기능을 제공합니다. 1. 현재상태 대부분의 온라인 서비스는 각 사용자의 "온라인", "오프라인", "자리 비움"과 같은 여러가지 기본 상태뿐 아니라 "로비에 있음" 또는 "(맵에서) 매치 중"과 같은 게임 특정 상태를 인식합니다. 그러나 서비스 별 개인 정보 보호 정책 및 계정 설정으로 인해 이러한 설정이 항상 표시되지 않을 수도 있고 사용자에 따라 볼 수 있거나 없을 수도 있습니다. 온라인 서브시스템은 이러한 정책이나 설정과 상호 작용하지는 않지만 검색하는 정보는 영향을 받..

[언리얼 C++] Online User 인터페이스(온라인 서브시스템)

Online User 인터페이스는 원격 및 로컬 사용자에 대해 캐시에 저장된 모든 정보와 메타데이터의 중앙 저장소입니다. 또한 이 인터페이스는 역방향 조회 기능을 제공하므로, 개발자는 표시명이나 이메일 주소에 따라 사용자 ID를 검색하고 언리얼 엔진 4의 네이티브 FUniqueId 시스템에 다시 매핑시킬 수 있습니다. 1. 사용자 메타데이터 액세스 사용자 메타데이터에 액세스하려면, 먼저 온라인 서비스에서 그 데이터를 요청하고 캐시에 저장해야 합니다. QueryUserInfo () 함수를 호출할때 정보를 원하는 사용자에 대한 FUniqueNetId 값 목록, 요청을 한 로컬 사용자의 인덱스를 파라미터로 넘기면 됩니다. 이는 비동기 프로세스이며, 완료되면 (FOnQueryUserInfoComplete 유형)..

[언리얼 C++] Identity 인터페이스(온라인 서브시스템)

Identity 인터페이스는 플레이어 ID 관리를 위한 온라인 인터페이스입니다. 게임 세션에 접속하고 인터넷을 통해 다른 플레이어와 상호작용하기 위해서는 보통 타사 온라인 서비스의 등록 계정에 로그인해야 합니다. 이 서비스 운영 주체는 소셜 미디어 사이트, 하드웨어 플랫폼 소유사, 게임 서비스 등 다양합니다. 언리얼 엔진 4의 Identity 인터페이스는 이 서비스와의 계정 관련 상호작용을 처리하며, 사용자 인증 및 액세스 토큰 획득 관련 기능을 제공합니다. 1. 인증 함수 Login Login() 함수는 로컬 플레이어의 계정 정보를(FOnlineAccountCredentials) 받아 온라인 서비스에 로그인 시도합니다. 계정 정보를 자동 생성하거나, 명령줄 인수에서 생성하려면, AutoLogin() 함..

[언리얼 C++] Leaderboard 인터페이스(온라인 서브시스템)

Leaderboard 인터페이스는 리더보드를 읽어오고 업데이트하는 온라인 서브시스템입니다. Leaderboard는 플레이어가 친구나 전세계 플레이어들과 게임의 최고 점수를 경쟁하도록 하는 수단을 제공합니다. 게임에는 점수가 있는 모드가 다수 있을 수 있으며, 각 모드는 저마다의 Leaderboard가 있을 수 있습니다. 점수 기록 모드에서는 전통적인 점수 기반 게임의 경우 내림차순으로, 시간을 재는 레이싱 게임의 경우 오름차순으로 순위를 매길 수도 있습니다. Leaderboard 인터페이스는 게임 안에서 Leaderboard를 표시하고 업데이트하는데 필요한 툴을 제공합니다. 1. 점수 획득 방법 Leaderboard에서 점수를 매기는 방법은 세가지가 있으며, 각각 열거형으로 정의됩니다. ELeaderbo..

[언리얼 C++] Friends 인터페이스(온라인 서브시스템)

친구와 게임을 하고 온라인에서 새로운 플레이어를 만나는 것은 많은 온라인 서비스에서 중요한 부분입니다. Friends 인터페이스에는 다른 사용자 추가, 제거, 차단은 물론 사용자의 소셜 친구 목록을 관리하는 기능이 있습니다. 1. 친구 관리 친구 목록은 온라인 서비스 서버에 저장되며 친구 추가 또는 제거, 게임과 세션에 들어가고 나가거나 서비스 로그인/로그아웃으로 세션 중에 변경될 수 있습니다. 따라서 이러한 목록을 관리하려면 서버에 최신 정보를 쿼리한 다음 해당 정보를 캐시에 저장하고 게임에서 사용하는 과정이 필요합니다. 친구 목록 검색 사용자의 친구 목록을 처리하는 첫번째 단계는 보통 ReadFriendsList() 함수를 호출하여 지정된 로컬 사용자가 가진 친구 목록의 최신 버전을 검색하는 것입니다..

[언리얼 C++] External UI 인터페이스(온라인 서브시스템)

일부 온라인 서비스는 게임 콘솔처럼 전용 디바이스에서 실행되는 경우라면 특히나, 특정 작업을 실행할때마다 뜨는 표준화된 내장 유저 인터페이스가 있습니다. 예를 들어 친구 추가, 매치 참가를 위한 초대 전송, 신용 카드 등록과 같은 작업을 하면 게임과 무관한 별도의 양식, 오버레이, 화면, 워크플로를 통해 사용자가 조작하게 될 수 있습니다. 그렇게 하는 이유는 보통 민감할 수도 있는 작업을 항상 똑같은 방식으로 처리하기 위해서입니다. 그리고 개별 타사가 아닌 온라인 서비스를 소유한 회사가 제어할 수 있도록 하기 위해서입니다. 이 기능이 모든 온라인 서비스에 전부 표준이 아닐 수도 있으며, 어떤 경우에는 한 특정 서비스나 시스템에만 존재할 수도 있습니다. 이처럼 제 각각인 기능을 처리하기 위해, 온라인 서브..

[언리얼 C++] Achievements 인터페이스(온라인 서브시스템)

Achievements는 플레이어에게 도전 과제, 동기 부여, 보상을 제공하여 게임에서 제공하는 내용을 보다 많이 경험할 수 있도록 이끌어 주는 수단으로, 게임을 다시 플레이하는 가치를 높이거나 플레이어와 친구들 사이 경쟁을 지원할 수도 있습니다. 다수의 온라인 서비스에서 Achievements에 보상을 주는 기능을 제공하며, 온라인 서브시스템에서는 Achievements 인터페이스를 통해 지원하고 있습니다. 온라인 서브시스템은 Achievements 시스템 사용을 위한 게임 내 함수 기능을 제공하지만, Achievements 자체를 생성, 삭제, 어떤식으로든 수정하는데 관련된 기능을 처리하지는 않습니다. 각 온라인 서비스에서 별도의 백엔드 시스템을 통해 Achievements 관리를 지원하고 있습니다...

[언리얼 C++] 온라인 서브시스템

언리얼 엔진에서는 온라인 플랫폼 관련 다양한 서브시스템을 제공해줍니다. 이를 온라인 서브시스템이라고 합니다. 온라인 서브시스템 및 그 인터페이스는 Steam, Xbox, Live, Facebook 등의 온라인 서비스 기능을 공통된 방식으로 액세스할 수 있는 방법을 제공합니다. 여러 플랫폼에 출시하거나 여러 온라인 서비스를 지원하는 게임을 만들때, 온라인 서브시스템을 사용하면 개발자는 각 지원 서비스에 맞게 구성만 조정해주면 됩니다. 1. 디자인 철학 온라인 서브시스템은 근본적으로 다양한 온라인 서비스와 비동기 통신을 처리하도록 설계되었습니다. 네트워크 연결 속도, 서버 지연시간, 백엔드 서비스 실행 시간 모두 로컬 머신이 알 수 없으므로, 이 시스템과의 상호작용에 시간이 얼마나 걸릴지도 예측할 수 없습니..