C 또는 C++를 사용하여 게임 엔진을 개발하거나 맞춤설정하는 경우 Android 지원을 게임 엔진에 통합하려면 다음 요구사항이 중요합니다.
- Android 개발 도구 활용
- 활동 구성
- 화면에 그리기
- 입력 이벤트 처리
- 출력 오디오
- 메모리 관리
- 테스트 및 개선
- Google Play에 게시
이 페이지에서 설명하는 요구사항은 게임 엔진을 처음부터 개발하는 방법을 교육하지 않습니다. 대신 다른 플랫폼과 비교하여 Android의 고유한 영역을 식별합니다.
Android 개발 도구 활용
Android 스튜디오에서 도구를 사용하여 다음 작업을 수행할 수 있습니다.
- 프로젝트 구성
- 게임 빌드, 디버그, 패키징
- 시스템, CPU, 메모리 프로파일러를 사용하여 게임의 성능 검사
- 게임 패키지 또는 애플리케이션 번들의 콘텐츠 검사
- Android SDK 및 NDK의 추가 기능 통합
Android Graphics Inspector는 게임의 렌더링 성능을 특성화하고 프레임 프로파일링을 사용하여 렌더링된 프레임의 세부정보를 조사할 수 있도록 도와줍니다.
주로 Microsoft Visual Studio를 사용하는 경우 Android 게임 개발 확장 프로그램(AGDE)을 사용하여 기존 프로젝트에 Android 대상을 추가할 수 있습니다. AGDE는 Visual Studio에서 네이티브 디버깅을 지원하며, 많은 Android 스튜디오 프로파일링 도구의 독립형 버전을 포함합니다.
활동 구성
게임은 Activity
를 구성하고 상호작용해야 합니다. 활동이 생성, 시작, 재개, 일시중지, 중지, 소멸되는 시기를 이해하려면 Android의 활동 수명 주기를 알아보세요.
네이티브 C 또는 C++ 게임 엔진의 Activity
관련 요구사항(게임 창, 수명 주기, 렌더링, 이벤트 처리)을 통합하고 충족하는 GameActivity
라이브러리에 대해 알아보세요.
화면에 그리기
게임에서 객체 및 스프라이트를 그려야 합니다. Android SurfaceView
및 게임 엔진에서의 그래픽 구성 방법을 알아보세요.
Android 기기는 다양한 화면 재생 빈도를 지원합니다. 프레임 드롭 및 프레임 버퍼 글리치를 방지하기 위해 게임 루프 렌더링에 대해 알아보세요.
OpenGL 및 Vulkan에서 원활하게 렌더링하기 위해 프레임 속도를 달성하는 방법을 알아보세요. Performance Tuner로 프레임 속도를 최적화합니다.
다중 샘플 앤티앨리어싱 (MSAA)을 사용하여 렌더링 품질을 개선합니다. MSAA는 오버헤드가 거의 없이 사용할 수 있습니다. 자세한 내용은 멀티샘플링 앤티앨리어싱을 거의 무료로 제공 - 타일 기반 렌더링 하드웨어 블로그 게시물을 참고하세요.
입력 이벤트 처리
게임 엔진은 다양한 소스로부터 입력 이벤트를 받습니다. 몰입형 게임 환경을 위해 다양한 Android 입력 소스를 지원하는 방법을 알아보세요.
출력 오디오
게임 엔진은 다양한 기기 및 Android 버전에서 오디오를 출력해야 합니다. 게임에 고성능 오디오를 통합하는 오픈소스 C++ 오디오 라이브러리인 Oboe에 대해 알아보세요.
Oboe를 사용하면 가장 짧은 지연 시간을 달성하고 특정 오디오 버그를 방지하며 AAudio 또는 OpenSL ES와 같은 최적의 네이티브 라이브러리를 자동으로 선택할 수 있습니다.
메모리 관리
Android 기기에서 시스템은 최대한 많은 시스템 메모리(RAM)를 사용하려고 하고 다양한 메모리 최적화를 실행하여 필요할 때 공간을 확보합니다. 메모리 사용량을 관리하여 게임 속도 저하 또는 중단을 방지하는 방법을 알아보세요.
테스트 및 개선
처리되지 않은 예외나 신호로 인해 예상치 못한 종료가 발생할 때마다 Android 앱이 비정상 종료됩니다. 비정상 종료를 감지 및 진단하는 방법, 스택 트레이스, 메모리 및 네트워킹 예외, logcat 사용 방법, 자바 및 Kotlin 관련 오류를 이해하는 방법을 알아보세요.
Google Play에 게시
플레이어는 다양한 국가, 네트워크 조건, 데이터 요금제에 따라 다양한 Android 기기로 게임을 다운로드합니다. Google Play를 사용하여 콘텐츠 전송 네트워크의 이점을 활용하여 대규모 게임용 App Bundle과 애셋 팩을 제공하는 방법을 알아보세요.