GameActivity Android Game Development Kit의 일부.
GameActivity
는 애플리케이션의 C/C++ 코드에서 앱 주기 명령어, 입력 이벤트, 텍스트 입력을 처리하는 데 있어 Android 게임을 지원하도록 설계된 Jetpack 라이브러리입니다. GameActivity
는 NativeActivity
의 직접적인 하위 요소이며 유사한 아키텍처를 공유합니다.
위의 다이어그램과 같이 GameActivity
는 다음 기능을 실행합니다.
- 자바 측 구성요소를 통해 Android 프레임워크와 상호작용
- 앱 주기 명령어, 입력 이벤트, 입력 텍스트를 네이티브 측에 전달
- C/C++ 소스 코드를 다음 세 가지 논리적 구성요소로 모델링
- GameActivity의 JNI 함수. GameActivity의 자바 기능을 직접 지원하고 이벤트를
native_app_glue
의 대기열에 추가합니다. native_app_glue
. 자체 네이티브 스레드(애플리케이션의 기본 스레드와 다름)에서 대부분 실행되고 루퍼로 작업을 실행합니다.- 애플리케이션의 게임 코드.
native_app_glue
내에서 대기열에 추가된 이벤트를 폴링하고 처리하며native_app_glue
스레드 내에서 게임 코드를 실행합니다.
- GameActivity의 JNI 함수. GameActivity의 자바 기능을 직접 지원하고 이벤트를
GameActivity
를 사용하면 핵심 게임 개발에 집중할 수 있고 JNI 코드를 처리하는 데 과도한 시간을 소비하지 않아도 됩니다.
NativeActivity
에 이미 익숙하다면 GameActivity
와 NativeActivity
의 주요 차이점은 다음과 같습니다.
GameActivity
는SurfaceView
로 렌더링되므로 게임이 다른 UI 구성요소와 훨씬 더 쉽게 상호작용할 수 있습니다.- 터치 및 키 입력 이벤트의 경우
GameActivity
에는NativeActivity
에서 사용하는InputQueue
와는 별도로android_input_buffer
인터페이스를 사용하는 완전히 새로운 구현이 있습니다. GameActivity
는AppCompatActivity
의 파생 클래스로, 다른 Jetpack 구성요소를 원활하게 사용할 수 있도록 합니다.ActionBar
,Fragment
등을 모두 사용할 수 있습니다.GameActivity
는 GameTextInput 라이브러리를 통합하여 텍스트 입력 기능을 추가합니다.GameActivity
에서 파생된 앱은 C/C++ 코드의 세 가지 부분을 모두 라이브러리 하나에 빌드해야 합니다. 반면NativeActivity
의 JNI 함수는 프레임워크의 일부입니다(항상 OS에 의해 로드됨). 따라서native_app_glue
와 애플리케이션의 C/C++ 코드만 라이브러리 하나에 빌드되어야 합니다.NativeActivity
는 Android 프레임워크의 일부이며 출시 주기(일반적으로 연간)를 따릅니다.GameActivity
는 출시 주기(일반적으로 격주)가 훨씬 더 잦은 Jetpack 라이브러리의 일부입니다. 새로운 기능과 버그 수정이 훨씬 빠르게 제공될 수 있습니다.
버전 위치
GameActivity
라이브러리는 다음 채널에서 사용할 수 있습니다.
- Android Jetpack 라이브러리의 일부로 사용 가능(권장)
- AOSP 소스 코드로 사용 가능
C/C++ 코드는 모든 출시 채널에서 Prefab 형식을 사용하여 소스 코드로 제공됩니다. GameActivity 버전 1.2.2는 정적 라이브러리를 배포에 추가합니다. 이 버전부터는 소스 코드 대신 정적 라이브러리를 사용하는 것이 좋습니다.
Jetpack 라이브러리 및 AGDK zip 패키지의 내용
Jetpack 라이브러리와 AGDK zip 패키지 채널에서 GameActivity는 AAR과 함께 출시됩니다. 이 AAR은 다음과 같은 주요 요소로 구성되어 있습니다.
- 자바 코드용 JAR 파일
- C/C++ 정적 라이브러리
game-activity_static
. GameActivity 버전 1.2.2 이상에 포함되어 있습니다. - C/C++ 소스 코드(
/prefab
폴더 아래)
이 페이지에서 연결된 통합 안내에서는 개발자가 빌드 시스템에서 Prefab를 사용할 수 있다고 가정합니다. 그러지 않은 경우에는 prefab/modules/game-activity/include
폴더에 포함된 소스 코드를 빌드 시스템에 복사하여 필요한 통합 단계를 실행할 수 있습니다. Android Jetpack 라이브러리의 androidx
아래에 버전과 관련된 유사한 파일 구조가 있습니다. 기본적으로 Gradle은 캐시 디렉터리(~/.gradle/caches/...)에 AAR의 압축을 해제합니다. C/C++ 소스 코드는 prefab/modules/game-activity/include
를 검색하고 원하는 출시 버전에서 위치를 선택하여 찾을 수 있습니다.
Jetpack 라이브러리를 사용한 통합에 관한 안내는 GameActivity 시작하기를 참고하세요.
AOSP 소스 코드의 내용
AOSP에는 항상 최신 소스 코드가 포함되어 있습니다. 빌드 안내에 따라 자체 버전을 만들거나 소스를 빌드 환경에 직접 통합합니다. C/C++ 소스 코드는 Jetpack 라이브러리와 AGDK zip 패키지의 파일 구조와 비슷한 구조로 저장됩니다.
통합 가이드
다음 가이드를 따라 GameActivity
를 애플리케이션에 통합하세요.
추가 리소스
GameActivity
에 관해 자세히 알아보려면 다음을 참고하세요.
- GameActivity 및 AGDK 출시 노트
- GameActivity에서 GameTextInput 사용
- NativeActivity 이전 가이드
- GameActivity 참조 문서
- GameActivity 구현
의견
GameActivity 관련 버그를 신고하거나 새로운 기능을 요청하려면 GameActivity Issue Tracker를 사용하세요.