플레이팹 정복기

gugyeoj1n·2023년 9월 15일
0

게임 서버

목록 보기
3/3

바야흐로 2023년 ....

얼렁뚱땅 게임소프트웨어 팀플에서 카트라이더를 개발하기로 결정

클라이언트는 팀원들께 맡기고 혼자 서버를 맡기로 결정

포톤은 맛이 없어 신문물 플레이팹을 들이기로 결정

아니 근데 이거 히트다 히트 그래서 API 쓰는 법 정리해 두기로 결정

처음

플레이팹 스튜디오에서 타이틀 ID와 비밀 키를 복사해 PlayFabSharedSettings 에 입력

로그인

public void TryLogin(string email, string password)
{
    var request = new LoginWithEmailAddressRequest
    {
        Email = email,
        Password = password
    };
        
    PlayFabClientAPI.LoginWithEmailAddress(request, OnLoginSuccess, OnError);
}
    
private void OnLoginSuccess(LoginResult result)
{
    Debug.Log("LOGIN SUCCESS");
}

매개변수로 이메일과 비밀번호를 받기 때문에 Input Field 에 연결하는 과정이 필요
PlayFabClientAPI 에 구글, 스팀 등 로그인 옵션이 매우 많으니 요긴하게 쓸 수 있을 듯
OnLoginSuccess 함수에 로비 씬 호출, 유저 데이터 가져오기 등 사용 가능

회원가입

public void TryRegister(string email, string password, string username)
{
    var request = new RegisterPlayFabUserRequest
    {
        Email = email,
        Password = password,
        Username = username
    };
        
    PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnError);
}

private void OnRegisterSuccess(RegisterPlayFabUserResult result)
{
    Debug.Log("REGISTER SUCCESS");
}

로그인과 마찬가지로 입력을 받음
RegisterPlayFabUserRequestRequireBothUsernameAndEmail 옵션 추가할 수 있음
로그인과 마찬가지로 OnRegisterSuccess 에 다음 기능 넣으면 됨

가상 화폐 정보 얻기

string currencyCode = " ";

private void GetPlayerCurrency()
{
    var request = new GetUserInventoryRequest();
    PlayFabClientAPI.GetUserInventory(request, OnGetPlayerCurrencySuccess, OnError);
}
    
private void OnGetPlayerCurrencySuccess(GetUserInventoryResult result)
{
    int virtualCurrencyBalance = result.VirtualCurrency[currencyCode];
    Debug.Log("Player's " + currencyCode + " balance: " + virtualCurrencyBalance);
}

스튜디오에서 가상 화폐를 만들 때 2자리 영어 대문자의 코드를 입력하는데, currencyCode 에 그 코드를 넣고 실행하면 됨
이 가상 화폐는 레거시이고, 옵션에 충전 비율(단위/일) 이 있는데 이거 0 이상의 값을 넣으면 방치형 게임마냥 재화가 쌓인다 ;;

친구

// 친구 목록 가져오기
public void GetFriends()
{
    PlayFabClientAPI.GetFriendsList(new GetFriendsListRequest(),
        result =>
        {
            if (result.Friends.Count != 0)
            {
                foreach (FriendInfo friend in result.Friends)
                {
                    Debug.Log(friend.Username);
                }
            }
            else
            {
                Debug.Log("NO FRIENDS");
            }
        }, OnError);
}

// 친구 추가
public void AddFriend(string targetUsername)
{
    var request = new AddFriendRequest
    {
        FriendUsername = targetUsername
    };
        
    PlayFabClientAPI.AddFriend(request, result =>
        {
            Debug.Log("NEW FRIEND");
        },
        OnError);
}

// 친구 삭제
public void RemoveFriend(FriendInfo target)
{
    PlayFabClientAPI.RemoveFriend(new RemoveFriendRequest
    {
        FriendPlayFabId = target.FriendPlayFabId
    }, result =>
    {
        Debug.Log("FRIEND REMOVED");
    }, OnError);
}

FriendInfo 클래스에는 친구의 닉네임, 플레이팹 ID 등이 저장돼 있음
AddFriend 메소드에서 AddFriendRequest 를 작성할 때, 닉네임 말고도 플레이팹 ID, 이메일 등을 재료로 요청을 보낼 수 있음

근데 플레이팹의 친구 기능은 A가 B에게 요청을 보내고 B가 수락해야 상호 친구 관계가 생성되는 것이 아니라, A가 B에게 요청을 보내면 일방적으로 A만 B의 친구가 되고 B는 아무 것도 모르고 있는 방식이다. 상호 친구 관계가 되려면 A -> B 요청과 B -> A 요청이 둘 다 있어야 하는 것 !




이번 학기 내내 쓸 듯 ..

1개의 댓글

comment-user-thumbnail
2023년 10월 18일

반갑습니다 소통해요

답글 달기