주요 개념
Understand key concepts to use Unity Gaming Services effectively.
읽는 시간 1분최근 업데이트: 한 달 전
시작하기 전에 Unity Gaming Services의 기반이 되는 몇 가지 주요 개념을 잠시 살펴보겠습니다.
서버 측 게임 시스템
특히 멀티플레이어 게임과 같은 라이브 게임에서는 플레이어 데이터를 관리할 수 있는 단일 장소가 중요합니다. 각 플레이어의 디바이스에서 해당 플레이어의 데이터를 관리하는 대신, 모든 플레이어 디바이스와 통신하는 중앙 서버가 중요한 게임 결정을 처리합니다. 이는 플레이어가 부당한 이득을 얻거나, 구매나 노력으로 얻어야 할 리소스를 편법으로 획득하는 부정 행위 전략을 완화하는 데 도움이 될 수 있습니다. 마찬가지로, 라이브 이벤트와 경쟁 기능이 모든 플레이어에게 공정하게 제공되도록 하려면 게임 데이터와 결정을 클라우드에서 관리하는 것이 중요합니다. Unity Gaming Services를 통해 다음을 수행할 수 있습니다.- Cloud Save 서비스를 사용하여 플레이어 데이터를 안전하게 클라우드에 저장합니다.
- Economy와 Cloud Code 서비스를 사용하여 클라우드에서 경제와 게임 로직을 실행합니다.
비동기 코드
다른 온라인 서비스와 마찬가지로 Unity Gaming Services도 모두 비동기 작업을 기반으로 합니다. 즉, 클라이언트가 서비스 요청에 대한 응답을 기다리느라 게임이 중단되지는 않습니다. 게임플레이, UI, 애니메이션은 서비스 요청이 백그라운드에서 처리되는 동안 계속 진행될 수 있습니다. 이를 위해 Unity Gaming Services는 TAP(작업 기반 비동기 패턴)를 사용하여 C#으로 비동기 코드를 비교적 쉽게 작성할 수 있도록 지원합니다. 이미 Unity에서 코드를 작성하는 데 익숙한 경우 비동기 로직에 사용할 수 있는 코루틴을 이해하고 있을 것입니다. 코루틴은 여전히 전경에서 진행 중인 일을 제어하는 데 유용하지만, 비동기 작업은 웹 요청과 같이 백그라운드에서 발생하는 일을 관리하는 데 보다 적합합니다. UGS 기술 자료 전반에서asyncawaitasyncTaskawaitasync자세한 내용은 Microsoft의 비동기 프로그래밍 개념 가이드를 참고하십시오.async Task RefreshPlayerWallet(){ // Use an animation to show the player something is happening. waitIndicator.gameObject.SetActive(true); // Download this player's currency statuses from UGS; // this asynchronous task won't interrupt the animation. var newWalletData = await EconomyManager.RefreshWalletData(); // Once you have the downloaded data, update your UI. walletView.Refresh(newWalletData); waitIndicator.gameObject.SetActive(false);}
SDK API와 REST API 비교
Unity Gaming Services에 프로그래머틱 방식으로 액세스하는 방법에는 두 가지가 있습니다.- SDK(클라이언트) API
- REST(웹) API