1. 유니티 세팅
1-1. 안드로이드 빌드 세팅 및 키세팅


- TargetAPILEvel은 gpgs 구글 현 정책상 35이상을 사용해야함.
- 사진은 33으로 되었지만 추후에 수정함.


- Key 생성하여 Password 입력.
-> password은 잊어버리면 곤란하므로 꼭 기록해놓기!
-> 프로젝트를 나가면, 패스워드는 사라지므로 다시 재입력 필요.
1-2. GPGS 에셋 적용

- 11버전 이상은 로그아웃 기능 제공 x 및 자동 로그인.
- 로그아웃기능을 고려하여 10버전 다운.

- 압축을 풀고, CurrentBuild 경로에서 해당 Unity패키지를 프로젝트에 추가.

- Enable 선택
-> 만약, 오류가 걸린다면 해결 방법

- OtherSettings - COnfiguration에서 Http관련 Always allowed로 변경.

- publishing settings에서 Custom Main Gradle Template, Custom Gradle Properties Template을 True로 변경.
- 참고: https://meta-jun.tistory.com/253
-> 그럼에도 불구하고 Unity6와 gpgs10.14버전 호환 문제로 enable과 build 둘 중 하나가 안되는 문제로 Unity6에서 22.3.62f1버전으로 내려 해결.
-> 현재는, GPGS와 구글플레이콘솔 정책 문제로, GPGS를 2.1.0으로 올림.
유니티 22.3.62f1와 GPGS 2.1.0 사용중.
(현재 상태)

- 성공적으로 완료했다면, Force Resolve 다시 재수행.
1-3. 안드로이드 빌드 수행 및 구글 콘솔앱 등록

- 씬 등록 및 Build App Buindle(Google Play) True 설정.

- 빌드 완료 시, 아직 구글서비스 등록을 안했기에 무시하고 OK선택.

- 구글 플레이 콘솔에서 내부 테스트를 선택하고 테스터선택하여 등록.

- 내부 테스트 - 새버전 만들기 - 서명키 선택 - Google에서 생성한 키 사용 클릭.

- 그럼 다음과 같이 앱번들 업로드가 가능하고, 빌드한 앱번들을 업로드.


- 새버전 출시하기 에서 빌드한 abb파일을 올렸으나, 현기준 api 35이상 Target을 해야하므로 유니티 프로젝트 세팅에서 35로 변경.


- 재업로드 시 버전코드 문제가 발생하면, 버전 코드를 수정해서 업로드.

- 경고는 무시해주고 저장 및 출시 클릭.

- 정상적으로 완료되면 위와 같은 모습을 보임.
1-4. OAuth 체크 인증서 등록


- 사용자 늘리기 - Play 게임즈 서비스 - 설정 및 관리 - 새 Play 게임즈 서비스 프로젝트 만들기 클릭.
- 위 사진과 같이 Google Cloud 콘솔로 들어가 프로젝트를 생성하고, 새로고침 후 클라우드 프로젝트에 만든것을 적용하고 사용 클릭.

- Google Cloud Platform에서 보기 선택.

- 위 정보들 입력. 대상은 외부로 체크.

- OAuth 동의 화면 선택.

- 선택 후 과정을 따라 입력하여 이 화면이 나오면 완성.

- 다시 Google Play Console 설정으로 돌아와 새로 고침 클릭.

- 사용자 인증 정보 추가 클릭.

- 유형은 게임 서버로 설정.
- 인증은 만들어둔 것이 없기에 생성필요.

- 방금전 googlePlatform에서 사용자 인증 정보에 들어가 사용자 인증 정보 만들기에서 OAuth클라이언트ID 선택.

- 유형을 웹애플리케이션으로 바꿔주고 만들기.

- 확인 버튼 클릭.

- 다시 인증으로 돌아와 OAuth클라이언트 새로고침 클릭.

- 만들어 놓은 OAuth 선택 후 변경사항 저장.

- 사용자 인증정보 다시 돌아오면, 게임서버에 추가 된것이 확인 가능.
- 안드로이드도 똑같이 추가 필요.

- 사용자 인증 정보 추가를 선택 후 이번에는 유형을 Android로 설정.
- OAuth 클라이언트 만들기 클릭.

- 이 상태로 방금과 동일하게 OAuth 클라이언트 ID 만들기.

- 지문은 SHA-1 쪽에 작성, 패키지이름을 동일하게 작성 후 만들기 선택.

- 생성 완료 시 확인.

- 새로 고침 후, 방금 만든 클라이언트 설 정 후 변경사항 저장.
- 지금까지 해서 앱 서명 키 인증서 생성 완료.
- 이제는 업로드 키 인증서 생성 필요.

- 앱서명 설정 클릭.

- SHa1 키 복사

- 설정 - 사용자 인증정보 - 사용자 인증정보추가에서 Android로 하여 OAuth클라이언트 만들기 후 창 띄어놓기.
-> 추후 패키지 이름 복사가 필요한 부분.

- 구글 클라우드의 사용자 인증정보에서OAuth클라이언트ID만들기 선택.
- Android 유형으로, 위에 복사해논 패키지이름과 Sha1 복붙.

- 사용자 인증 정보 추가로 돌아가서 방금 전에 만든 OAuth 선택하고 OAuth클라이언트 만들기.

- 완료된 상태.

- 마지막으로, GoogleCloud - OAuth동의화면- 대상에서 프로덕션상태로 변경.
1-5. 유니티 Setup 및 프로젝트 게시


- 사용자 인증 정보에서 리소스 보기 선택 후 리소스 내용 복사.

- GoogleCloud - 클라이언트 - 웹클라이언트의 ID 복사.

- Window - googlePlayGames - Setup - AndroidSetup 에서 위 사진과 같이 리소스내용과 ID 붙이고 Setup 선택.
- 성공적으로 완료하면, 다시 Force Resolve


- 프로젝트 게시하기를 눌러, 속성 오른쪽 화살표 클릭.

- 차세대 ID 사용, 저장된 게임 사용으로 선택.
- 카테고리랑 아이콘 이미지 임시로 추가. 추후에 수정 가능.


- 다시 프로젝트 게시하기 누르고, 출시 - 게임 프로젝트 게시 클릭.
서비스 설정에서 속성이 출시됨으로 변경되면 정상적으로 완료.
1-6. 앱 설정

- 대시보드에서 개인정보처리방침 설정 선택


- 구글에서 제공하는 블로그 생성 사이트 Blogger이용해서 간단히 만든 후 Url 복사해서 붙이기
- 위의 앱 콘텐츠에 관한 정보 입력 모두 설정해주기.

- 위와 같이 타겟층까지 설정.
2. 로그인 및 로그아웃 구현
2-1. 로그인 및 로그아웃 코드

- 자동 로그인

- 수동 로그인

- 로그 아웃
3. 리더보드 및 업적 구현
3-1. Google Play Console 업적 및 리더보드 생성

- Play 게임즈 서비스 - 업적- 업적만들기

- 단계별 업적, 일반 업적 생성시 완료 모습

- Play 게임즈 서비스- 리더보드 - 리더보드 생성

- 숫자형식 리더보드, 기간형식 리더보드 생성 후 완료 모습


- 검토 및 게시 - 출시를 클릭하게 되면, 그 후로 수정 불가능 하므로 주의!


- 리소스 보기 - xml 복사.

- 유니티 구글 플레이 게임즈 Setup 에서 Xml 새로운 것으로 복붙.

- Play게임즈 서비스 테스터에 등록을 해놓아야 테스터계정으로 리더보드나 업적기능사용가능
3-2. 소스 코드


- 리더보드 업데이트는 reportscore 호툴한시점에 되는거로 파악. 또한 불확정한 시점에 업데이트 됨
4. 저장불러오기(구글 클라우드)
4-1. 저장 설정

4-2. 코드

- Save기능을 사용하려면 EnableSavedGames를 설정하여 PlayGamePlatforms 초기화 필요.


- 저장 기능

- 로드 기능

- 삭제 기능
- 주의 사항
- OpenWithAutomaticConflictResolution에서의 매개변수 Datasource.ReadNetworkOnly가 network가 연결되지않은상태에서도 Success로 반환하는 문제가 현재 존재.
-> 이 경우 네트워크가 연결되어있지 않은 상태는 로컬에 저장하고 불러오는 듯함.
- 네트워크가 연결되어있지 않은 상태에서 Data를 저장하는 경우, A기기와 B기기에서 같은 계정을 사용해도, Data를 Load할때 로컬 > 네트워크 순으로 하는 듯함. 따라서, 같은 계정임에도 불구하고 다른 Data상황을 나타냄.
-> 해결방안으로 A기기와 B기기에서 같은 계정으로 로그인 후 Data구조를 똑같게 만들고 난 이후, 다시 네트워크에 따른 데이터 동기화가 적용됨.
- 참고: https://github.com/playgameservices/play-games-plugin-for-unity/issues/2219