Unity/Unity Cloud(UGS)

[Unity] UGS - Remote Config

달시_Dalsi 2024. 10. 23. 00:37

 

Remote Config란?

Remote Config는 실시간으로 게임 내 설정을 변경할 수 있는 기능을 제공합니다. 이를 통해 코드를 다시 빌드하거나 앱 스토어에 업데이트하지 않고도 게임 내의 다양한 설정값을 쉽게 수정할 수 있습니다. 예를 들어, 게임 속 아이템 가격, 레벨 난이도, 광고 빈도 등을 실시간으로 변경할 수 있습니다.

 

왜 Remote Config를 사용해야 할까?

게임 개발 중 또는 출시 후, 플레이어 피드백이나 데이터 분석에 따라 게임을 즉각적으로 수정하고 싶은 경우가 많습니다. Remote Config는 이럴때 유용하게 쓰입니다. 개발자들이 앱을 다시 빌드하거나 배포하는 데 시간을 낭비하지 않고, 실시간으로 변경 사항을 적용할 수 있는 것이 큰 장점입니다.

 

설정 방법

1. Unity 프로젝트 준비

먼저 UGS와 연결된 Unity 프로젝트가 필요합니다. Unity Editor에서 Window > Package Manager로 이동해 Remote Config 패키지를 설치하세요.

 

2. Unity Cloud 설정하기

먼저 UGS와 연결된 Unity 프로젝트가 필요합니다. Unity Editor에서 Window > Package Manager로 이동해 Remote Config 패키지를 설치하세요.

 

3. Remote Config 대시보드에서 설정 값 추가

Unity Dashboard에서 Remote Config 탭을 열고 원하는 변수를 추가하세요. 예를 들어, gameDifficulty 같은 변수에 'easy', 'medium', 'hard'와 같은 값을 설정할 수 있습니다. 이를 통해 플레이어 세그먼트에 맞춰 다르게 적용할 수 있습니다.

 

이후 테스트로 진행할 변수를 하나 생성해줍니다.

 

변수 생성 완료 후 Publish를 눌러서  변수 사용 준비를 마칩니다.

 

 

코드 작성

using System.Threading.Tasks;
using Unity.Services.RemoteConfig;
using Unity.Services.Authentication;
using Unity.Services.Core;
using UnityEngine;

public class remoteconfig : MonoBehaviour
{
    // 사용자 속성을 저장할 구조체 (현재 빈 상태로 정의됨)
    public struct userAttributes { }

    // 앱 속성을 저장할 구조체 (현재 빈 상태로 정의됨)
    public struct appAttributes { }

    // Start 메서드에서 Init 메서드 호출 (비동기 처리)
    async void Start()
    {
        await Init();
    }

    // 원격 설정 초기화 및 인증 처리 메서드
    async Task InitializeRemoteConfigAsync()
    {
        // Unity 서비스 초기화
        await UnityServices.InitializeAsync();

        // 원격 설정을 사용하려면 인증이 필요하므로, 익명 로그인을 시도
        if (!AuthenticationService.Instance.IsSignedIn)
        {
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
        }
    }

    // 서비스 초기화 및 설정 데이터 가져오기 메서드
    async Task Init()
    {
        // 인터넷 연결을 확인 후, 연결이 되어 있으면 원격 설정 및 인증 초기화
        if (Utilities.CheckForInternetConnection())
        {
            await InitializeRemoteConfigAsync();
        }

        // 원격 설정 데이터 가져오기 완료 시 호출될 핸들러 등록
        RemoteConfigService.Instance.FetchCompleted += ApplyRemoteSettings;

        // 원격 설정 데이터를 서버에서 가져옴 (userAttributes, appAttributes 사용)
        RemoteConfigService.Instance.FetchConfigs(new userAttributes(), new appAttributes());
    }

    // 서버에서 받은 원격 설정 데이터를 적용하는 메서드
    void ApplyRemoteSettings(ConfigResponse configResponse)
    {
        // 서버에서 가져온 설정 데이터를 출력
        Debug.Log("RemoteConfigService.Instance.appConfig fetched: " + RemoteConfigService.Instance.appConfig.GetInt("Test_Value2"));
    }
}

 

 

 

테스트 결과

 

위 사진처럼 변수명, 변수값들을 정상적으로 가져올 수 있습니다.

 

 

마무리

Remote Config는 실시간으로 게임을 제어할 수 있는 매우 유용한 도구입니다. 변수값을 즉각적으로 조정하고, 다양한 A/B 테스트를 진행하며, 코드 수정 없이 손쉽게 게임의 다양한 부분을 조정할 수 있습니다.

 


https://www.youtube.com/watch?v=RL3-VY8runI