책의 대상 독자 ... xxii 이 책의 구성 ... xxiv 소스 코드 내려 받기 ... xxiv 01장 안드로이드, 뉴 키즈 온 더 블록 ... 1 안드로이드에 대한 간단한 소개 ... 2 파편화 ... 3 구글의 역할 ... 4 안드로이드 오픈소스 프로젝트 ... 4 안드로이드 마켓 ... 4 챌린지, 개발자 지원 프로그램, 구글 I/O ... 6 안드로이드의 기능과 아키텍처 ... 7 커널 ... 8 런타임과 달빅 ... 8 시스템 라이브러리 ... 10 애플리케이션 프레임워크 ... 11 소프트웨어 개발 킷 ... 12 개발자 커뮤니티 ... 13 기기, 기기, 기기! ... 14 하드웨어 ... 14 1세대, 2세대, 차세대 ... 16 차세대 기기 ... 20 게임 컨트롤러 ... 21 모바일 게임의 차이점 ... 22 주머니 속으로 들어간 게임 기기 ... 22 상시 접속 상태의 유지 ... 23 캐주얼 게임과 하드코어 게임 ... 24 큰 시장과 적은 수의 개발자 ... 25 정리 ... 26 02장 안드로이드 SDK 첫 걸음 ... 29 개발 환경의 설정 ... 29 JDK의 설정 ... 30 안드로이드 SDK의 설정 ... 30 이클립스의 설치 ... 32 ADT 이클립스 플러그인의 설치 ... 33 이클립스 간단히 살펴보기 ... 36 안드로이드 방식의 Hello World ... 37 프로젝트의 생성 ... 38 프로젝트 내용 살펴보기 ... 39 애플리케이션 코드의 작성 ... 41 안드로이드 애플리케이션의 실행과 디버깅 ... 44 기기 연결 ... 44 안드로이드 가상 기기의 생성 ... 44 애플리케이션의 실행 ... 46 애플리케이션 디버깅 ... 49 로그캣과 DDMS ... 52 ADB의 활용 ... 55 정리 ... 57 03장 게임 개발 ... 59 장르 각인각색 ... 60 캐주얼 게임 ... 60 퍼즐 게임 ... 62 액션 및 아케이드 게임 ... 63 타워 디펜스 게임 ... 66 혁신 게임 ... 67 게임 설계 펜은 코드보다 강하다 ... 68 핵심 게임 방식 ... 69 게임 스토리와 아트 스타일 ... 71 화면과 화면 전환 ... 73 코드 핵심적인 세부 내용 ... 79 애플리케이션과 창 관리 ... 80 입력 ... 81 파일 I/O ... 86 오디오 ... 87 그래픽 ... 92 게임 프레임워크 ... 108 정리 ... 117 04장 게임 개발자를 위한 안드로이드 ... 119 안드로이드 애플리케이션의 정의 매니페스트 파일 ... 120 엘리먼트 ... 121 엘리먼트 ... 122 엘리먼트 ... 124 엘리먼트 ... 127 엘리먼트 ... 128 엘리먼트 ... 130 10단계로 끝내는 안드로이드 게임 프로젝트 설정 ... 131 게임의 아이콘 정의 ... 133 안드로이드 API의 기본 ... 135 테스트 프로젝트의 생성 ... 135 액티비티 생명주기 ... 140 입력 기기의 처리 ... 149 파일 처리 ... 170 오디오 프로그래밍 ... 178 효과음의 재생 ... 178 스트리밍 음악 ... 183 기본 그래픽 프로그래밍 ... 188 모범 개발 방식 ... 218 정리 ... 220 05장 안드로이드 게임 개발 프레임워크 ... 223 공략 계획 ... 223 AndroidFileIO 클래스 ... 224 AndroidAudio, AndroidSound, AndroidMusic ... 225 AndroidInput과 AccelerometerHandler ... 232 AccelerometerHandler: 가속도계의 감지 ... 232 Pool 클래스: 재사용은 좋은 것이다! ... 234 KeyboardHandler: 위, 아래, 왼쪽, 오른쪽 ... 237 터치 핸들러 ... 242 AndroidInput: 위대한 조율자 ... 251 AndroidGraphics과 AndroidPixmap: 두 개의 무지개 ... 254 각기 다른 화면 크기와 해상도의 처리 ... 254 AndroidPixmap: 사용자를 위한 픽셀 조정 ... 260 AndroidGraphics: 드로잉 작업의 수행 ... 262 AndroidFastRenderView: 루프, 확장, 루프, 확장 ... 267 AndroidGame: 모든 내용의 종합 ... 270 정리 ... 276 06장 Mr. Nom 안드로이드를 침공하다 ... 279 자원의 생성 ... 279 프로젝트 설정 ... 282 MrNomGame: 메인 액티비티 ... 282 Assets: 편리한 자원 저장소 ... 283 Settings: 사용자 선택값과 하이스코어의 추적 ... 285 LoadingScreen: 디스크로부터 자원 로드 ... 287 메인 메뉴 화면 ... 289 HelpScreen 클래스(들) ... 293 하이스코어 화면 ... 296 숫자 렌더링: 짧은 여행 ... 296 화면 구현 ... 298 추상화 ... 301 Mr. Nom의 게임 공간에 대한 추상화: 모델, 뷰, 컨트롤러 ... 302 GameScreen 클래스 ... 316 정리 ... 325 07장 오픈GL ES의 간단한 소개 ... 327 오픈GL ES는 무엇이고 왜 알아야 하나? ... 327 프로그래밍 모델: 비유 ... 329 투영 ... 331 정규화된 기기 공간과 뷰포트 ... 333 매트릭스 ... 334 렌더링 파이프라인 ... 335 시작에 앞서 알아야 할 내용들 ... 336 작업을 쉽게 도와주는 GLSurfaceView ... 337 GCGame: Game 인터페이스의 구현 ... 341 엄마, 내가 빨간색 삼각형을 그렸어! ... 351 뷰포트의 정의 ... 351 투영 매트릭스의 정의 ... 351 삼각형의 지정 ... 356 내용 정리 ... 361 정점 색상의 지정 ... 365 텍스처 매핑: 손 쉬운 이미지 배치 작업 ... 370 텍스처 좌표 ... 370 비트맵 업로드 ... 372 텍스처 필터링 ... 374 텍스처의 정리 ... 375 유용한 코드 조각 ... 376 텍스처 활성화 ... 376 내용 정리 ... 377 텍스처 클래스 ... 380 인덱스를 갖는 정점 재사용은 항상 유용하다. ... 382 내용 정리 ... 385 Vertices 클래스 ... 387 알파 블렌딩 ... 390 다양한 원시 도형 : 점, 선, 스트립, 팬 ... 395 2차원 변형: 모델-뷰 매트릭스를 활용한 재미있는 프로그래밍 ... 397 세계 공간과 모델 공간 ... 397 다시 살펴보는 매트릭스 ... 399 변형을 활용한 첫 번째 예제 ... 400 더 많은 변형 ... 406 성능 최적화 ... 411 프레임 레이트의 측정 ... 411 안드로이드 1.5에서 실행되는 히어로의 문제 사례 ... 413 오픈GL ES 렌더링을 느리게 만드는 요인 ... 414 불필요한 상태 변화의 제거 ... 416 텍스처 크기를 줄이면 가져올 픽셀도 줄어든다 ... 418 오픈GL ES/JNI 메서드 호출의 제한 ... 419 바인딩 정점 ... 420 마무리하며 ... 424 정리 ... 425 08장 2D 게임 프로그래밍 기법 ... 427 시작에 앞서 ... 427 태초에 벡터가 있었다 ... 428 벡터의 활용 ... 429 간단한 삼각함수 이론 ... 432 Vector 클래스의 구현 ... 434 간단한 사용 예제 ... 439 간단한 2차원 물리 ... 444 뉴턴과 오일러, 영원한 좋은 친구들 ... 445 힘과 질량 ... 446 이론적인 적용 ... 447 실제 적용 ... 448 충돌 감지와 2차원에서의 객체 표현 ... 453 경계 도형 ... 454 경계 도형의 구성 ... 456 게임 객체의 어트리뷰트 ... 459 광범위 충돌 감지와 미세 충돌 감지 ... 460 적용 예제 ... 469 2차원 카메라 ... 486 Camera2D 클래스 ... 489 예제 ... 491 텍스처 아틀라스: 공유는 관심이다 ... 493 예제 ... 496 텍스처 영역, 스프라이드, 배치: 오픈GL ES 숨기기 ... 500 TextureRegion 클래스 ... 501 SpriteBatcher 클래스 ... 502 스프라이트 애니메이션 ... 514 Animation 클래스 ... 515 예제 ... 517 정리 ... 523 09장 수퍼 점퍼 2D 오픈GL ES 게임 ... 525 핵심 게임 방식 ... 525 게임의 배경 이야기와 아트 스타일 ... 526 화면과 화면 전환 ... 527 게임 세계의 정의 ... 528 자원의 생성 ... 531 UI 요소 ... 531 비트맵 폰트를 활용한 텍스트 처리 ... 533 게임 요소 ... 536 텍스처 아틀라스 ... 538 음악과 효과음 ... 539 수퍼 점퍼 게임의 구현 ... 541 Assets 클래스 ... 541 Settings 클래스 ... 545 메인 액티비티 ... 547 Font 클래스 ... 548 GLScreen ... 550 메인 메뉴 화면 ... 551 도움말 화면 ... 555 하이스코어 화면 ... 558 시뮬레이션 클래스 ... 561 WorldRenderer 클래스 ... 591 최적화하기 또는 최적화하지 않기 ... 596 정리 ... 598 10장 오픈GL ES를 활용한 3D ... 601 시작에 앞서 ... 602 3D의 정점 ... 602 Vertices3: 3D 위치의 저장 ... 602 예제 ... 605 시점 투영 가까이 있는 대상을 더 크게 ... 609 z버퍼 혼란 속에 질서를 부여하다 ... 612 이전 예제의 수정 ... 614 블렌딩 뒤에 아무도 없다 ... 615 z버퍼의 정확도와 z 파이팅 ... 618 3D 메시의 정의 ... 620 큐브 Hello World 3D ... 621 예제 ... 624 다시 살펴보는 매트릭스와 변형 ... 628 매트릭스 스택 ... 629 매트릭스 스택을 갖춘 계층적 시스템 ... 631 간단한 나무상자 태양계 시스템 ... 632 정리하기 ... 636 간단한 카메라 시스템 ... 640 정리 ... 644 11장 3D 프로그래밍 트릭 ... 647 시작에 앞서 ... 647 3D에서의 벡터 ... 648 오픈GL ES에서의 광원 ... 654 광원의 적용 방식 ... 654 광원 ... 656 재료 ... 657 오픈GL ES가 빛을 계산하는 방법 정점 법선 ... 658 실제 적용 ... 659 오픈GL ES의 광원 사용과 관련한 몇 가지 참고 사항 ... 676 밉매핑 ... 677 간단한 카메라 ... 683 1인칭 카메라 또는 오일러 카메라 ... 683 오일러 카메라 예제 ... 687 관찰 카메라 ... 394 모델의 로딩 ... 697 Wavefront OBJ 형식 ... 697 OBJ 로더의 구현 ... 699 OBJ 로더의 활용 ... 705 모델 로딩과 관련한 참고사항 ... 705 간단한 3D 물리 이론 ... 706 3D에서의 충돌 감지와 객체 표현 ... 707 3D에서의 경계 도형 ... 707 경계 구의 충돌 검사 ... 708 GameObject3D와 DynamicGameObject3D ... 710 정리 ... 712 12장 드로이드 인베이더 그랜드 파이널 ... 715 핵심 게임 방식 ... 715 배경 이야기와 아트 스타일 ... 717 게임 화면과 화면 전환 ... 718 게임 세계의 정의 ... 719 자원의 생성 ... 721 UI 자원 ... 721 게임 자원 ... 722 음악과 효과음 ... 724 접근 방법 ... 725 Assets 클래스 ... 725 Settings 클래스 ... 729 메인 액티비티 ... 731 메인 메뉴 화면 ... 732 설정 화면 ... 736 시뮬레이션 클래스 ... 739 Shield 클래스 ... 740 Shot 클래스 ... 740 우주선 클래스 ... 741 인베이더 클래스 ... 744 세계 클래스 ... 747 GameScreen 클래스 ... 755 WorldRender 클래스 ... 764 최적화 ... 771 정리 ... 773 13장 게임 배포 ... 775 테스트에 대한 조언 ... 775 개발자 등록 ... 777 게임 APK 서명 ... 778 마켓에 게임 배포 ... 781 자원 업로드 ... 782 Listing Details ... 783 배포 옵션 ... 784 배포! ... 784 마케팅 ... 785 개발자 콘솔 ... 785 정리 ... 787 14장 이제 어디로? ... 789 게임의 소셜 연동 ... 789 위치 기반 게임 ... 790 멀티플레이어 기능 ... 790 오픈GL ES 2.0 및 그 외 기능 ... 790 프레임워크와 엔진 ... 791 웹 자료 ... 793 맺음말 ... 793 찾아보기 ... 794