GameActivity Android Game Development Kit에 포함되어 있음

GameActivity는 애플리케이션의 C/C++ 코드에서 앱 주기 명령어, 입력 이벤트, 텍스트 입력을 처리하는 데 있어 Android 게임을 지원하도록 설계된 Jetpack 라이브러리입니다. GameActivityNativeActivity의 직접적인 하위 요소이며 유사한 아키텍처를 공유합니다.

alt_text

위의 다이어그램과 같이 GameActivity는 다음 기능을 실행합니다.

  • 자바 측 구성요소를 통해 Android 프레임워크와 상호작용
  • 앱 주기 명령어, 입력 이벤트, 입력 텍스트를 네이티브 측에 전달
  • C/C++ 소스 코드를 다음 세 가지 논리적 구성요소로 모델링
    • GameActivity의 JNI 함수. GameActivity의 자바 기능을 직접 지원하고 이벤트를 native_app_glue의 대기열에 추가합니다.
    • native_app_glue. 자체 네이티브 스레드(애플리케이션의 기본 스레드와 다름)에서 대부분 실행되고 루퍼로 작업을 실행합니다.
    • 애플리케이션의 게임 코드. native_app_glue 내에서 대기열에 추가된 이벤트를 폴링하고 처리하며 native_app_glue 스레드 내에서 게임 코드를 실행합니다.

GameActivity를 사용하면 핵심 게임 개발에 집중할 수 있고 JNI 코드를 처리하는 데 과도한 시간을 소비하지 않아도 됩니다.

NativeActivity에 이미 익숙하다면 GameActivityNativeActivity의 주요 차이점은 다음과 같습니다.

  • GameActivitySurfaceView로 렌더링되므로 게임이 다른 UI 구성요소와 훨씬 더 쉽게 상호작용할 수 있습니다.
  • 터치 및 키 입력 이벤트의 경우 GameActivity에는 NativeActivity에서 사용하는 InputQueue와는 별도로 android_input_buffer 인터페이스를 사용하는 완전히 새로운 구현이 있습니다.
  • GameActivityAppCompatActivity의 파생 클래스로, 다른 Jetpack 구성요소를 원활하게 사용할 수 있도록 합니다. ActionBar, Fragment 등을 모두 사용할 수 있습니다.
  • GameActivityGameTextInput 라이브러리를 통합하여 텍스트 입력 기능을 추가합니다.
  • GameActivity에서 파생된 앱은 C/C++ 코드의 세 가지 부분을 모두 라이브러리 하나에 빌드해야 합니다. 반면 NativeActivity의 JNI 함수는 프레임워크의 일부입니다(항상 OS에 의해 로드됨). 따라서 native_app_glue와 애플리케이션의 C/C++ 코드만 라이브러리 하나에 빌드되어야 합니다.
  • NativeActivity는 Android 프레임워크의 일부이며 출시 주기(일반적으로 연간)를 따릅니다. GameActivity는 출시 주기(일반적으로 격주)가 훨씬 더 잦은 Jetpack 라이브러리의 일부입니다. 새로운 기능과 버그 수정이 훨씬 빠르게 제공될 수 있습니다.

버전 위치

GameActivity 라이브러리는 다음 채널에서 사용할 수 있습니다.

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 시작하기를 참고하세요.

AGDK 라이브러리 zip 패키지의 경우 다음 단계에 따라 C/C++ 코드를 가져옵니다.

  1. 다운로드한 패키지의 압축을 풉니다.
  2. 압축을 푼 패키지에서 GameActivity-release.aar의 압축을 풉니다.
  3. 다음을 포함하여 prefab/modules/game-activity/include 하의 모든 C/C++ 소스 코드를 찾아서 복사합니다.
    • GameActivitygame-activity 관련 C/C++ 코드
    • GameTextInputgame-text-input 관련 C/C++ 코드

AOSP 소스 코드의 내용

AOSP에는 항상 최신 소스 코드가 포함되어 있습니다. 빌드 안내에 따라 자체 버전을 만들거나 소스를 빌드 환경에 직접 통합합니다. C/C++ 소스 코드는 Jetpack 라이브러리와 AGDK zip 패키지의 파일 구조와 비슷한 구조로 저장됩니다.

통합 가이드

다음 가이드를 따라 GameActivity를 애플리케이션에 통합하세요.

추가 리소스

GameActivity에 관해 자세히 알아보려면 다음을 참고하세요.

의견

GameActivity 관련 버그를 신고하거나 새로운 기능을 요청하려면 GameActivity Issue Tracker를 사용하세요.