SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
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
실시간 멀티플레이 시연
랜덤 매칭
메시지 전달
네트워크 콜백 구현
이 후 프로젝트 방향
이 후 프로젝트 방향

- 현재 구현되어 있지 않은 기능 추가 구현
(클라우드 저장소 지원, 도전과제 관련 추가 기능)
- 지금 적용 방식을 더 간소화
(안드로이드 프로젝트 내부 패키지 이름 수정 등의 작업을 해야 하는 번
거로움 제거)
- 본 플러그인을 적용시킨 데모 앱을 안드로이드 마켓에 공개
(기능을 소개하고, 홍보 효과 기대)

Más contenido relacionado

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

모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016Jongwon Kim
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)Jongwon Kim
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)Jongwon Kim
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기NAVER D2
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?NAVER Engineering
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptxMUUMUMUMU
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례SangIn Choung
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automationWooKyun Jeon
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
 
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by NetflixJi-Woong Choi
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolhyunae lee
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolhyunae lee
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발LGU+
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementDong Chan Shin
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
Flipper 불완전 정복
Flipper 불완전 정복Flipper 불완전 정복
Flipper 불완전 정복Sewon Ann
 

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

모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptx
 
jhj port.
jhj port.jhj port.
jhj port.
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automation
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
 
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 
React native development
React native developmentReact native development
React native development
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory management
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
Flipper 불완전 정복
Flipper 불완전 정복Flipper 불완전 정복
Flipper 불완전 정복
 

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

  • 1. Google Play Game Services 와 Unity3D 연동하기 남경수
  • 3. 프로젝트의 목적 Unity3D 개발자들의 Google Play Game Services 적용 간소화 iOS / Android / Web을 모두 지원하는 구글 서비스 특성을 살려 타 플랫폼 간 도전과제, 점수 경쟁을 지원하고 실시간 멀티플레이 지원 (현재 실시간 멀티플레이는 안드로이드만 지원함)
  • 4. 개발 및 테스트 환경 Macbook Air 2011 Intel Core i5 4GB Mavericks Unity3D MonoDevelop Eclipse SHW-M440S Android 4.1.2 LG-LU6200 Android 4.0.4
  • 5. 플러그인 구조 유니티 프로젝트에서 개발자가 플러그인 클래스로 명령 요청 (이때 싱글톤 객체가 생성되며, 이 객체가 콜백함수 수신자 / 상태 저장 역할을 한다.) 플러그인 인스턴스에서 AndroidJavaObject를 생성하고, 실행되어있는 액티비티와 연결한다. 연결이 수립되면 이 객체를 통해 명령을 요청한다.
  • 6. 플러그인 구조 안드로이드 액티비티에서 수행된 명령들의 결과나 콜백이 실행되면 UnityPlayer 객체를 통해 다시 Unity3D 프로젝트로 전달된다. UnityPlayer의 명령 전달은 현재 Unity3D 액티비티에 존재하는 오브젝 트를 찾아 수행하게 되는데, 이 과정을 위해 플러그인을 싱글톤 패턴 으로 개발했다.
  • 7. 플러그인 구조 액티비티에 저장된 정보를 가져오기 위해 UnityPlayer 인스턴스 사용 (계정 이름, ID, 로그인 상태 정보, 접속되어있는 다른 유저 리스트 등)
  • 9. 플러그인 지원 기능 - 로그인 기능 수행 - Google+ 계정을 통해 앱을 연결하며, 로그인 처리 - 이 과정 이후 Sizzling.Instance.Init()을 통해 플러그인 초기화시 자동 로그인 - 로그아웃 기능 수행 - 게임에서 로그아웃 (앱 연결은 끊어지지 않는다.) - 이 과정 이후 Sizzling.Instance.Init()을 실행해도 자동 로그인은 되지 않는다.
  • 10. 플러그인 지원 기능 - 도전과제 액티비티 열기 - 도전과제 달성도 갱신 도전과제 ID를 통해 한번에 잠금해제하거나 일정 비율 달성 갱신 가능 - 점수판 열기 통합된 점수판을 열거나, 개별 점수판 액티비티 호출 가능 - 점수판 기록 갱신
  • 11. 플러그인 지원 기능 - 친구 초대 최소 1명 ~ 최대 3명 초대 가능 (서비스에서 제한하는 최대 인원) 초대한 유저에게 푸쉬 알림 전달 - 받은 초대장 관리 받은 초대 정보들을 확인하고 수락 / 거절 가능 -멀티플레이 유저간 메시지 전달 지원 유저 접속 ID를 통해 개별적으로 전달하거나 모든 접속 유저에게 전달 가능 - 네트워크 접속 관련 콜백 함수 등록 지원
  • 12. * 등록 가능한 콜백 및 호출 순서
  • 13. 플러그인 연동 시연 #1 로그인 도전과제 잠금해제 점수판 기록 갱신 각 요소 갱신 확인
  • 14. 플러그인 연동 시연 #2 실시간 멀티플레이 시연 랜덤 매칭 메시지 전달 네트워크 콜백 구현
  • 16. 이 후 프로젝트 방향 - 현재 구현되어 있지 않은 기능 추가 구현 (클라우드 저장소 지원, 도전과제 관련 추가 기능) - 지금 적용 방식을 더 간소화 (안드로이드 프로젝트 내부 패키지 이름 수정 등의 작업을 해야 하는 번 거로움 제거) - 본 플러그인을 적용시킨 데모 앱을 안드로이드 마켓에 공개 (기능을 소개하고, 홍보 효과 기대)