2010-02-23 4 views
0

Android에서 비디오 게임을 만드는 방법을 배우려고합니다. 따라서 SurfaceView를 사용하여 Android에서 그래픽을 만드는 방법에 대한 설명이 필요합니다. 목적. 그러나 내가 시도한 모든 단일 그래픽 튜토리얼 (주로 SurfaceView)은 실패했습니다. 제 요소가 아니기 때문에 XML을 사용하고 싶지 않습니다. Google은 프로그램 방식으로 수행 할 수있는 깔끔함 광고에이 기술을 판매하기를 원합니다.모든 Android 그래픽/SurfaceView 튜토리얼에 문제가 있습니다.

Google에서 한 가지 주요한 문제는 Google 및 제 3 자의 자습서가 android.opengl.GLSurfaceView 명령을 사용하거나 GLSurfaceView 하위 집합을 가져 오는 코드와 함께 제공된다는 것입니다. 내 IDE에서 작동합니다. Eclipse 중 하나를 가져올 때마다 Eclipse는 기본적으로 해당 패키지를 인식하지 못하게하려고합니다. 이상한 점은 android.opengl. *을 가져올 수 있다는 것입니다.하지만 그 패키지의 코드 중 일부는 인식 할 수없는 유형 및/또는 메소드를 참조합니다.

첫 번째 문제로 잠시 바보짓을 한 후 Lunar Lander 예제가 두 문제 라이브러리 중 하나를 가져 오려고 시도하지 않은 것으로 나타났습니다. 그래서 코드를 뽑아 내 유아 프로젝트 중 하나에 대한 리소스를 참조하여 그 프로젝트의 다른 모든 것들을 사용하지 않은 상태로 남겨 두었습니다. 물론 Lunar Lander 코드가 포함 된 패키지를 변경하고 LunarLander.java 또는 다른 클래스의 클래스 이름을 변경했으나 중요하지 않습니다. Eclipse에서 빌드 할 수있었습니다. 그러나 내가 그것을 실행하려고 갔을 때, 그것은 충돌을 아무것도하지 않을 것이다. 어떤 Lunar Lander 그래픽이나 아무것도 표시하지 않고 에뮬레이터는 기본적으로 내 앱이 예기치 않게 작동을 멈추고 앱을 종료하게된다는이 오류 메시지를 내게 줄 것입니다.

1) OpenGL.GLSurfaceView 패키지의 문제는 무엇입니까? 2) Lunar Lander 예와 어떤 관련이 있습니까? 3) Android 용 비디오 게임을 만드는 방법에 관한 좋은 가이드입니다.

감사합니다.

+0

예외로부터 stacktrace를 게시하는 것이 도움이됩니다. 당신은 logcat을 통해 이것을 얻을 수 있습니다. –

답변

3

게임을 2D 또는 3D로 제작하고 있습니까? 3D로 말할 수는 없지만 몇 가지 간단한 2D 게임을 만들었습니다. SurfaceView는 도움보다 더 큰 장애물이었습니다. 에뮬레이터는 하나의 코어 만 시뮬레이트하므로 실제로 드로잉에서 성능 이점을 얻지 못합니다. 또한 스레드 오버 헤드 및 유지 관리는 많은 어려움을 처리하고 많은 기능을 차단합니다 (여러 구성에서 GameOver 대화 상자를 시작하려고 몇 시간을 보냈습니다. 추가 스레드가이를 방지했습니다).

SurfaceView 대신 View를 확장 한 클래스를 구현하고 원하는대로 그릴 수있는 onDraw (Canvas)를 재정의 할 수 있습니다 (이것이 나와 내 친구들이 한 것입니다).

이 포인트를 받으려면 :

  • 나는 3D에서 근무하거나 안드로이드의 OpenGL을 사용하지만, 적이 이클립스 안드로이드 자원의 위치와 약간 변덕 수 있습니다 (즉, 당신이 사용중인 인 경우). 나머지 수업이로드됩니까?

  • Lunar Lander는 SurfaceView 및 SurfaceHandler를 확장하는보기를 만들고 파괴하는 방법을 보여줍니다. 다시 한 번 말하지만, SurfaceView가 좋은 선택 인 컨텍스트가있을 수 있습니다. 그러나 Android로 시작하여 단순한 2D 게임을 만드는 경우 필수적이라고 생각하지 않습니다.

  • 좋은 자습서를 찾기가 어렵습니다. 나는 this 2D game을 전자 책 버전 Hello Android로 몇 시간을 보내는 것으로부터 충분히 배웠다.

내 몇몇 친구들은 내가 이번 학기는, 우리는 또한 설정 한 안드로이드 게임에 최선을 다하고 있습니다 우리는 학기가 지남에 따라 다른 사람에게 자원을 수 있도록 노력하겠습니다 a blog. 슬프게도, 그 순간에는별로 없습니다.

행운을 빈다.

+2

그건 나쁜 조언입니다. SurfaceView는 내 경험으로 볼 때 일반 뷰보다 3 배 이상 빠릅니다 (전체 화면 SurfaceView의 하드웨어 장치 도면은 약 8ms, 일반 뷰는 25ms). – DKIT

관련 문제