CHAPTER 01 안드로이드 게임 개발을 시작하며 필요한 능력 ... 2 안드로이드 개발의 기초 지식 ... 2 리눅스와 셸 스크립팅 기초 지식 ... 5 필요한 소프트웨어 도구들 ... 5 개발용 리눅스 컴퓨터 준비 ... 6 안드로이드 소스 얻기 ... 7 네이티브 안드로이드 라이브러리 추출 ... 10 ARM 프로세서용 GNU 도구사슬 설치 ... 12 커스텀 컴파일 스크립트 작성 ... 15 안드로이드 개발 환경 설정 ... 26 요약 ... 33 CHAPTER 02 안드로이드 네이티브 코드 다루기 기본적인 안드로이드 네이티브 프로그램 ... 35 AVD 생성 ... 35 안드로이드 프로젝트 만들기 ... 38 안드로이드 응용프로그램의 구조 ... 40 공유 라이브러리의 컴파일과 시험 ... 56 기호 누락 문제 해결 ... 61 기기에서 동적 라이브러리를 검사 ... 62 strace를 이용한 디버깅 ... 63 정적 링크 ... 65 안드로이드 응용프로그램에서 시험해 보기 ... 67 요약 ... 69 CHAPTER 03 순수 Java로 안드로이드 게임 만들기 안드로이드 게임 개발 대 Java ME 게임 개발 ... 71 첫 Java 게임, Space Blaster 만들기 ... 73 게임의 전반적인 구조 ... 74 프로젝트 생성 ... 76 게임의 활동 클래스 작성 ... 77 게임 레이아웃 작성 ... 79 게임의 구현 ... 86 키 및 터치 사건 처리 ... 97 에뮬레이터에서 시험해 보기 ... 101 요약 ... 102 CHAPTER 04 Java 게임 계속: 다각형 다루기 이번 장의 구성 ... 105 안드로이드에서 다각형 그리기를 힘들게 하는 걸림돌들 ... 106 직사각형 그리기에 관련된 걸림돌 ... 108 Asteroids를 위한 다각형 클래스 만들기 ... 111 Asteroids에 사용할 PolygonSprite 클래스 ... 117 게임의 전반적인 구조 ... 123 프로젝트 만들기 ... 124 게임 레이아웃 만들기 ... 125 프로젝트에 쓰이는 자원들 ... 125 게임의 수명 주기 ... 127 키 입력과 화면 터치 사건 처리 ... 140 Asteroids를 에뮬레이터에서 시험 ... 145 요약 ... 146 CHAPTER 05 JNI를 이용한 혼성 OpenGL 3D 그래픽 모바일 기기의 성능 ... 151 Java로 OpenGL 다루기 ... 153 Java 전용 버전의 주 활동 ... 157 표면 뷰 ... 159 GLThread ... 163 입방체 렌더러 ... 167 Cube 클래스 ... 171 네이티브 방식의 OpenGL 렌더링 ... 174 주 활동 ... 177 네이티브 연동 클래스 ... 179 기존 클래스들 고치기 ... 181 네이티브 입방체 렌더러 ... 183 네이티브 버전의 입방체 정의 ... 192 예제의 컴파일과 실행 ... 194 OpenGL 게임을 안드로이드로 이식할 때 주의해야 할 사항들 ... 200 베일이 벗겨지다 ... 202 CHAPTER 06 3D 슈팅 게임 에피소드 Ⅰ: 안드로이드용 Wolfenstein 3D 사전 준비 ... 206 이번 장 소스 코드 내려 받기 ... 206 Wolf 3D 소개 ... 207 게임의 전반적인 구조 ... 211 Wolf 3D의 Java 클래스들 ... 213 게임의 주 활동 ... 215 Wolf 3D의 주 메뉴 ... 219 키 입력과 터치 사건 처리 ... 222 게임의 주 루프로 진입 ... 224 네이티브 콜백 호출 ... 226 배경 음악과 효과음 처리 ... 229 게임 컨트롤러 터치 사건 처리부 ... 230 게임 컨트롤러 구현 ... 232 음향 클래스들 ... 242 네이티브 연동 클래스 ... 254 네이티브 계층 ... 258 주 게임 루프의 시작 ... 259 콜백: C에서 Java 메서드를 호출 ... 263 네이티브 라이브러리 만들기 ... 272 Makefile 작성 ... 272 JNI 헤더와 DSO 생성 ... 274 Wolf 3D를 에뮬레이터로 시험 ... 275 요약 ... 278 CHAPTER 07 3D 슈팅 게임 에피소드 Ⅱ: 안드로이드용 Doom Java/C 조합의 위력 ... 280 Doom을 모바일 기기로 이식하기 ... 282 Doom 게임의 전반적인 구조 ... 285 Java 계층의 주 활동 ... 287 생성 처리부 ... 288 게임 UI 레이아웃 ... 289 메뉴 생성 및 선택 처리부 ... 292 키 입력 및 터치 사건 처리부 ... 294 네이티브 콜백 처리부 ... 296 게임 컨트롤러 ... 302 음향 처리 클래스들 ... 304 네이티브 연동 클래스 ... 305 콜백 청취자 인터페이스 ... 306 네이티브 메서드들 ... 306 C에서 Java로의 콜백들 ... 308 네이티브 계층 ... 311 네이티브 메서드 구현 ... 312 원본 코드 고치기 ... 327 Doom 네이티브 라이브러리(DSO) 컴파일하기 ... 337 안드로이드용 Doom을 에뮬레이터로 시험 ... 339 프로젝트 완수! ... 342 부록 A 설치 및 컴파일 요령 응용프로그램 서명 ... 343 키 저장소 만들기 ... 344 응용프로그램 서명 ... 345 안드로이드 NDK를 이용해서 제6장, 7장 예제 라이브러리 컴파일하기 ... 348 NDK 1.5로 Wolf 3D 컴파일하기 ... 351 공유 라이브러리 컴파일 ... 354 NDK 1.5에서 OpenGL ES 사용하기 ... 355 NDK 1.6으로 Doom 네이티브 라이브러리 컴파일하기 ... 357 책을 마치며 ... 360 부록 B NDK r3 활용 NDK r3으로 제5장 OpenGL 입방체 예제 컴파일하기 ... 364 폴더 구조 준비 ... 364 Eclipse 프로젝트 준비 ... 365 네이티브 라이브러리의 컴파일 및 링크 ... 367 Java 소스 수정 및 실행 ... 370 NDK r3으로 제6장 Wolfenstein 3D 컴파일하기 ... 371 찾아보기 ... 375