C ++로 안드로이드 게임 개발


26

따라서 주로 c / c ++ 개발자 인 저는 항상 모바일 게임 개발을위한 유일한 옵션은 iOS를 사용하는 것이라고 생각했습니다.

친구로부터 들었는데, 안드로이드에는 C ++ 코드가 안드로이드에서 작동하도록하는 네이티브 개발 툴킷이 있습니다.

누구든지 이것을 사용 했습니까? 그렇다면 어떻게 찾습니까? 내 말은, iOS와 같이 "작동"할 수 있는가, 또는 사용 가능한 다양한 안드로이드 기기로 인해 처리해야 할 추가 고려 사항이 있는가?

답변:


26

Android API는 Java입니다. Google은 2010 년부터 C / C ++ 개발자를위한 NDK (SDK)를 제공합니다.

NDK는 두 가지 방법을 제공합니다.

  • 안드로이드 1.5 장치의 경우 엘프 라이브러리를로드하고 JNI 브리지를 통해 Java 응용 프로그램에서 사용할 수 있습니다
  • Android 2.3 장치의 경우 NativeActivity를 사용하여 전체 화면 응용 프로그램의 Java 활동 코드를 무시할 수 있습니다.

NDK는 C / C ++ API를 거의 제공하지 않습니다.

  • 바이오닉이라는 의사 라이브러리 : 많은 기능을 사용할 수 없습니다
  • pthread 라이브러리
  • OpenGL ES 1.x (> Android 1.5) 및 OpenGL ES 2.x (Android 2.0)
  • OpenSL (Android 2.3에서 제한적으로 지원)

그러나 많은 API는 Java 전용입니다 (JNI를 통해 사용 가능).

NDK 5 버전은 다음을 제공하기 때문에 C ++ 개발자가 사용할 수있는 첫 번째 버전입니다.

  • RTTI
  • 예외 지원
  • STLport
  • 다중 스레드 프로그램에 대한 gdb 지원

가장 고통스러운 작업은 안드로이드 장치에서 디버깅하는 것입니다. 따라서 데스크탑 플랫폼, 첫 번째 iOS 플랫폼 (시뮬레이터) 및 마지막 (Android)에서 먼저 디버깅 할 수있는 자체 다중 플랫폼 프레임 워크 (OS X, Windows, Linux, iOS 및 Android)를 개발합니다.

Android 에뮬레이터 (시뮬레이터 아님)의 성능이 저하되어 OpenGL ES 2.x를 에뮬레이트 할 수 없습니다. 실제 장치를 개발하는 것이 좋습니다.

많은 유용한 정보를 찾을 수 있습니다.


"입력 코드"링크가 깨졌습니다.
Josh1billion 2016 년

1
고정 : Ellismarkov를 IOPixel로 변경
Ellis

9

두 개의 SDL + OpenGL 게임을 Android로 이식 하기 위해 Android NDK 를 성공적으로 사용했으며 놀랍도록 쉽습니다. GL 컨텍스트를 만들고 C ++ 코드가 콜백 할 수 있도록 입력, 사운드 및 이미지로드와 같은 유틸리티 클래스를 제공하는 200 줄 Java 래퍼가 있습니다. NDK의 "San-Angeles"샘플 프로그램은 훌륭한 출발점입니다.

그건 그렇고, Java 라인없이 C / C ++ 프로그램을 빌드하는 것이 가능하지만 때때로 JVM을 콜백하여 일부 OS 레벨 메소드에 액세스하는 것이 편리하다는 것을 알았습니다.

게임이 이미 Linux에서 컴파일되면 집처럼 느껴질 것입니다. 현재 프로젝트의 100 개 이상의 파일 중 4 개에만 #ifdef ANDROID_NDK지시문 (이미지 및 사운드 관련 클래스)이 있습니다.

사실 게임 포팅에 소비 된 대부분의 시간은 내가 알지 못하는 알려진 에뮬레이터 버그 때문 이었습니다.


이전에는 안드로이드 에뮬레이터에서 내 OpenGL 게임을 컴파일 / 빌드 / 배포하는 간단한 파이프 라인을 얻으려고하는 문제가있었습니다. 내가 사용할 수있는 자원이나 무언가를 알려주시겠습니까? (그런 유틸리티 클래스가 오픈 소스인지는 모르겠지만, 그렇게하면 관심이있을 것입니다.) 감사합니다
brainydexter

1
@brainydexter : 나는 확실히 당신에게 매우 도움이 될 것 아니지만, 내 파이프 라인이 그대로 다음 있도록 autotools를 즐긴다 명령 줄 사람 이니 보장 ANDROID_NDK_ROOT이에 있는지, 설정 $PATH(함께 [sdk_location]/tools하고 [sdl_location]/platform-tools); 프로젝트 디렉토리로 이동하십시오. ndk-build;를 사용하여 NDK 코드를 컴파일하십시오 . Java 코드를 컴파일하고 ant compile;를 사용하여 패키지를 빌드하십시오 . 을 사용하여 에뮬레이터 또는 연결된 장치에 업로드하십시오 ant install. 엔진 오픈
소싱에 관해서

링크 주셔서 감사합니다! 귀하의 블로그를 주시하겠습니다.
brainydexter

4

Android는 버전 1.5부터 Android NDK를 통해 기본 애플리케이션을 지원하므로 대상 사용자를 매우 잘 처리해야합니다. JNI를 통해 애플리케이션의 기본을로드하고 입력 및 렌더링 호출과 같은 간단한 Android Java 애플리케이션이 여전히 필요합니다.

NDK에는 여러 가지 버전이 있지만 최신 NDK를 사용하고 지원하려는 대상 API를 선택할 수 있습니다. Android 버전 2.3부터는 기본적으로 더 많은 작업을 수행 할 수 있고 Java 코드가 덜 필요하지만 2.3에 대한 장치 지원은 현재 매우 제한적입니다.

기본 Android C / C ++ 개발은 최소한 전체 화면 게임에 적합한 솔루션이며 기존 C / C ++ OpenGL ES 응용 프로그램을 이식하는 데 필요한 노력은 매우 작습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.