16
Google Play Game Services 와 Unity3D 연동하기 남경수

2013 11 unity3 d integration google play game services(남경수)

  • Upload
    -

  • View
    1.088

  • Download
    5

Embed Size (px)

DESCRIPTION

 

Citation preview

Google Play Game Services 와 Unity3D 연동하기

남경수

프로젝트의 목적

Unity3D 개발자들의 Google Play Game Services 적용 간소화

iOS / Android / Web을 모두 지원하는 구글 서비스 특성을 살려

타 플랫폼 간 도전과제, 점수 경쟁을 지원하고 실시간 멀티플레이 지원

(현재 실시간 멀티플레이는 안드로이드만 지원함)

프로젝트의 목적

Macbook Air 2011

Intel Core i5

4GB

Mavericks

Unity3D

MonoDevelop

Eclipse

SHW-M440S

Android 4.1.2

LG-LU6200

Android 4.0.4

개발 및 테스트 환경

유니티 프로젝트에서 개발자가 플러그인 클래스로 명령 요청 (이때 싱글톤 객체가 생성되며, 이 객체가 콜백함수 수신자 / 상태 저장 역할을 한다.)

플러그인 인스턴스에서 AndroidJavaObject를 생성하고, 실행되어있는 액티비티와 연결한다.

연결이 수립되면 이 객체를 통해 명령을 요청한다.

플러그인 구조

안드로이드 액티비티에서 수행된 명령들의 결과나 콜백이 실행되면 UnityPlayer 객체를 통해 다시 Unity3D 프로젝트로 전달된다.

UnityPlayer의 명령 전달은 현재 Unity3D 액티비티에 존재하는 오브젝트를 찾아 수행하게 되는데, 이 과정을 위해 플러그인을 싱글톤 패턴으로 개발했다.

플러그인 구조

액티비티에 저장된 정보를 가져오기 위해 UnityPlayer 인스턴스 사용

(계정 이름, ID, 로그인 상태 정보, 접속되어있는 다른 유저 리스트 등)

플러그인 구조

플러그인 지원 기능

- 로그인 기능 수행 - Google+ 계정을 통해 앱을 연결하며, 로그인 처리

- 이 과정 이후 Sizzling.Instance.Init()을 통해 플러그인 초기화시 자동 로그인

- 로그아웃 기능 수행 - 게임에서 로그아웃 (앱 연결은 끊어지지 않는다.)

- 이 과정 이후 Sizzling.Instance.Init()을 실행해도 자동 로그인은 되지 않는다.

플러그인 지원 기능

- 도전과제 액티비티 열기

- 도전과제 달성도 갱신

도전과제 ID를 통해

한번에 잠금해제하거나

일정 비율 달성 갱신 가능

- 점수판 열기

통합된 점수판을 열거나,

개별 점수판 액티비티 호출 가능

- 점수판 기록 갱신

플러그인 지원 기능

- 친구 초대

최소 1명 ~ 최대 3명 초대 가능

(서비스에서 제한하는 최대 인원)

초대한 유저에게 푸쉬 알림 전달

- 받은 초대장 관리

받은 초대 정보들을 확인하고

수락 / 거절 가능

-멀티플레이 유저간

메시지 전달 지원

유저 접속 ID를 통해 개별적으로 전달하거나

모든 접속 유저에게 전달 가능

- 네트워크 접속 관련 콜백 함수 등록 지원

플러그인 지원 기능

* 등록 가능한 콜백 및 호출 순서

플러그인 연동 시연 #1 로그인

도전과제 잠금해제

점수판 기록 갱신

각 요소 갱신 확인

플러그인 연동 시연 #2 실시간 멀티플레이 시연

랜덤 매칭

메시지 전달

네트워크 콜백 구현

이 후 프로젝트 방향

이 후 프로젝트 방향

- 현재 구현되어 있지 않은 기능 추가 구현

(클라우드 저장소 지원, 도전과제 관련 추가 기능)

- 지금 적용 방식을 더 간소화

(안드로이드 프로젝트 내부 패키지 이름 수정 등의 작업을 해야 하는 번거로움 제거)

- 본 플러그인을 적용시킨 데모 앱을 안드로이드 마켓에 공개

(기능을 소개하고, 홍보 효과 기대)