크로스 플랫폼 게임 개발에 특화된 Google FPL(Fun Propulsion Labs)팀의 Project 중 하나인 Pie noon Game. 안드로이드 빌드를 위한 자바 파일을 제외하고 전부 C++로 작성되었으며, 지원 플랫폼 및 사용된 라이브러리는 다음과 같다.
지원 플랫폼
- Nexus Player (Android TV Device)
- Android Phones/Tablets
- Linux
- OS X
- Windows
사용 라이브러리
- SDL (Simple DirectMedia Layer) : Cross-platform Layer
- CORGI : Entity-component System
- FlatUI : User Interface
- FPLUtil : For Build
- FPLBase : Rendering and Input
- WebP : Encoding Image Resources
- FlatBuffers : Serialization
- MathFu : Geometry Math
- Motive : Animation
- PinDrop : Audio
- Google Play Games Services
빌드환경 설정
크로스 플랫폼 게임으로 Windows 뿐만 아니라 OS X 및 Linux 에서도 빌드/배포 가능하나 여기서는 Windows 에서 Android 타겟으로 빌드.
개발환경
- 플랫폼 : Windows 7
- Visual Studio 2015 Community
- Android Studio 1.5 SDK v5.1.1 (API 22)
- Android NDK r10e
- JDK 1.8.0
- 타겟 디바이스 : Asus Zenfone5 5.1 Lollipop
설치필요
- Python 2.7 설치
- Google Play services SDK 설치
- Android Studio의 SDK Manager 를 통해 설치
- Google Repository
- Google Play services
- Android Studio의 SDK Manager 를 통해 설치
- Google Play Games C++ SDK 다운로드
- 다운로드한 압축 파일을 Pie noon 소스코드 루트의
dependencies/gpg-cpp-sdk
폴더에 압축 해제
- 다운로드한 압축 파일을 Pie noon 소스코드 루트의
- CMake 설치
- 빌드 당시 최신버전인 v3.4.0 사용
- cwebp 다운로드
- 미리 컴파일된 바이너리 사용. libwebp-0.4.4-windows-x64.zip
- 적당한 폴더에 압축 해제
- Apache ant 다운로드
- FPLUtil을 사용하기 위해 필요
- 빌드 당시 최신버전인 v1.9.6 사용.
- 적당한 폴더에 압축 해제
환경변수
PATH
환경변수에 추가
- cwebp 설치된 폴더
ex.) C:\libwep-0.4.4\bin
- Android SDK 설치된 폴더
ex.) C:\Users\metalkin\AppData\Local\Android\sdk\tools
- Android NDK 설치된 폴더
ex.) C:\Users\metalkin\AppData\Local\Android\ndk
- Apache Ant 설치된 폴더
ex.) C:\apache-ant-1.9.6\bin
- JDK 설치된 폴더
ex.) C:\Program Files\Java\jdk1.8.0_60\bin
안드로이드 빌드
소스코드 다운로드
공식 빌드 가이드 업데이트가 미흡한지 소스 코드 업데이트에 따라 빌드 방법도 조금씩 달라진다. 따라서, 빌드에 현재 최신 릴리즈인 pienoon-1.2.0.zip 소스 코드를 다운로드하여 사용.
빌드 전, 사전 설치필요 항목의 Google Play Games C++ SDK를 다운로드한 소스 코드 루트의 dependencies\gpg-cpp-sdk
폴더에 압축 해제
빌드
Command line 창에서 소스 코드 루트 ex.) ..\pienoon\
에서 다음 실행
dependencies\fplutil\bin\build_all_android -E dependencies jni\libs
참고로, 빌드 Clean
수행은 다음과 같다.
dependencies\fplutil\bin\build_all_android -E dependencies jni\libs -c
Troubleshooting
Error : No CMAKE_C_COMPILER could be found.
Searching for Visual Studio 13 ... -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeList.txt:16 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeList.txt:16 (project): No CMAKE_CXX_COMPILER could be found.
Visual Studio 2013 이전 버전이 깔려 있다면 상관없지만, CMake 에서 Visual Studio 2015 버전을 탐지 하지 못해 발생.
pienoon\jni\build_flatc.bat
파일을 보면,
set visual_studio_version_max=13
Visual Studio 2013 부터 찾기 시작한다. 2015 버전 넘버인 14
이상의 값으로 수정
set visual_studio_version_max=15
CMake cache 가 남아 있기 때문에, pienoon\CMakeFiles
폴더와 pienoon\CMakeCache.txt
파일을 삭제하고 다시 빌드
Error : 'simd4f_dot3_scalar' was not declared in this scope.
mathfu
라이브러리의 simd 지원 dependency인 vectorial
라이브러리가 누락되어 발생하는 에러로 소스 코드를 다운로드 하여,
git clone https://github.com/scoopr/vectorial.git
vectorial\include
폴더 내의 vectorial
폴더를 복사하고, pienoon\dependencies\mathfu\include
폴더에 붙여넣는다. 다음과 같은 구조
pienoon\dependencies\mathfu\include\mathfu
\vectorial\config.h
\mat4f.h
\...
배포
dependencies\fplutil\bin\build_all_android -E dependencies jni\libs -i -r -S
디바이스가 연결된 상태에서 실행하면, signing-S
한 apk를 설치-i
하고 실행-r
한다.
댓글