로그인 기능 - 2부 backend 서버를 이용한 로그인 및 데이터 저장

“뒤끝서버”를 이용하여, 회원가입하고 로그인하여 유저의 정보를 생성하고 게임에 필요한 데이터를 쉽게 관리할 수 있다.

1.뒤끝서버

“뒤끝서버”는 게임 서버에 전반적인 sdk를 지원하고 “뒤끝베이스”, “뒤끝챗”, “뒤끝매치”, “뒤끝펑션”을 통해 서버에서 여러가지를 진행할 수 있다. 그 중 이 프로젝트에는 “뒤끝베이스”와 “뒤끝매치”가 사용되었다. 서버를 사용한다고 해서 무조건적인 요금을 내야하는 것은 아니고, 사용된 데이터 처리량만큼만 요금을 부과하고 일정 처리량 이상이 되어야만 요금이 부과되기 때문에 프로젝트를 진행하는데 있어서 문제가 없었다. 전반적으로 개발자 메뉴얼이 한 눈에 이해하기 편했고, 정보가 정확하게 나와있어 사용하는데 문제가 없었다. 회원가입한 후 사용하면 된다.

2.SDK 설치 및 유니티에 적용

SDK 다운로드
위의 사이트와 같이 진행하면 된다.

3.backend code

뒤끝서버를 먼저 초기화를 진행시키고 사용하여야 된다.

using BackEnd;

void Start()
{
    // 첫 번째 방법 (동기)
    var bro = Backend.Initialize(true);
    if(bro.IsSuccess())
    {
        // 초기화 성공 시 로직
    }
    else
    {
        // 초기화 실패 시 로직
    } 
}

동기 방식

using BackEnd;

void Start()
{
    // 세 번째 방법 (비동기)
    Backend.InitializeAsync(true, callback => {
        if(callback.IsSuccess())
        {
            // 초기화 성공 시 로직
        }
        else
        {
            // 초기화 실패 시 로직
        }    
    });
}

비동기 방식
이후에 회원가입 또는 로그인 코드를 진행하면 되는데, 이전에 크롤링을 통해 로그인한 정보와 합쳐진다.

    public void OnClickSignUp() 
    {
        BackendReturnObject bro = Backend.BMember.CustomSignUp(idInput.text, paInput.text); //InputField 정보를 통해 회원가입

        if (bro.IsSuccess()) // 회원가입에 성공했을 시
        {
            BackendReturnObject login = Backend.BMember.CustomLogin(idInput.text, paInput.text); // 회원가입한 후 바로 로그인
            Backend.BMember.CreateNickname(_name.Substring(0, _name.Length - 1)); //닉네임을 설정(크롤링을 통해 닉네임을 가져올 때 '님'이라는 글자도 같이 따라와 1글자 삭제)
            Debug.Log("회원가입 성공");
            Param char_main_data = new Param(); //뒤끝 서버와 통신을 할 때 넘겨주는 파라미터 클래스
            char_main_data.Add("Level", 1); //Param에 데이터 추가
            char_main_data.Add("xp", 0);//Param에 데이터 추가
            char_main_data.Add("money", 1000);//Param에 데이터 추가
            char_main_data.Add("win", 0);//Param에 데이터 추가
            char_main_data.Add("lose", 0);//Param에 데이터 추가
            char_main_data.Add("rating", 500);//Param에 데이터 추가
            Dictionary<int, int> monster = new Dictionary<int, int> //Dictionary 데이터도 추가 가능(아래는 게임에 필요한 카드 정보이다.)
            {
                {160001, 2},
                {160002, 2},
                {160003, 2},
                {160004, 2},
                {160005, 2},
                {160006, 2},
                {160007, 2},
                {150008, 2},
                {150009, 2},
                {160010, 2},
                {160011, 2},
                {160012, 2},
                {141013, 2},
                {141014, 2},
                {141015, 2},
                {160016, 2},
                {160017, 2},
                {160018, 2},
                {160019, 2},
                {160020, 2},
                {160021, 2},
                {150022, 2},
                {160023, 2},
                {141024, 2},
                {160025, 2},
                {160026, 2},
                {160027, 2},
                {160028, 2},
                {160029, 2},
                {160030, 2},
                {160031, 2},
                {160033, 2},
                {160034, 2},
                {160035, 2},
                {160037, 2},
                {160039, 2},
                {160040, 2},
                {160042, 2},
                {160043, 2},
                {160045, 2},
                {160047, 2},
                {160048, 2},
                {160049, 2},
                {160050, 2},
                {160051, 2},
                {160052, 2},
                {160053, 2},
                {141054, 2},
                {160055, 2},
                {150056, 2},
                {160057, 2},
                {150058, 2},
                {140059, 2}
            };
            Dictionary<int, int> magic = new Dictionary<int, int>
            {
                {260001,2},
                {260002,2},
                {260003,2},
                {260004,2},
                {250005,2},
                {250006,2},
                {260007,2},
                {250008,2},
                {260009,2},
                {240010,2},
                {250011,2},
                {250012,2},
                {250013,2},
                {250014,2},
                {250015,2},
                {250016,2},
                {260017,2},
                {260018,2},
                {260019,2},
                {250020,2},
                {250021,2},
                {250022,2},
                {250023,2},
                {240024,2}

            };
            Dictionary<int, int> equip = new Dictionary<int, int>
            {
                {360001,2},
                {360002,2},
                {340003,2},
                {330004,2},
                {330005,2},
                {320006,2},
                {320007,2},
                {310008,2},
                {360009,2},
                {340010,2},
                {350011,2},
                {350012,2},
                {340013,2},
                {320014,2},
                {310015,2},
                {360016,2},
                {360017,2},
                {350018,2},
                {350019,2},
                {340020,2},
                {320021,2},
                {310022,2},
                {360023,2},
                {360024,2}
            };
            Dictionary<int, int> deck = new Dictionary<int, int>();
            char_main_data.Add("deck", deck);
            char_main_data.Add("monster", monster);
            char_main_data.Add("magic", magic);
            char_main_data.Add("equip", equip);
            BackendReturnObject card = Backend.GameData.Insert("character", char_main_data); //param에 추가한 데이터를 서버에 입력
            Debug.Log(card.GetStatusCode());
        }
        else // 회원가입에 실패 시(이미 회원가입이 되어있는 경우)
        {
            BackendReturnObject vro = Backend.BMember.CustomLogin(idInput.text, paInput.text); // 로그인
            if (vro.IsSuccess())
            {
                Debug.Log("로그인 성공");
            }
        }
    }

뒤끝서버를 통해 회원가입을 할 수 있고, 로그인을 할 수 있으며 서버에 유저정보를 저장하고 관리할 수 있다.