레이블이 Google Play Game Service인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Google Play Game Service인 게시물을 표시합니다. 모든 게시물 표시

2014년 9월 24일 수요일

Google Play Game Service for Unity In Android_Step2. GPGS Plugin 활용을 위한 Manager Class 생성 & 사용 in Unity


 Explain.
앞서 GPGS활용을위한 셋팅까지 완료한경우
Unity Project에서 GPGS의 기본적은 기능(업적 , 리더보드)를 활용하기위한 Class 생성.
아래 방법은 여러가지 방법중 하나이므로 프로젝트 상황에 맞게끔 구현하여 사용하면 됩니다.


1. Google Game service의 리더보드,업적의 경우 Id값을 기준으로
실행이 이뤄지므로 Developer Console의 업적,리더보드에서
Get Resources를 클릭하여 ID값을 복사

2.위 처럼 텍스트 형식으로 Export하여 복사하여 둡니다.

이후 아래처럼 GPGS Manager Class를 생성한 뒤 Scene에 배치후
이벤트 관련 동작시(게임종료)
업적,리더보드관련 메소드를 호출하여 동작을 확인해 보실수있습니다.
리더보드 , 업적 확인 관련 UI호출은
ShowLeaderBoard, ShowArchievement
메소드를 호출하여 확인가능.
이상으로 GPGS의 기본적인 기능들 활용방법 포스팅 마치겠습니다.


GPGSManager.cs
using UnityEngine;
using System.Collections;
using GooglePlayGames;
using UnityEngine.SocialPlatforms;

public class GPGSManager : MonoBehaviour {

    private static GPGSManager sInstance;

    public static GPGSManager GetInstance
    {
        get
        {
            if(sInstance == null) sInstance = this;

            return sInstance;
        }
    }

    void Start()
    {
        init();
    }

    void init()
    {
        PlayGamesPlatform.DebugLogEnabled = true;

        PlayGamesPlatform.Activate();

        Social.localUser.Authenticate((bool success) =>
        {
            if (success) Debug.Log("Sign in Success");
            else Debug.Log("Sign in Fail");
        });
    }

    public void PostScore(float time)
    {
        Social.ReportScore((long)(time * 1000), IDs.LB, (bool success) => {
            if (success) Debug.Log("Post Success");
            else Debug.Log("Post Fail");
        });
    }

    public void ProgessiveAchievement(AchievementType type, int value)
    {
        if (type == AchievementType.PlayCount)
        {
            //TODO : 업적 상황 달성시 postAchievement(업적ID);
        }

        if(type == AchievementType.PlayTime)
        {
            //TODO : 업적 상황 달성시 postAchievement(업적ID);
        }
    }

    public void ShowLeaderboard()
    {
        Social.ShowLeaderboardUI();
    }

    public void ShowAchievement()
    {
        Social.ShowAchievementsUI();
    }


    private void postAchievement(string key)
    {
        if (PlayerPrefs.GetInt(key) == (int)AchievementState.UNLOCK) return;
        Social.ReportProgress(key, 100, (bool success) => {
            if (success)
            {
                PlayerPrefs.SetInt(key, (int)AchievementState.UNLOCK);
            }
        });
    }
}

// 업적 , 리더보드 ID Class
public class IDs
{
    public const string LB = ""; // 리더보드 ID
    //TODO : 업적 ID 추가.
}

public enum AchievementType
{
    PlayCount,
    PlayTime
}

public enum AchievementState
{
    LOCK,
    UNLOCK
}

2014년 9월 23일 화요일

Google Play Game Service for Unity In Android_Step1. GPGS Plugin 설치후 기본적인 셋팅


Notice.
 - 이전의 포스팅에서의 준비사항이 모두 준비된 상태에서 진행. (준비사항)
 - Developer console사용법등의 기타 방법은 자세하게 정리X


1. GPGS와 연동할 application 등록.
2.Game Service 또한 등록.
3.Game Service 등록시 출력되는 Application ID값 복사.
4.Unity 프로젝트에 Google Play Service Plugin Import후
메뉴바의 Google Play Services -> Android Setup 실행
위에서 복사해둔 ID값 입력 -> Setup 버튼 클릭

5. 이후 다시 Developer Conlose로 돌아와서
Game Service 메뉴의 업적 추가
기본적으로 최소 5개 이상으로 등록
e.g) 점수 xxx 이상 달성
플레이 횟수 x 회 이상 달성 등.

6. 게임에서 사용할 리더보드 또한 등록.
최소 1개 이상.

여기까지 진행했을경우 기본적으로 GPGS Plugin을 활용하여
업적,리더보드 기능을 활용할수 있게끔 셋팅이 완료된 상태이다.
Very Easy..
이후 리더보드,업적 활용법에 대해 정리하겠습니다.

2014년 9월 3일 수요일

Google Play Game Service for Unity In Android_Step0. Index & 준비 사항.



Summary.
 - Anroid & IOS App 작업진행시 각종 게임 관련 기능들을 제공해주는 플랫폼중 
가장 널리 알려진 Google play game service를 Unity에서 활용하는 기본방법 포스팅.
 - GPGS의경우 기본적은 리더보드 , 업적등의 기능 외에도 Multiplay, cloud game save 등의 기능까지 제공해주므로 여러가지 방면으로 유용한 플랫폼.

Requirements.
 - Unity 4.3 이상(only Pro)
 - Android SDK
 - Google Play Services library 4.2.42 이상 (SDK Manager에서 설치 가능)
 - Google Developer 계정(테스트용으로 진행할 App 등록)
 - GPGS Plugin 최신버전 - 다운로드 

Index
 -step 0 : 준비 사항
 -step 1 : GPGS Plugin 설치후 기본적인 요구사항 셋팅
 -step 2 : GPGS Plugin 활용을 위한 Manager Class 생성 후 사용



이번 포스팅은 여기까지 아주 기본적인 기능들면 정리할 생각 추후 멀티플레이 , 클라우드 게임 세이브 등의 기능도 정리 할 예정.