1.1. Unity SDK 설치
1.1.1. 설치 환경 및 실행 환경
최소 버전
Unity 2017.1.0 이상 지원
권장 버전
Unity 2019.4.15f1 이상
권장 버전을 사용하지 않을 경우, 아래와 같은 문제가 있습니다.
게임외 앱에서 플레이 중인 음악 볼륨이 작아지는 유니티 버그가 있습니다.
에디터 환경에서 웹소켓 연결이 멈추는 유니티 버그가 있습니다. 이 버그는 에디터 환경에서만 발생하는 이슈로, 안드로이드나 iOS빌드에서는 문제가 없습니다.
1.1.3.11. 항목에서 유니티 버전별 android plugin tools version 사용 방법 참조
"USING MEMORYADRESSES FROM MORE THAN 16GB OF MEMORY" 메시지와 함께 앱 실행시 크래쉬가 발생할 수 있습니다. (관련 이슈)
1.1.2. SDK 파일 구성
전달받은 KakaoGameSDK_Unity_[버전].zip 파일은 다음과 같은 파일들로 구성되어 있습니다.
파일 | 설명 |
---|---|
KakaoGameSDK.unitypackage |
|
SampleApp.zip |
|
ApiReference.zip |
|
1.1.3. SDK 설치
1.1.3.1. Unity 패키지 파일 import하기
먼저 Unity3d툴에서 게임 프로젝트를 오픈합니다.
KakaoGameSdk.unitypackage를 실행하면, Unity3d툴에서 import할 수 있는 메뉴가 뜹니다. 모든 항목이 체크된 상태로 import를 진행합니다.
Android용 카카오게임 SDK와 iOS용 카카오게임 SDK는 모두 Unity 패키지 내에 포함되어 있습니다. 별도로 해당 SDK를 설치할 필요는 없습니다.
1.1.3.2. 카카오게임 SDK 설정 인스펙터 열기
Unity 패키지 파일 import가 되면, Unity3d툴 메뉴에 Kakao라는 메뉴가 새로 생긴걸 확인할 수 있습니다.
|ConfigureSDK를 클릭하면, 아래와 같이 카카오게임 SDK 설정이 가능한 인스펙터가 열립니다.
1.1.3.3. 카카오게임 속성 설정
제일 먼저 카카오게임 속성 설정을 해야 합니다. 먼저 설정 항목에 대한 설명을 확인하시길 바랍니다.
카카오게임 SDK관련 속성
키 | 타입 | 필수 | 설명 | 예시 |
---|---|---|---|---|
App Id | String | O | 카카오 파트너센터 > 게임 관리 > 앱 선택 > 게임 세부정보 에서 확인할 수 있습니다. | 103815 |
App Secret | String | O | 카카오 파트너센터 > 게임 관리 > 앱 선택 > 게임 세부정보 에서 확인할 수 있는 Native App Key 와 동일합니다. | 951b75bf17fe0885ab5106ba2a9f9bc9 |
Debug Level | String | X | SDK 로그 출력 레벨을 설정합니다. "Verbose", "Debug", "Error", "None" 중 하나를 선택할 수 있습니다. | None |
아래 그림과 같이 카카오게임 속성을 설정하도록 합니다.
설정 이후 잘 설정되었는지 확인하기 위해 Check configuration setting 버튼을 클릭합니다.
잘 설정되어있지 않을 경우, 아래와 같이 원인 문구가 나옵니다.
아래의 경우는 유효하지 않은 앱아이디를 사용하고 있어서 발생합니다.
기술PM님이 전달받은 앱아이디가 잘 등록되었는지 확인합니다. 잘 등록되어 있을 경우, 기술PM님께 문의부탁드립니다.
1.1.3.4. 카카오 멀티앱 로그인 기능 사용시 필요한 설정
SDK 3.11.0 버전부터 iOS의 경우 카카오 멀티앱 로그인을 지원하게 됩니다.(Android는 기존처럼 키해시로 지원가능)
그에 따라 멀티 앱 로그인을 사용하고 싶은 게임에서 각각 게임 프로젝트 유니티 인스펙터 상에서 Kakao MultiApp Login 체크 박스를 클릭 후에 빌드합니다.
중요 : 기존처럼 하나의 앱에서 사용할 게임들은 저 체크박스를 해제 상태로 두시면 됩니다.(저걸 켜면 redirect uri 설정이 잘못될 수 있어서 사용하지 않는 앱에서는 반드시 해제 상태로 두어야 합니다.)
1.1.3.5. 푸시 정보 설정 해제(Android only)
채널링은 카카오 푸시를 사용하지 않으므로 체크해제 합니다.
푸시를 사용하지 않으므로, Push Setting 아래의 Push 체크 박스를 클릭합니다.
3.7.0SDK 이후 버전을 사용할 경우) 유니티 상의 gradle script에서도 해당 스크립트 부분을 제거해준다.
1.1.3.6. 구글 정보 설정
게임에서 구글(구글게임 포함) 인증을 사용할 경우, 설정 하도록 합니다.
구글 인증을 사용할 경우, Google 체크 박스를 클릭합니다.
iOS앱에서 구글 인증을 할 경우, iOS 클라이언트 ID를 설정합니다.
안드로이드앱에서 구글 인증하거나, 구글 게임 인증을 사용할 경우, Webapp Client ID를 설정합니다.
구글 인증시, 기본 퍼미션외 추가로 더 사용자의 동의를 받을 퍼미션이 있다면, Add버튼을 눌러서 추가하도록 합니다. 없을 경우, 해당 과정은 생략합니다.
1.1.3.7. 페이스북 정보 설정
게임에서 페이스북 인증을 사용할 경우, 설정 하도록 합니다.
페이스북 인증을 사용할 경우, Facebook 체크 박스를 클릭합니다.
페이스북 App Key를 등록합니다.
페이스북 App Title을 등록합니다. 페이스북 로그인창이 뜰때, 노출되는 타이틀입니다.
페이스북 인증시, 기본 퍼미션외 추가로 더 사용자의 동의를 받을 퍼미션이 있다면, Add버튼을 눌러서 추가하도록 합니다. 없을 경우, 해당 과정은 생략합니다.
페이스북에서 제공하는 SDK 에서는 인증 시 Read 퍼미션과 Publish 퍼미션을 동시에 요청할 수 없기 때문에 카카오 SDK를 통한 페이스북 인증 시에는 Read 퍼미션만 추가하 실 수 있습니다.
(Publish 퍼미션: "publish" 나 "manage" 로 시작하는 퍼미션 이나 "ads_management", "create_event", "rsvp_event" 등)
때문에 Publish 관련 기능이 필요한 경우에는 Publish 퍼미션으로 추가 인증을 받거나 ShareDialog 같은 페이스북 SDK에서 제공하는 Publish API 를 사용하셔야 합니다.
1.1.3.8. Signin with Apple 정보 설정
게임에서 Signin with Apple을 사용할 경우, 설정 하도록 합니다.
Signin with Apple을 사용할 경우, SigninWithApple 체크 박스를 클릭합니다.
애플 어드민에서 발급받은 ClientId 항목을 입력합니다.
1.1.3.9. Signin with Apple 관련 빌드 스크립트 설정
유니티 버전별로 signin with apple 관련 설정이 추가로 필요합니다.
Assets/Kakaogame/Editor/KGPostBuild.cs 파일내에 다음 코드 블럭의 pre-defined value(UNITY_2018_4_12)를 수정해야 합니다.
#if UNITY_2018_4_12 if (KGSharedData.instance.useSigninWithApple) KGIosSupport.AddSigninWithAppleCapability(buildPath); #endif |
현재는 개발에서 사용중인 2018.4.12 버전에 대해서만 분기처리 되어 있기 때문에 개발사에서 적용중인 유니티 버전을 추가로 적용해야 합니다.
예) 2019.2.8 사용 중이라면 #if UNITY_2018_4_12 || UNITY_2019_2_8 형태로 추가해서 사용해야 합니다.
만약, 사용중인 유니티 버전을 추가 후에 위의 코드에서 빌드 에러가 발생한다면, 해당 유니티 버전이 signin with apple capabilities를 추가하는 기능을 지원하지 않는 버전입니다.
그런 경우라면 우선 ios 타겟으로 빌드 후에 빌드된 Xcode project 상에서 수동으로 signin with apple capabilities를 추가해줘야 합니다.(참고 : https://kakaogames.atlassian.net/wiki/spaces/KS3GFC/pages/413631668/1.3+iOS+SDK#1.3.3.6.-%EC%B9%B4%EC%B9%B4%EC%98%A4%EA%B2%8C%EC%9E%84-SDK-%EC%86%8D%EC%84%B1-%EC%84%A4%EC%A0%95 참고)
1.1.3.10. Android Permission 설정
unitypackage를 import 후에 Assets/Plugins/Android/AndroidManifest.xml 파일에 게임에서 사용할 permission을 추가
<uses-permission android:name="android.permission.XXXXXX" /> 형태로 추가
1.1.3.11. Android 빌드 설정 및 빌드(3.7.0 이전)
Unity3d툴에서 File -> Build Settings... 메뉴를 선택합니다.
아래와 같이 "Build Settings"창에서 Platfrom을 Android로 설정하고, "Player Settings..."버튼을 클릭합니다.
카카오게임 SDK의 안드로이드 최소 지원 SDK 버전은 15입니다. Settings for Android -> Other Settings -> Minimum API Level을 15이상으로 설정합니다.
Build 버튼을 클릭하여 빌드합니다.
1.1.3.12. Android 빌드 설정 및 빌드(3.7.x)
Unity3d툴에서 File -> Build Settings... 메뉴를 선택합니다.
3.7.0이후 버전 부터는 Android Gradle build를 지원합니다. Build System을 Gradle(New)로 선택합니다.
각 앱별로 넣어야 할 설정파일들이 있어서 바로 apk 빌드가 아닌 Android Studio로 Export Project를 선택합니다.
Export 버튼을 클릭하여 Android Studio Project를 Export 합니다.
1.1.3.13. Android 빌드 설정 및 빌드 (3.8.0 이후)
3.8.0 버전 부터는 별도의 프로젝트 Export 없이 바로 apk 빌드를 지원합니다.
다만, apk 빌드를 지원할 시에는 SDK 에서 제공하는 Assets/Plugins/Android/mainTemplate.gradle 파일을 수정하면 안 됩니다.(추가하고 싶은 라이브러리나 리소스 추가하는 것은 상관 없습니다.)
apk 빌드를 지원하기 위해서는 유니티에 포함된 gradle library 버전이 맞아야 하기 때문에 권장 유니티 버전을 사용하셔야 합니다.
유니티 내 안드로이드 Gradle 버전 확인
유니티 설치폴더/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-cli-{VERSION}.jar -> 해당 버전이 유니티에서 사용하는 gradle 버전
gradle 버전별 안드로이드 플러그인 버전 사용 가이드 (https://developer.android.com/studio/releases/gradle-plugin 참고)
gradle 버전에 맞는 plugin 버전 사용
예) gradle 2.14 버전 사용 -> classpath 'com.android.tools.build:gradle:2.1.0 형태로 설정
1.1.3.14. Android 빌드 설정 시 Http 사용 설정
targetSdkVersion을 28 버전 이상으로 설정하고 http 통신을 사용하는 게임은 아래와 같은 설정이 필요합니다.
카카오 게임 SDK 내부에서는 http를 사용하지 않습니다. 개발사에서 cdn등 이슈로 http 콜이 필요한 경우에만 설정합니다.
Kakao SDK v3.8.3 이상 버전 사용 필수
Unity Inspector 내에 Etc Setting(Use as needed) -> Domains to use HTTP(Android) 항목에 Add 버튼을 통해 게임에서 사용할 http domain을 추가
1.1.3.15. Android 빌드 시에 추가 설정사항(윈도우 환경에서 빌드시에만 해당)
1.1.3.9 Step에서 다운로드 받은 google-services.json 파일을 xml파일로 변경해야 하는 프로세스가 있는데, 구글에서 제공하는 파이썬 스크립트를 실행해야 합니다.
그래서 배포시에 Assets/Plugins/Editor/generate_xml_from_google_services_json.py 파일을 제공하는데, 이 스크립트를 실행하기 위해서 파이썬 CLI가 설치되어 있어야합니다.
(Mac 환경에서는 기본적으로 python CLI가 포함되어 있어서 별도의 설정단계 필요 없음)
파이썬 CLI를 설치후에 환경변수에 설정해서 아무 path에서도 프로세스를 실행할 수 있도록 설정하는 단계가 필요합니다. (Download Link : https://www.python.org/downloads/ )
1.1.3.16. iOS 빌드 설정 및 빌드
Unity3d툴에서 File -> Build Settings... 메뉴를 선택합니다.
아래와 같이 "Build Settings"창에서 Platfrom을 iOS로 설정하고, "Player Settings..."버튼을 클릭합니다.
카카오게임 SDK의 iOS 최소 지원 버전은 8.0입니다.
Build 버튼을 클릭하여 빌드합니다. 빌드가 성공하면, Xcode 프로젝트가 생성됩니다.
Xcode 프로젝트를 열고, "Capabilities" 탭의 "Keychain Sharing" 옵션을 ON으로 바꾸고 속성에 KakaoGameAccessGroup을 추가합니다.
1.1.3.17. 게임 내 지원 언어 리소스
라이브러리에서 게임 내 지원 언어 외 추가적인 언어 팩이 있을 때, 해당 언어를 제거하고 싶다면 아래 위치의 폴더를 제거 해주시면 됩니다.
iOS
Unitypackage import한 폴더 기준으로 Assets > Kakaogame > iOSPlugins > KakaoGameFramwork > KakaoGameResources.bundle 파일을 찾아서 '패키지 내용보기' 를 클릭한다.
제거 하고 싶은 언어의 폴더를 삭제한다.
Android
Unitypackage import한 폴더 기준으로 Assets > Kakaogame > AndroidPlugins > KakaoGameSDK.plugin 파일을 찾아서 '패키지 내용보기' 를 클릭한다.
제거하고 싶은 폴더의 xml 파일을 삭제한다. 예)일본어를 삭제하려면 res > values-ja 아래에 kakao_game_sdk_strings.xml / zinny_sdk_strings.xml 파일 두개를 삭제한다.
주의) values폴더에는 영어 리소스가 포함된 xml 파일이 있는데, 언어 리소스 외에 다른 파일들은 삭제하지 않도록 주의한다.
1.1.4. 유니티 에디터 로그인
1.1.4.1. 유니티 에디터 상에서의 카카오 로그인 환경 설정
카카오게임 SDK 3.4.0 버전부터 유니티 에디터 상에서 카카오 로그인 및 카카오 관련 기능을 사용할 수 있습니다.
페이스북 유니티 SDK가 로그인 시키는 방식과 유사한 방식을 채택하여 구현하였습니다.
우선 카카오 개발자 사이트 내에서 카카오 게임 앱 정보에서 웹 플랫폼을 활성화 시킨다. (처음에 앱등록을 한 상태에서 기본적으로 활성화 되지 않으므로 웹 플랫폼을 활성화 시켜야 함)
활성화 된 웹 플랫폼 링크를 클릭하면 아래와 같은 화면이 나오는데, 아래의 화면에서 사이트 도메인에 "https://kakao-sdk-release.s3.amazonaws.com"을 추가해준다.
그리고 앱 키 정보에 나열된 것들 중에서 JavaScript 키 정보가 있는데, 해당 정보를 다음 단계에서 사용한다.그리고 2 단계에서 언급했던 JavaScript Key를 유니티 에디터 인스펙터 상에 Editor Setting > Use Kakao Editor Login 항목(3.4.0부터 추가됨)을 체크하고 InputField에 입력한다.
이렇게 하면 유니티 에디터 상에서 카카오 로그인을 사용할 준비는 다 되었다.
1.1.4.2. 유니티 에디터 상에서의 카카오 로그인 사용
위와 같이 환경 설정 후에 유니티 에디터 상에서 카카오 로그인을 할 수 있습니다. 사용 방법은 아래 가이드를 참고하시면 됩니다.
로그인시에 Start 호출 → Login 호출 후에 지원하는 IDP 로그인 창 노출 확인 후 카카오 로그인 선택
카카오 인증 정보를 입력 받을 수 있는 UI가 노출됨과 동시에 PC / Mac에 설정된 default web browser로 카카오 로그인 페이지 노출
로그인 페이지에서 카카오 계정으로 로그인 버튼을 누르면 최초에 카카오 계정으로 로그인 팝업이 떠서 로그인이 가능하고 웹 페이지 캐싱에 의해 로그인 한 적이 있으면 바로 로그인 한 응답이 웹 페이지에 노출
웹페이지에 응답으로 노출된 정보를 모두 복사해서 유니티 에디터 상으로 다시 돌아와서 입력창에 입력 후에 OK 버튼
위와 같은 과정을 다 거치면 카카오 인증이 완료되고, 인증된 정보 에디터 환경(C# SDK)에서 해당 정보를 가지고 지니 플랫폼에 로그인해서 정상적으로 playerId와 zat발급 및 로그인 프로세스 완료.
1.1.5. Unity SDK 사용시 주의사항
1.1.5.1. PlayerPref class 사용시 참고
iOS / Android Native SDK에서 내부로직 상 저장이 필요한 값들을 해당 앱 데이터에 저장하는 로직 존재.
개발사에서 게임 데이터 정리를 위해 PlayerPref deleteAll 호출하는 경우 있음 -> 이 경우 SDK에서 필요로 인해 저장한 데이터 삭제되게 되어 SDK 오동작이 발생.
개발사에서 사용하는 key / value를 정리해서 개발사에서 deleteAll이 아닌 deleteKey API를 사용해서 게임에서 저장한 게임 데이터만 삭제하도록 구현해야 함.