개요
Unity 엔진 및 그 생태계는 세계 일류의 플랫폼을 뛰어넙는 게임 개발 플랫폼을 제공함으로써, 많은 플랫폼에서의 게임 개발을 더욱 빠르고 효과적으로 수행하는 동시에, 점점 더 많은 개발자들이 Unity 엔진을 사용해 게임을 개발할 수 있게 합니다.
MSDK for Unity는 Unity 엔진의 강력한 플랫폼 호환 능력을 활용해 Android, iOS 버전의 호환 캡슐화를 실시해 플랫폼 간 차이를 극복하고 Unity 게임에 동일한 액세스 체험을 제공합니다. MSDK for Unity는 또한 MSDK 배치 플러그인과 같은 일련의 보조 액세스 플러그인을 제공하므로, MSDK간단한 게임 정보를 입력한 후에 원클릭으로 MSDK 설정 배치 업무를 완료하는 동시에 소량의 C#코드를 코딩하는 것만으로 MSDK에서 제공하는 기능을 활용할 수 있습니다.
MSDK for Unity는 로그인, 친구 관계 사슬, 공유, 그룹 결합 기능 이외에도 공지 시스템, 내장 브라우저, 전서구 푸시, 데이터 보고, LBS, Crash 분석 등과 같은 다채로운 부가가치 확대 기능을 제공합니다. 이러한 부가가치 모듈은 게임 개발자들이 손쉽게 게임의 추가 기능을 구축할 수 있게 함으로써 게임 자체 경험에 집중할 수 있도록 해 주어, 플레이어들에게 보다 우수한 품질의 게임을 제공하는 것이 가능해 집니다.
액세스 내비게이션
1 사전 요구 사항
1) 먼저 MSDK Unity 버전 획득 여부를 확인하고, 획득하지 않은 경우에는 아래 링크를 클릭해 다운로드하십시오.
2) Java 환경이 설치되어 있어야 하며 환경 변수를 설정해야 합니다.
시스템 변수 설정(참고)
JAVA_HOME : D:/Program Files/java/jdk1.6.0_25
Path : C:\Windows\system32;C:\Windows;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
보다 상세한 절차에 대해서는 인터넷에서 "java 환경 변수 설정”을 검색해 주시기 바랍니다.
3) MSDK for Unity는 Unity4.6.3 이상 버전을 필요로 합니다.
2 MSDK 불러들이기
MSDK의 Unity 버전 패키지 안에는 예시 Example
, 그리고 버전 콘텐츠 Msdk
가 포함되어 있습니다. 다음 절차에 따라 MSDK를 신속히 불러들일 수 있습니다.
1) Unity3D 메뉴 안에서 Assets->Import Package->Custom Package... 클릭
2) MSDK의 Unity 버전 패키지 선택: MSDK_Unity_<version>.unityPackage
그중 version 코드 버전 번호의 예: MSDK_Unity_1.0.3u.unityPackage
3 MSDK 배치
MSDK를 가져온 후에 Unity 메뉴에서 "MSDK" 텍스트 메뉴를 볼 수 있습니다. 아래 절차에 따라 MSDK를 배치해 주십시오.
1) 여기서 MSDK->Deploy Settings를 클릭하면, Inspector 화면에서 MSDK 배치 화면을 표시할 수 있습니다.
2) MSDK 배치 화면에서 게임 정보 입력(패키지 이름, 모바일 QQ appid, 위챗 appid 등)
3) 배치 화면 하단의 "Deploy MSDK" 버튼을 누르면 MSDK 배치를 완료합니다.
4) Project 화면에서, Plugins 디렉토리를 클릭하고 Refresh를 선택한 후 Unitydptj MSDK 파일에 대한 불러오기를 수행하게 합니다.
그중에서 MSDK 배치 화면의 게임 정보는 모두 필수 입력 사항이며, 귀하의 게임 운영 관리를 통해 페이잉(飞鹰) 시스템(dev.ied.com) 상에서 획득할 수 있습니다.
MSDK 배치 화면 항목 설명
필드 | 설명 |
---|---|
Package Name | 게임 패키지 이름 |
MsdkKey | 이 게임의 MSDK 프론트/백그라운드 교류 시 사용하는 id |
QQAppId | 게임의 모바일QQ 개방 플랫폼에서의 AppId |
QQAppKey | 게임의 모바일QQ 개방 플랫폼에서의 AppKey |
WXAppId | 게임의 위챗 개방 플랫폼의 AppId |
Android OfferId | Midas 플랫폼 Android 결제 Id이며, QQAppId와 일치함 |
iOS OfferId | Midas 플랫폼 iOS 결제 id. 내부 자체 연구 게임: 직접 Midas 공식 웹사이트 midas.qq.com에서 ios 애플레키에션을 등록하고 offerid를 생성합니다. 외부 대행 게임: 게임 제품을 RDM 공식 웹사이트 rdm.oa.com에서 애플 정보를 요청하고, 요청이 완료된 후에 계약약 작성 팀 jiaganzheng에서 dev 백그라운드에 기록합니다. 그런 다음, 개발업체는 관리 센터에서 IAP 버전을 추가하고, 추가 완료 후에는 OfferId를 다시 생성합니다. |
주의사항
1) 귀하의 게임에 변화가 발생했을 경우, 2단계에 따라 MSDK를 다시 배치해야 합니다.
2) 귀하께서 MSDK를 배치하기 전에 "Assets/Plugin/Android” 디렉토리에 "AndroidManifest.xml", "project.properties” 두 파일이 있을 경우, MSDK 배치 시에 대체할 수 없으며, 복제본 "Copy_AndroidManifest.xml", "Copy_project.properties"을 생성하십시오. 귀하께서는 복사본 파일을 참고해 수동으로 "AndroidManifest.xml", "project.properties"를 수정하셔야 합니다.
3) Unity에서 도출된 xcode 프로젝트는 반드시 실제 기기에서 테스트새야 합니다.
4) MSDK에서 반환하는 콜백 정보 안에서 문자열 인코딩은 모두 표준 UTF8 인코드입니다.
4 게임 정보 설정
여기서 MSDK->Config Settings를 클릭하면 MSDK 모듈 설정 화면을 호출할 수 있으며, 환경 선택, 공지 스위치, 푸시 스위치 등의 내용이 포함됩니다.
각 설정 항목 옆에는 물음표가 있으며, 마우스를 그 위로 가져가면 해당 항목 설정에 대한 상세한 설명이 표시됩니다.
MSDK 설정 화면 항목 설명
필드 | 플랫폼 | 설명 |
---|---|---|
MSDK_ENV | Android/iOS | MSDK 환경 선택, 통합 및 테스트 시에 테스트 환경 test를 선택할 수 있으며, 정식 발표 시에는 반드시 정식 release를 선택해야 합니다. |
WXTOKEN_REFRESH | Android/iOS | MSDK 위챗에서 자동으로 토큰 새로고침을 켜고 끕니다. 상세 정보는 로그인 모듈 |
PUSH | Android/iOS | 전서구(信鸽) 푸시 기능 스위치 |
needNotice | Android/iOS | MSDK 공지 기능 스위치 |
noticeTime | Android/iOS | MSDK 공지 시스템이 데이터 갱신 시간(네트워크 접속 공지 데이터 요청)을 공지하고, 단위는 분/초(최소 5분)가 됩니다. |
realNameAuth | Android/iOS | 실명 인증 설정, 0: MSDK 실명 인증 UI를 사용해 인증 후에 로그인 페이지로 돌아갑니다. 1: MSDK 실명 인증 UI를 사용하며, 인증 후에 게임에 로그인 진입합니다. 2: 게임 자체 정의 인증 UI를 사용하며 인증 후에 게임으로 돌아갑니다. |
Webview Config | Android/iOS | MSDK 내장 브라우저 슬라이딩 감추기 설정, Portrait Hideable: 브라우저 세로 화면 시에 탐색창슬라이딩 감추기(true의 경우 슬라이딩 감추기 가능) 여부, Landscape Hideable: 브라우저 가로 화면 시에, 탐색창 슬라이딩 감추기 가능 여부 |
BETA | Android | 잉용바오(应用宝) 번호 획득 기능 스위치 |
STAT_LOG | Android | 등대 및 MTA 로그 스위치는, true 설정 시에 상세 로그를 인쇄할 수 있으며, 정식 온라인 시에 false로 설정할 것을 권장합니다. |
CLOSE_BUGLY_REPORT | Android | bugly 보고서 스위치를 끄고, true로 설정하면 crash 보고 기능이 꺼집니다. |
SAVE_UPDATE | Android | 잉용바오(应用宝) 데이터 절약 업데이트 다운로드 기능 스위치 |
GRAY_TEST_SWITCH | Android | 화이트 리스트 제한번호 스위치, 번호 파악 예약은 계약 작성 팀에 신청해야 합니다. |
localLog | Android | SDKLog 스위치 0: 인쇄 안 함, 1: logcat 인쇄, 2: 로컬 파일에 인쇄, 3: logcat 및 로컬 파일 동시 인쇄, 로컬 인쇄 저장, SDCard/MSDK/msdk.log(2.16.0a 이상 버전: /sdcard/Android/data/패키지 이름/files/MSDK/msdk.log 아래) |
Use C11 Library | iOS | C11 컴파일링 라이브러리 사용 여부(Unity5 패키지 생성 시 C11 컴파일링 라이브러리를 사용해야 함) |
Check Config | Android/iOS | MSDK 설정 검사 플러그인 사용 여부, MSDK 설정 검사 플러그인이 Unity에서 Android/iOS 패키지 생성 시에 MSDK 관련 설정이 정확한지 검사함 |
2.16.0 이상 버전 주의사항:
2.16.0 이전 버전에서 2.16.0으로 업그레이드할 경우, 설치 파일 msdkconfig.ini이 다음과 같은 변경을 실시합니다.
1. MSDK 도메인 네임 설정 추가(게임은 수정할 필요 없이 직접 설정 파일 안에 copy)
;이하 설정은 msdk 내부 사용을 위한 것이며 게임에서는 주의할 필요 없음
MSDK_ENV_TEST_URL=http://msdktest.qq.com
MSDK_ENV_RELEASE_URL=http://msdk.qq.com
2. 도메인 네임 선택 설정 추가(게임이 상황에 따라 정확한 환경을 선택)
;정식 환경과 테스트 환경 선택, test는 테스트 환경, release는 정식 환경
MSDK_ENV=test
3. 본래 도메인 네임 설정 솔루션 삭제(MSDK_URL=xxxxx 삭제)
;정식 환경과 테스트 환경을 선택, msdktest.qq.com은 테스트 환경 도메인 네임, msdk.qq.com은 정식 환경 도메인 네임
MSDK_URL=http://msdktest.qq.com(삭제)
MSDKDemo 설정 파일을 참조할 수 있습니다.
5 초기화 코드
1) MSDK 라이브러리 불러들이기
MSDK 인터페이스를 사용해야 하는 c# 스크립트 내에 MSDK 라이브러리를 불러들입니다.
using Msdk;
2) PC 테스트 디버깅 환경 설정
PC 테스트 디버깅 환경은 MSDK에서 Unity 버전을 위해 맞춤 제작한 가상 환경으로, PWindows, Mac 환경 하에서 테스트할 때 가상의 MSDK 데이터(로그인 콜백, 공지 데이터 등)를 반환할 수 있으므로, PC에서 신속하게 MSDK 관련 논리를 검증할 수 있습니다.
a) 스크립트 내에서 PC 테스트 디버깅 환경을 기동합니다.
WGPlatform.SetPCDebug(true);
b) MSDK 메뉴에서 MSDK -> PC Environment Settings을 차례로 클릭하고, Inspector 화면에서 로그인, 공유 등의 이벤트의 가상 콜백 결과를 설정해 게임 논리 검증에 사용합니다.
(./res/config_pc.png)
3) 로그인 콜백을 등록, 플랫폼 풀업 콜백
로그인 콜백, 플랫폼 풀업 콜백은 게임이 관련 인터페이스를 호출하지 않았을 때 촉발할 수 있으므로 게임이 MSDK를 초기화하기 전에 등록해야 합니다.
- 로그인 콜백: 로그인 이벤트 결과 통지, 게임이 모바일QQ/위챗의 로그인 상태에서 로그인 콜백을 기준으로 합니다. 상세 설정에 대해서는 로그인 모듈의 콜백 설정을 참조하십시오.
- 플랫폼 풀업 콜백: 모바일QQ, 위챗 내에서 게임을 풀업할 때 이 콜백으로 돌아갈 수 있으며, 풀업 안에는 풀업 계정, 플랫폼 데이터 투명 정보 등의 정보를 포함합니다. 상세 설정 정보는 로그인 모듈의 다른 계정 처리를 참조하십시오.
MsdkEvent.Instance.LoginEvent += (LoginRet loginRet) =>
{
switch (loginRet.flag)
{
case eFlag.eFlag_Succ:
// 로그인 성공, 각종 토큰을 읽어들일 수 있음
// 게임 TODO: 게임 진입
int platform= loginRet.platform;
if((int) ePlatform.ePlatform_Weixin == platform) {
loginState = "위챗 로그인 성공";
} else if((int) ePlatform.ePlatform_QQ == platform) {
loginState = "QQ 로그인 성공";
} else if((int) ePlatform.ePlatform_QQHall == platform) {
loginState = "로비 로그인 성공";
} else if((int) ePlatform.ePlatform_Guest == platform) {
loginState = "게스트 로그인 성공";
}
break;
// 게임 TODO: 로그인 실패 상황에 대해 각각 분별하여 처리하고, 일반적으로 모두 로그인 페이지로 돌아가 사용자에게 재승인하도록 안내함
case eFlag.eFlag_QQ_UserCancel:
// 플레이어가 승인 취소
case eFlag.eFlag_QQ_LoginFail
// QQ 로그인 실패
case eFlag.eFlag_QQ_NotInstall
// QQ 미설치
case eFlag.eFlag_Local_Invalid:
// 자동 로그인 실패, 로컬 토큰 기한 만료, 새로고침을 포함한 모든 오류
case eFlag.eFlag_WX_UserCancel:
// 플레이어가 승인 취소
case eFlag.eFlag_WX_NotInstall:
// 위챗 미설치
case eFlag.eFlag_WX_NotSupportApi:
// 위챗 버전 지원하지 않음
case eFlag.eFlag_WX_LoginFail:
//위챗 로그인 실패
default:
loginState = "로그인 실패";
message = loginRet.ToString();
break;
}
};
MsdkEvent.Instance.WakeupEvent += (WakeupRet wakeupRet) =>
{
// TODO GAME 여기에서 다른 계정의 논리를 추가 처리
if (eFlag.eFlag_Succ == wakeupRet.flag || eFlag.eFlag_AccountRefresh == wakeupRet.flag) {
// 로컬 계정 로그인 성공 후 직접 게임 진입 가능
// 게임 TODO: 게임 논리 진입
if((int) ePlatform.ePlatform_Weixin == wakeupRet.platform) {
loginState = "위챗 로그인 성공";
} else if ((int)eWakeupPlatform.eWakeupPlatform_QQ == ret.platform){
loginState = "QQ 로그인 성공";
} else if ((int)eWakeupPlatform.eWakeupPlatform_QQHall == ret.platform){
loginState = "로비 로그인 성공";
}
} else if (eFlag.eFlag_UrlLogin == wakeupRet.flag) {
// 로컬에 계정 정보가 없으며 자동 풀업 계정 로그인의 로그인 결과가 OnLoginNotify() 내에서 콜백
} else if (eFlag.eFlag_NeedSelectAccount == wakeupRet.flag) {
// 게임 TODO: 다른 계정 시에, 팝업 메시지를 띄워 사용자에게 게임에서 필요한 로그인 계정을 선택하도록 하고, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출함
Debug.Log("diff account");
isShowDiffAcount = true;
message = "다른 계정입니다!" ;
} (eFlag.eFaigNeedLogin == wakeupRet.flag) {
// 게임 TODO: 유효한 토큰이 없을 경우, 게임에서 로그아웃되며 사용자에게 다시 로그인하게 함
loginState = "로그인 실패";
message = "재로그인하십시오.";
} else {
loginState = "등록되어 있지 않음";
message = "OnWakeupNotify flag : " + wakeupRet.flag + "\ndesc : " + wakeupRet.desc;
WGPlatform.Instance.WGLogout();
}
};
4) MSDK 초기화 C# 계층 및 모바일QQ 승인 항목 권한 설정
MSDK 초기화 C# 계층 및 모바일QQ 승인 항목 권한 설정 후에 Unity 버전의 초기화 작업이 완료됩니다. 그 후에 각 모듈의 설명에 따라 MSDK의 인터페이스를 호출하여 5단계에 따라 게임 패키지를 만들고 실제 환경 결과를 검증합니다.
WGPlatform.Instance.Init();
WGPlatform.Instance.WGSetPermission(ePermission.eOPEN_ALL);
주의사항:
WGSetPermission을 호출하지 않은 경우, 모바일QQ 친구 풀업 시에 100030 오류가 발생할 수 있습니다. 상세 정보는 로그인 모듈 설명 부분의 승인 페이지 설명을 참조하십시오.
6 게임 패키지 도출
MSDK의 배치 및 설정 완료 후에 직접 게임의 Android 설치 패키지 또는 iOS의 Xcode 프로젝트를 도출할 수 있습니다.
Android
Android 패키지 생성에 대해서, 여기서는 3가지 방식을 참조할 수 있습니다. 첫 번째 방식은, Unity 내에서 Apk 패키지를 도출하는 것으로 가장 편리합니다. 네이티브 코드를 수정해야 할 경우, 제 3의 방식으로 게임 자체의 Jar 패키지를 도출한 하 다시 Unity에서 Apk로 도축하면, 호환성이 더욱 높아지고 게임 업데이트 버전 및 SDK에 편리합니다.
1) Android 설치 팩 도출
게임에서 Android 네이티브 코드를 수정할 필요가 없을경우, 직접 Unity에서 Apk 설치 팩을 도출할 수 있으며 그 절차는 다음과 같습니다.
a) 게임 appid 등의 정보 수정은, “Deploy MSDK”를 클릭하고, Copy_AndroidManfest.xml 문서와 대조하며 AndroidManifest.xml 문서의 정보를 수정
b) File->Build Settings...를 클릭해 Unity 컴파일링 설정 화면을 호출
c) Platform 항목에서 Android 플랫폼을 선택하고, Play Settings...을 클릭해 Android 패키지 생성 정보를 설정
d) Other Settings 항목에서 게임 패키지 이름(Bundle Identifier), 버전 번호(Bundle Version, Bundle Version Code)를 설정
e) Publishing Settings에서 게임의 Keystore 인증서를 설정(MSDKSample의 인증서는 Assets/Example/debug.keystore에 위치하며, 비밀번호는 android이고 닉네임은 androiddebugkey, 닉네임 비밀번호는 android)
f) 마지막으로 Build Settings 화면에서 Build를 클릭해 Android 설치 팩 도출
2) Android 프로젝트 도출
게임이 다른 Android 네이티브 구성 요소에 액세스해야 하거나 java 코드를 수정해야 할 경우, 다음 방법으로 Android 프로젝트를 도출 및 수정할 수 있습니다.
a) 게임 appid 등의 정보 수정은, “Deploy MSDK”를 클릭해 Copy_AndroidManfest.xml파일과 대조해 AndroidManifest.xml 파일의 정보를 수정
b) File->Build Settings...을 클릭해 Unity 컴파일링 설정 화면을 호출
c) Platform 항목에서 Android 플랫폼을 선택하고, “Google Android Project”를 체그한 후 Android 프로젝트 Export 도출 클릭
d) Eclipse를 이용해 방금 도출한 Android 프로젝트를 열고, 새로운 Activity를 열고 com.tencent.msdk.adapter.MsdkActivity를 상속
e) AndroidManifest.xml에서 Activity를 방금 전에 새로 만든 Activity로 조정해 기동한 후에 자유롭게 다른 구성 요소를 통합하고 java 코드를 수정할 수 있습니다.
주의사항:
1) 새로 생성된 Activity는 AndroidManifest.xml 내 선언을 잊어버려서는 안 됩니다. 2) Override Activity 수명 주기에서는, 상위 카테고리의 수명 주기를 호출해 주십시오. 그 예는 다음과 같습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
……
}
3) 게임 자체 정의 네이티브 코드로 Jar 패키지를 만들고 다시 Unity 안에서 Apk로 통합하여 도출
a) 먼저 게임에서 하나의 Android 프로젝트(새로 만들기 또는 기존)가 필요합니다.
b) Unity IDE의 MSDK 배치 화면에서 게임 정보를 설정하고, ”Deploy MSDK”를 클릭한 후 Copy_AndroidManfest.xml 파일과 대조하면서 AndroidManifest.xml 파일의 정보를 수정
c) 1단계 Adroid 프로젝트가 Unity 및 MSDK의 네이티브 인터페이스를 호출할 수 있기 위해서는, Unity와 MSDK의 Jar패키지를
Unity 네이티브 Jar 패키지: Assets/Msdk/Editor/Librarys/Android2.14/UnityClasses.jar(또는 Unity 설치 디렉토리 내 Jar 패키지)
MSDK 네이티브 Jar 패키지: Assets/Plugins/Android/MSDKLibrary/libs/MSDK_Android_<버전 정보>.jar (예: MSDK_Android_2.14.4a_svn69363.jar)
MSDK Unity 지원 Jar 패키지: Assets/Plugins/Android/libs/msdk_unity_adapter_<버전 번호>.jar (예: msdk_unity_adapter_1.0.4u.jar)
d) 1단계의 Android 프로젝트 내에서 MainActivity 클래스를 새로 생성하고, com.tencent.msdk.adapter.MsdkActivity
카테고리를 상속합니다. 기동 액세스 포인트 Activity를 MainActivity로 설정합니다. 이 Android 프로젝트 내에서 각종 네이티브 메소드와 인터페이스를 구현 및 호출합니다.
e) Android 프로젝트에서 네이티브 메소드를 호출한 후에, 게임이 구현하는 네이티브 코드를 Jar 패키지로 도출하고, Assets/Plugins/Android/libs 안에 위치시키면 게임 Apk에 통합됩니다.
iOS
iOS 패키지 생성에 관해서는, 먼저 MacOS 내에서 Unity를 통해 Xcode 프로젝트를 도출하고, 다시 Xcode 안에서 컴파일링해 ipa 게임 설치 팩을 도출합니다.
Xcode 프로젝트 도출
Unity에서 Xcode 프로젝트를 도출한 후, Xcode를 사용해 서명 인증서를 열어 수정하면 바로 컴파일링 운영 혹은 설치 패키지 도출이 가능합니다.
a) Build Settings 화면 Platform 항목에서 iOS 플랫폼을 선택하고, Play Settings...을 클릭해 iOS 패키지 생성 정보를 설정
b) Other Settings 항목에서 게임 패키지 이름(Bundle Identifier), 버전 번호(Bundle Version)를 설정하고 Scripting Backend는 IL2CPP, Target iOS Version 6.0 이상을 선택
(./res/config_ios.png)
c) Build Settings 화면에서 Build를 클릭하면 Xcode 프로젝트가 도출됩니다.
d) Xcode 프로젝트 설정에서 차례대로 Build Settings->Code Signing을 선택하고, Code Signing Identity에서 게임 자체의 iOS 인증서를 설정하면 컴파일링해 게임을 실행할 수 있습니다.