PlayFab 캐릭터 (How to create character)와 가상화폐

2022. 8. 30. 16:46기술/네트워크

반응형

1. 캐릭터 생성

 

빠르게 요점만 설명하겠습니다.

일단 경제에 판매목록이 있어야 합니다.

 

캐릭터를 판매할 것입니다.

일단은 캐릭터 생성 전에 경제에 대해 조금이라도 읽어보는 것을 추천합니다.

경제 - PlayFab | Microsoft Docs

 

경제 - PlayFab

경제성의 랜딩 페이지.

docs.microsoft.com

 

통화를 추가합니다. 게임 내 통화 (Gold, Gem) 

이 통화는 플레이어 정보/가상통화에서도 확인할 수 있습니다.

통화 - PlayFab | Microsoft Docs

 

통화 - PlayFab

게임 관리자의 경제 섹션에 있는 통화 탭과 가상 통화를 구성하는 방법에 대해 설명합니다.

docs.microsoft.com

최초 입금 10000은 초기 캐릭터 제공 시 10000 골드가 필요하기 때문입니다.

경제/카탈로그에 '캐릭터 구매' 아이템을 추가합니다.

외에도 캐릭터 구매권 아이템, 아이템 뽑기권 아이템, 캐릭터 이름 변경권 아이템등 지급 가능한 아이템을 의미합니다.

아이템 만들때 아이템 ID, 캐릭터 만들기용 토큰 체크가 중요합니다.

아이템 ID를 Character로 지정, 표시 이름은 캐릭터 구매, 누적가능도 일단 체크해 두는 것을 추천합니다.

이 캐릭터 아이템이 구매된 상태여야 합니다. 다음 함수를 통해 구매합니다.

가상화폐로 구매한다는 내용의 API입니다. (앱스토어의 구매함수X)

        // 기본제공 캐릭터
        PlayFabClientAPI.PurchaseItem(new PurchaseItemRequest()
        {
            CatalogVersion = "Characters",
            ItemId = "Character",      
            VirtualCurrency = "GL",
            Price = 10000
        },

플레이어 인벤토리 사용 - PlayFab | Microsoft Docs

 

플레이어 인벤토리 사용 - PlayFab

PlayFab API를 사용하여 플레이어 인벤토리를 보고 작동하는 방법을 설명합니다.

docs.microsoft.com

플레이어 / 인벤토리에서 지급을 할 수도 있습니다. (게임 운영)

캐릭터를 생성합니다

            PlayFabClientAPI.GrantCharacterToUser(new GrantCharacterToUserRequest()
            {
                CatalogVersion = "Characters",
                CharacterName = "캐릭터이름",
                ItemId = "Character"
            },

result 결과로 CharacterId를 얻을 수 있습니다.

캐릭터가 생성됨을 확인할 수 있습니다

캐릭터 정보를 갱신합니다

PlayFabClientAPI.UpdateCharacterData(new UpdateCharacterDataRequest()
                {
                    CharacterId = chr.playfabID,
                    Data = chrData.PlayFabData
                },

Data는 뒤끝 서버의 Param 을 변형시킵니다.

캐릭터 데이터가 갱신됨을 확인할 수 있습니다.


2. 캐릭터 삭제

PlayFabEditorExtensions.unitypackage 설치

창 > PlayFab > Editor Extensions 열기

ENABLE SERVER API 체크 하시면 PlayFabServerApi.cs 파일이 ENABLE 되면서

다음 코드를 사용할 수 있습니다.

PlayFabServerAPI.DeleteCharacterFromUser(new PlayFab.ServerModels.DeleteCharacterFromUserRequest() 
{
    PlayFabId = m_PlayFabID,
    CharacterId = listDeletePlayer[i].CharacterId,
    SaveCharacterInventory = false                        
},
ResSuccess =>
{
    Debug.LogFormat("캐릭터 삭제 완료");
},
ResError =>
{
    Debug.LogFormat("<color=red>캐릭터 삭제 실패 {0}</color>", ResError.GenerateErrorReport());
});

3. 가상화폐

불러오기

    void LoadGoodsPlayFab()
    {
        PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest()
        {

        },
        success =>
        {
            int gold = success.VirtualCurrency["GL"]; // 플레이팹 게임관리자에서 설정한 문자열           
        },
        error =>
        {
            Debug.LogFormat("<color=red>가상화폐 로드 실패 {0}</color>", error.GenerateErrorReport());
            // 네트워크 에러 창
        });
    }

가상화폐 (골드) 사용 후 플레이팹 서버의 정보를 갱신해야 할 때

일단 타이틀 설정 > API 기능 >

v 클라이언트가 가상 통화를 추가할 수 있도록 허용

v 클라이언트가 가상 통화를 뺄 수 있도록 허용

체크해주어야 합니다.

 

아마 경제에 구매 아이템류를 등록 시킨 다음 PlayFabClientAPI.PurchaseItem 함수를 통해 구매하며 가상 통화를 차감하기를 유도한 것으로 보입니다.

This API must be enabled for client access in the Game Manager API Features settings - Playfab Community

 

This API must be enabled for client access in the Game Manager API Features settings - Playfab Community

 

community.playfab.com

    // GameInfoOperator는 뒤끝 서버에서 사용하는 가감 계산용
    void UpdateGoodsPlayFab(int amount, GameInfoOperator gameInfoOperator)
    {
        switch (gameInfoOperator)
        {
            case GameInfoOperator.addition: // 추가
                PlayFabClientAPI.AddUserVirtualCurrency(new AddUserVirtualCurrencyRequest()
                {
                    VirtualCurrency = "GL",
                    Amount = amount
                },
                success =>
                {
                	// 변경된 재화양
                    int gold = success.Balance;
                },
                error =>
                {
                    Debug.LogFormat("<color=red>골드 추가 실패 {0}</color>", error.GenerateErrorReport());
                    // 네트워크 에러 창
                });
                break;

            case GameInfoOperator.subtraction:
                PlayFabClientAPI.SubtractUserVirtualCurrency(new SubtractUserVirtualCurrencyRequest()
                {
                    VirtualCurrency = "GL",
                    Amount = amount
                },
                success =>
                {
                	// 변경된 재화양
                    int gold = success.Balance;
                },
                error =>
                {
                    Debug.LogFormat("<color=red>골드 사용 실패 {0}</color>", error.GenerateErrorReport());
                    // 네트워크 에러 창
                });
                break;
        }
    }

참조하면 좋은 블로그

고라니 유니티2D: 가상화폐 상점 아이템 인벤토리ㅣPlayFab (goraniunity2d.blogspot.com)

 

가상화폐 상점 아이템 인벤토리ㅣPlayFab

PlayFabManager.Cs 소스입니다 using System.Collections; using System.Collections.Generic; using UnityEngine; using PlayFab; using Pl...

goraniunity2d.blogspot.com

 

 

기타 : 안드로이드 영수증 검증

Getting started with PlayFab, Unity IAP, and Android - PlayFab | Microsoft Learn

 

Getting started with PlayFab, Unity IAP, and Android - PlayFab

How to set up (In-App Purchasing) IAP using PlayFab, the Unity + IAP Service, and the Android Billing API.

learn.microsoft.com

기본으로 설정된 Catalog에 아이템을 추가해야 함. 그렇지 않으면 카타로그에 상품(Item)이 없다고 나옴.

안드로이드 인 앱 구매 영수증

 

 

기타 : 길드 관련

Groups - Create Group - REST API (PlayFab Groups) | Microsoft Learn

 

Groups - Create Group - REST API (PlayFab Groups)

Learn more about Groups service - Creates a new group.

learn.microsoft.com

 

반응형