유니티 - 뒤끝 연동 및 유저 로그 받기

Justin·2022년 9월 17일
0

유니티

목록 보기
5/9

유저 로그를 받는 이유

멘토링 지원을 받는 곳에서 일반 유저들 대상 온라인 FGT(Focus Group Test)를 할 기회가 생겼다.

온라인으로 진행 되기에 옆에서 유저 플레이를 지켜보며 어떤 부분이 미흡한지 등 생상한 유저의 피드백을 듣기 어렵기에 유저의 행동 데이터를 통해 피드백 분석을 해보고자 한다.

왜 뒤끝?

처음에 여러 업체들의 로그 방식을 고려했었다.

UGS(Unity Gaming Service) 전 Unity Analytics
간단한 로그만 찍을 것이고, 유니티에서 제공하면 아주 편할 것 같아 UGS를 사용 하고자 했으나 현재 제작중인 버전(2021.2.11F)에서는 동작하지 않았다.. 새로 LTS 버전으로 프로젝트를 생성하고 해보니 됨

참고로 UGS는 매우 간편하고 사용하기 쉬웠다. :) 다만 일정 사용이상 비용 발생하니 주의

Gamespark
Amazon에서 인수한 백엔드 서비스로 많은 분들이 사용한다. 하지만 현재 리뉴얼 중(?)이라 서비스 가입이 안되는점과 기존에 존재하던 개꿀 인디 요금제가 사라져 사용하기 어려워 제외하였다.

뒤끝
어느순간 부터 국내 인디 게임에서 뒤끝에 대한 얘기가 자주 나와서 궁금했었는데, 이번 기회에 알아보니 국내 서비스 이다보니 '한글 문서화가 잘 되어 있어' 사용에 아주 편리했다. 또한 일부 기능 제외하고는 요금 발생 시점에 알아서 중단되니 테스트용으로는 제격이었다.

뒤끝 사용하기

뒤끝 홈페이지로 이동하여 회원가입을 우선 해주자.

회원 가입

기본 가이드

회원 가입을 하고 나면 이렇게 기본 가이드 창이 나오는데, 가장 먼저 내가 사용할 프로젝트 부터 생성해주면 된다.

프로젝트 생성

여기도 나오지만 일부 기능을 제외하고는, 추가 요금 발생 시점에 중단 되기에 잘 체크해야한다.

게임과 연동하기

프로젝트 생성까지 마치면 게임과 연동하라고 가이드가 나오는데, 가이드가 매우 잘 되어 있다.

SDK 다운로드 후 Import

패키지 다운로드
패키지를 다운 받고 유니티에 넣어 Import를 한다.

그 뒤 뒤끝에서 인증키 가져온다.

유니티 상단에 The Backend -> Edit Settings에 보면 인증키를 입력하는 곳이 보인다. 여기에 그 키 값들을 넣어준다.

각 항목별 자세한 설명이다. 궁금하면 한 번 읽어봐도 좋다.

키 값들을 넣어주고, 아래에 Generate 버튼을 눌러주면 Console에 성공 로그가 찍힐 것 이다. 혹시 실패하면 뒤끝 홈페이지 에서 에러 내용을 찾아보길 바란다.

뒤끝 연동 초기화

가장 먼저 게임이 시작할 때 뒤끝 연동 처리를 해주기 위한 작업이 필요하다. 초기화 작업에는

동기/비동기, 직접 입력/Initialize() 등 다양한 방법이 있지만 가장 간단한 동기, Initialize()로 간단하게 연결하고자한다. *다른 방법은 메뉴얼 참고


정상적으로 연동 됐다는 로그가 출력된다. 이제 로그가 잘 찍히는 것을 확인했으니 회원 처리를 해줄 것이다.

게스트 로그인

뒤끝에서는 다양한 방법의 로그인 방법을 제공해준다. 나는 싱글 게임이기에 유저 관리에 용이하도록 게스트 로그인 정도만 활용할 것이다. *다른 방법은 회원가입 메뉴얼 참고

BackendReturnObject bro = Backend.BMember.GuestLogin( "게스트 로그인으로 로그인함" );
if(bro.IsSuccess())
{
  Debug.Log("게스트 로그인에 성공했습니다");
}

정말 간단하게 이정도만 해주면 로그인 처리가 된다. 처음 가입하는지, 이미 존재하는지 등은 알아서 처리를 해주기 때문에 정말 간편하다.

로그인 한 횟수 세기

이제 이 유저가 얼마나 자주 우리 게임에 접속했는지 확인하기 위해 카운트를 세고자한다.

일반 변수를 사용하면 종료 시 초기화 되기 때문에 유니티에서 제공하는 PlayerPrefs를 사용할 것이다.

public class BackendManager : MonoBehaviour
{
    int loginCount = 0; // 숫자를 세기 위한 변수
    public static BackendManager instance; // 싱글톤
    private void Awake()
    {
    	// 싱글톤
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else Destroy(this.gameObject);
		
        // 저장된 키 값이 있는지 체크
        if (PlayerPrefs.HasKey("LoginCount"))
        {
            loginCount = PlayerPrefs.GetInt("LoginCount");
            print("시작 시 로그인 카운트 체크" + loginCount);
        }
        else
            loginCount++;
    }

우선 로그를 어디서든 사용할 수 있게 하고, 씬이 이동하더라도 파괴되거나 중복 되지 않게 싱글톤 설정을 해준다. 이후 이전에 PlayerPrefs로 저장한 값이 있다면 가져온다.

    private void OnApplicationQuit()
    {
        PlayerPrefs.SetInt("LoginCount", loginCount);
        print("종료 시 로그인 카운트 체크" + loginCount);
    }

그리고 종료할 때 PlayerPrefs를 저장해주면 캐시에 잘 저장되어 다음에 로그인 할 때 불러와질 것이다.


    void Start()
    {
        var bro = Backend.Initialize(true);
        if (bro.IsSuccess())
        {
            // 초기화 성공 시 로직
            BackendReturnObject guestLoginBro = Backend.BMember.GuestLogin("게스트 로그인으로 로그인함");
            if (bro.IsSuccess())
            {
                Debug.Log("게스트 로그인에 성공했습니다");

                Param param = new Param();
                param.Add("Login_Count", loginCount);
                //로그 보관 기간을 최대 10일로 지정하고 싶을 경우
                Backend.GameLog.InsertLog("Login", param, 10);
            }
        }
        else
        {
            // 초기화 실패 시 로직
            Debug.Log("게스트 로그인에 실패 ㅠㅠ");
        }
    }
}

이제 Start에서는 위에서 배운대로 로그인 처리를 하고, 로그인 처리를 마친 후 뒤끝으로 로그를 전송한다.

				Param param = new Param();
                param.Add("Login_Count", loginCount);
                //로그 보관 기간을 최대 10일로 지정하고 싶을 경우
                Backend.GameLog.InsertLog("Login", param, 10);

이렇게 하고 테스트 한 뒤에 뒤끝 콘솔로 이동해보면 내가 남긴 로그가 잘 들어와 있는걸 확인할 수 있다.

이를 csv 파일로 받아서도 확인 할 수 있다.


정말 정말 편리하고 쉽게 유저 로그를 받아오는 것을 해봤다. 간략하게만 해본것이기에 이것보다 더 효율적으로 관리하는 방법이 있을 거 같으니 더 공부하고 이 데이터들을 보기 좋게 잘 만들어봐야겠다.

profile
인디 게임을 만들며 공부하고 있습니다.

0개의 댓글