목차
책의 대상 독자 ... 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
닫기