01장 안드로이드, 뉴 키즈 온 더 블록
안드로이드에 대한 간단한 소개
파편화
구글의 역할
- 안드로이드 오픈소스 프로젝트
- 안드로이드 마켓
- 챌린지, 개발자 지원 프로그램, 구글 I/O
안드로이드의 기능과 아키텍처
- 커널
- 런타임과 달빅
- 시스템 라이브러리
애플리케이션 프레임워크
소프트웨어 개발 킷
개발자 커뮤니티
기기, 기기, 기기!
- 하드웨어
- 1세대, 2세대, 차세대
- 차세대 기기
- 게임 컨트롤러
모바일 게임의 차이점
- 주머니 속으로 들어간 게임 기기
- 상시 접속 상태의 유지
- 캐주얼 게임과 하드코어 게임
- 큰 시장과 적은 수의 개발자
정리
02장 안드로이드 SDK 첫 걸음
개발 환경의 설정
- JDK의 설정
- 안드로이드 SDK의 설정
- 이클립스의 설치
- ADT 이클립스 플러그인의 설치
- 이클립스 간단히 살펴보기
안드로이드 방식의 Hello World
- 프로젝트의 생성
- 프로젝트 내용 살펴보기
- 애플리케이션 코드의 작성
안드로이드 애플리케이션의 실행과 디버깅
- 기기 연결
- 안드로이드 가상 기기의 생성
- 애플리케이션의 실행
- 애플리케이션 디버깅
- 로그캣과 DDMS
- ADB의 활용
정리
03장 게임 개발
장르 - 각인각색
- 캐주얼 게임
- 퍼즐 게임
- 액션 및 아케이드 게임
- 타워 디펜스 게임
- 혁신 게임
게임 설계 - 펜은 코드보다 강하다.
- 핵심 게임 방식
- 게임 스토리와 아트 스타일
- 화면과 화면 전환
코드 - 핵심적인 세부 내용
- 애플리케이션과 창 관리
- 입력
- 파일 I/O
- 오디오
- 그래픽
- 게임 프레임워크
정리
04장 게임 개발자를 위한 안드로이드
안드로이드 애플리케이션의 정의 - 매니페스트 파일
- [manifest] 엘리먼트
- [application] 엘리먼트
- [activity] 엘리먼트
- [uses-permission] 엘리먼트
- [uses-feature] 엘리먼트
- [uses-sdk] 엘리먼트
- 10단계로 끝내는 안드로이드 게임 프로젝트 설정
- 게임의 아이콘 정의
안드로이드 API의 기본
- 테스트 프로젝트의 생성
- 액티비티 생명주기
- 입력 기기의 처리
- 파일 처리
- 오디오 프로그래밍
- 효과음의 재생
- 스트리밍 음악
- 기본 그래픽 프로그래밍
모범 개발 방식
정리
05장 안드로이드 게임 개발 프레임워크
공략 계획
AndroidFileIO 클래스
AndroidAudio, AndroidSound, AndroidMusic
AndroidInput과 AccelerometerHandler
- AccelerometerHandler: 가속도계의 감지
- Pool 클래스: 재사용은 좋은 것이다!
- KeyboardHandler: 위, 아래, 왼쪽, 오른쪽
- 터치 핸들러
- AndroidInput: 위대한 조율자
AndroidGraphics과 AndroidPixmap: 두 개의 무지개
- 각기 다른 화면 크기와 해상도의 처리
- AndroidPixmap: 사용자를 위한 픽셀 조정
- AndroidGraphics: 드로잉 작업의 수행
- AndroidFastRenderView: 루프, 확장, 루프, 확장
AndroidGame: 모든 내용의 종합
정리
06장 Mr. Nom 안드로이드를 침공하다
자원의 생성
프로젝트 설정
MrNomGame: 메인 액티비티
- Assets: 편리한 자원 저장소
- Settings: 사용자 선택값과 하이스코어의 추적
- LoadingScreen: 디스크로부터 자원 로드
메인 메뉴 화면
HelpScreen 클래스(들)
하이스코어 화면
- 숫자 렌더링: 짧은 여행
- 화면 구현
추상화... 301
- Mr. Nom의 게임 공간에 대한 추상화: 모델, 뷰, 컨트롤러
- GameScreen 클래스
정리
07장 오픈GL ES의 간단한 소개
오픈GL ES는 무엇이고 왜 알아야 하나?
- 프로그래밍 모델: 비유
- 투영
- 정규화된 기기 공간과 뷰포트
- 매트릭스
- 렌더링 파이프라인
시작에 앞서 알아야 할 내용들
작업을 쉽게 도와주는 GLSurfaceView
GCGame: Game 인터페이스의 구현
엄마, 내가 빨간색 삼각형을 그렸어!
- 뷰포트의 정의
- 투영 매트릭스의 정의
- 삼각형의 지정
- 내용 정리
정점 색상의 지정
텍스처 매핑: 손 쉬운 이미지 배치 작업
- 텍스처 좌표
- 비트맵 업로드
- 텍스처 필터링
- 텍스처의 정리
- 유용한 코드 조각
- 텍스처 활성화
- 내용 정리
- 텍스처 클래스
인덱스를 갖는 정점 - 재사용은 항상 유용하다.
- 내용 정리
- Vertices 클래스
알파 블렌딩
다양한 원시 도형 : 점, 선, 스트립, 팬
2차원 변형: 모델-뷰 매트릭스를 활용한 재미있는 프로그래밍
- 세계 공간과 모델 공간
- 다시 살펴보는 매트릭스
- 변형을 활용한 첫 번째 예제
- 더 많은 변형
성능 최적화
- 프레임 레이트의 측정
- 안드로이드 1.5에서 실행되는 히어로의 문제 사례
- 오픈GL ES 렌더링을 느리게 만드는 요인
- 불필요한 상태 변화의 제거
- 텍스처 크기를 줄이면 가져올 픽셀도 줄어든다
- 오픈GL ES/JNI 메서드 호출의 제한
- 바인딩 정점
- 마무리하며
정리
08장 2D 게임 프로그래밍 기법
시작에 앞서
태초에 벡터가 있었다
- 벡터의 활용
- 간단한 삼각함수 이론
- Vector 클래스의 구현
- 간단한 사용 예제
간단한 2차원 물리
- 뉴턴과 오일러, 영원한 좋은 친구들
- 힘과 질량
- 이론적인 적용
- 실제 적용
충돌 감지와 2차원에서의 객체 표현
- 경계 도형
- 경계 도형의 구성
- 게임 객체의 어트리뷰트
- 광범위 충돌 감지와 미세 충돌 감지
- 적용 예제
2차원 카메라
- Camera2D 클래스
- 예제
텍스처 아틀라스: 공유는 관심이다
- 예제
텍스처 영역, 스프라이드, 배치: 오픈GL ES 숨기기
- TextureRegion 클래스
- SpriteBatcher 클래스
스프라이트 애니메이션
- Animation 클래스
- 예제
정리
09장 수퍼 점퍼 - 2D 오픈GL ES 게임
핵심 게임 방식
게임의 배경 이야기와 아트 스타일
화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 요소
- 비트맵 폰트를 활용한 텍스트 처리
- 게임 요소
- 텍스처 아틀라스
- 음악과 효과음
수퍼 점퍼 게임의 구현
- Assets 클래스
- Settings 클래스
- 메인 액티비티
- Font 클래스
- GLScreen
- 메인 메뉴 화면
- 도움말 화면
- 하이스코어 화면
- 시뮬레이션 클래스
- WorldRenderer 클래스
최적화하기 또는 최적화하지 않기
정리
10장 오픈GL ES를 활용한 3D
시작에 앞서
3D의 정점
- Vertices3: 3D 위치의 저장
- 예제
시점 투영 - 가까이 있는 대상을 더 크게
z버퍼 - 혼란 속에 질서를 부여하다
- 이전 예제의 수정
- 블렌딩 - 뒤에 아무도 없다
- z버퍼의 정확도와 z 파이팅
3D 메시의 정의
- 큐브 - Hello World 3D
- 예제
다시 살펴보는 매트릭스와 변형
- 매트릭스 스택
- 매트릭스 스택을 갖춘 계층적 시스템
- 간단한 나무상자 태양계 시스템
- 정리하기
- 간단한 카메라 시스템
정리
11장 3D 프로그래밍 트릭
시작에 앞서
3D에서의 벡터
오픈GL ES에서의 광원
- 광원의 적용 방식
- 광원
- 재료
- 오픈GL ES가 빛을 계산하는 방법 - 정점 법선
- 실제 적용
- 오픈GL ES의 광원 사용과 관련한 몇 가지 참고 사항
밉매핑
간단한 카메라
- 1인칭 카메라 또는 오일러 카메라
- 오일러 카메라 예제
- 관찰 카메라
모델의 로딩
- Wavefront OBJ 형식
- OBJ 로더의 구현
- OBJ 로더의 활용
- 모델 로딩과 관련한 참고사항
간단한 3D 물리 이론
3D에서의 충돌 감지와 객체 표현
- 3D에서의 경계 도형
- 경계 구의 충돌 검사
- GameObject3D와 DynamicGameObject3D
정리
12장 드로이드 인베이더 - 그랜드 파이널
핵심 게임 방식
배경 이야기와 아트 스타일
게임 화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 자원
- 게임 자원
- 음악과 효과음
접근 방법
Assets 클래스
Settings 클래스
메인 액티비티
메인 메뉴 화면
설정 화면
시뮬레이션 클래스
- Shield 클래스
- Shot 클래스
- 우주선 클래스
- 인베이더 클래스
- 세계 클래스
GameScreen 클래스
WorldRender 클래스
최적화
정리
13장 게임 배포
테스트에 대한 조언
개발자 등록
게임 APK 서명
마켓에 게임 배포
- 자원 업로드
- Listing Details
- 배포 옵션
- 배포!
- 마케팅
개발자 콘솔
정리
14장 이제 어디로?
게임의 소셜 연동
위치 기반 게임
멀티플레이어 기능
오픈GL ES 2.0 및 그 외 기능
프레임워크와 엔진
웹 자료
맺음말
안드로이드에 대한 간단한 소개
파편화
구글의 역할
- 안드로이드 오픈소스 프로젝트
- 안드로이드 마켓
- 챌린지, 개발자 지원 프로그램, 구글 I/O
안드로이드의 기능과 아키텍처
- 커널
- 런타임과 달빅
- 시스템 라이브러리
애플리케이션 프레임워크
소프트웨어 개발 킷
개발자 커뮤니티
기기, 기기, 기기!
- 하드웨어
- 1세대, 2세대, 차세대
- 차세대 기기
- 게임 컨트롤러
모바일 게임의 차이점
- 주머니 속으로 들어간 게임 기기
- 상시 접속 상태의 유지
- 캐주얼 게임과 하드코어 게임
- 큰 시장과 적은 수의 개발자
정리
02장 안드로이드 SDK 첫 걸음
개발 환경의 설정
- JDK의 설정
- 안드로이드 SDK의 설정
- 이클립스의 설치
- ADT 이클립스 플러그인의 설치
- 이클립스 간단히 살펴보기
안드로이드 방식의 Hello World
- 프로젝트의 생성
- 프로젝트 내용 살펴보기
- 애플리케이션 코드의 작성
안드로이드 애플리케이션의 실행과 디버깅
- 기기 연결
- 안드로이드 가상 기기의 생성
- 애플리케이션의 실행
- 애플리케이션 디버깅
- 로그캣과 DDMS
- ADB의 활용
정리
03장 게임 개발
장르 - 각인각색
- 캐주얼 게임
- 퍼즐 게임
- 액션 및 아케이드 게임
- 타워 디펜스 게임
- 혁신 게임
게임 설계 - 펜은 코드보다 강하다.
- 핵심 게임 방식
- 게임 스토리와 아트 스타일
- 화면과 화면 전환
코드 - 핵심적인 세부 내용
- 애플리케이션과 창 관리
- 입력
- 파일 I/O
- 오디오
- 그래픽
- 게임 프레임워크
정리
04장 게임 개발자를 위한 안드로이드
안드로이드 애플리케이션의 정의 - 매니페스트 파일
- [manifest] 엘리먼트
- [application] 엘리먼트
- [activity] 엘리먼트
- [uses-permission] 엘리먼트
- [uses-feature] 엘리먼트
- [uses-sdk] 엘리먼트
- 10단계로 끝내는 안드로이드 게임 프로젝트 설정
- 게임의 아이콘 정의
안드로이드 API의 기본
- 테스트 프로젝트의 생성
- 액티비티 생명주기
- 입력 기기의 처리
- 파일 처리
- 오디오 프로그래밍
- 효과음의 재생
- 스트리밍 음악
- 기본 그래픽 프로그래밍
모범 개발 방식
정리
05장 안드로이드 게임 개발 프레임워크
공략 계획
AndroidFileIO 클래스
AndroidAudio, AndroidSound, AndroidMusic
AndroidInput과 AccelerometerHandler
- AccelerometerHandler: 가속도계의 감지
- Pool 클래스: 재사용은 좋은 것이다!
- KeyboardHandler: 위, 아래, 왼쪽, 오른쪽
- 터치 핸들러
- AndroidInput: 위대한 조율자
AndroidGraphics과 AndroidPixmap: 두 개의 무지개
- 각기 다른 화면 크기와 해상도의 처리
- AndroidPixmap: 사용자를 위한 픽셀 조정
- AndroidGraphics: 드로잉 작업의 수행
- AndroidFastRenderView: 루프, 확장, 루프, 확장
AndroidGame: 모든 내용의 종합
정리
06장 Mr. Nom 안드로이드를 침공하다
자원의 생성
프로젝트 설정
MrNomGame: 메인 액티비티
- Assets: 편리한 자원 저장소
- Settings: 사용자 선택값과 하이스코어의 추적
- LoadingScreen: 디스크로부터 자원 로드
메인 메뉴 화면
HelpScreen 클래스(들)
하이스코어 화면
- 숫자 렌더링: 짧은 여행
- 화면 구현
추상화... 301
- Mr. Nom의 게임 공간에 대한 추상화: 모델, 뷰, 컨트롤러
- GameScreen 클래스
정리
07장 오픈GL ES의 간단한 소개
오픈GL ES는 무엇이고 왜 알아야 하나?
- 프로그래밍 모델: 비유
- 투영
- 정규화된 기기 공간과 뷰포트
- 매트릭스
- 렌더링 파이프라인
시작에 앞서 알아야 할 내용들
작업을 쉽게 도와주는 GLSurfaceView
GCGame: Game 인터페이스의 구현
엄마, 내가 빨간색 삼각형을 그렸어!
- 뷰포트의 정의
- 투영 매트릭스의 정의
- 삼각형의 지정
- 내용 정리
정점 색상의 지정
텍스처 매핑: 손 쉬운 이미지 배치 작업
- 텍스처 좌표
- 비트맵 업로드
- 텍스처 필터링
- 텍스처의 정리
- 유용한 코드 조각
- 텍스처 활성화
- 내용 정리
- 텍스처 클래스
인덱스를 갖는 정점 - 재사용은 항상 유용하다.
- 내용 정리
- Vertices 클래스
알파 블렌딩
다양한 원시 도형 : 점, 선, 스트립, 팬
2차원 변형: 모델-뷰 매트릭스를 활용한 재미있는 프로그래밍
- 세계 공간과 모델 공간
- 다시 살펴보는 매트릭스
- 변형을 활용한 첫 번째 예제
- 더 많은 변형
성능 최적화
- 프레임 레이트의 측정
- 안드로이드 1.5에서 실행되는 히어로의 문제 사례
- 오픈GL ES 렌더링을 느리게 만드는 요인
- 불필요한 상태 변화의 제거
- 텍스처 크기를 줄이면 가져올 픽셀도 줄어든다
- 오픈GL ES/JNI 메서드 호출의 제한
- 바인딩 정점
- 마무리하며
정리
08장 2D 게임 프로그래밍 기법
시작에 앞서
태초에 벡터가 있었다
- 벡터의 활용
- 간단한 삼각함수 이론
- Vector 클래스의 구현
- 간단한 사용 예제
간단한 2차원 물리
- 뉴턴과 오일러, 영원한 좋은 친구들
- 힘과 질량
- 이론적인 적용
- 실제 적용
충돌 감지와 2차원에서의 객체 표현
- 경계 도형
- 경계 도형의 구성
- 게임 객체의 어트리뷰트
- 광범위 충돌 감지와 미세 충돌 감지
- 적용 예제
2차원 카메라
- Camera2D 클래스
- 예제
텍스처 아틀라스: 공유는 관심이다
- 예제
텍스처 영역, 스프라이드, 배치: 오픈GL ES 숨기기
- TextureRegion 클래스
- SpriteBatcher 클래스
스프라이트 애니메이션
- Animation 클래스
- 예제
정리
09장 수퍼 점퍼 - 2D 오픈GL ES 게임
핵심 게임 방식
게임의 배경 이야기와 아트 스타일
화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 요소
- 비트맵 폰트를 활용한 텍스트 처리
- 게임 요소
- 텍스처 아틀라스
- 음악과 효과음
수퍼 점퍼 게임의 구현
- Assets 클래스
- Settings 클래스
- 메인 액티비티
- Font 클래스
- GLScreen
- 메인 메뉴 화면
- 도움말 화면
- 하이스코어 화면
- 시뮬레이션 클래스
- WorldRenderer 클래스
최적화하기 또는 최적화하지 않기
정리
10장 오픈GL ES를 활용한 3D
시작에 앞서
3D의 정점
- Vertices3: 3D 위치의 저장
- 예제
시점 투영 - 가까이 있는 대상을 더 크게
z버퍼 - 혼란 속에 질서를 부여하다
- 이전 예제의 수정
- 블렌딩 - 뒤에 아무도 없다
- z버퍼의 정확도와 z 파이팅
3D 메시의 정의
- 큐브 - Hello World 3D
- 예제
다시 살펴보는 매트릭스와 변형
- 매트릭스 스택
- 매트릭스 스택을 갖춘 계층적 시스템
- 간단한 나무상자 태양계 시스템
- 정리하기
- 간단한 카메라 시스템
정리
11장 3D 프로그래밍 트릭
시작에 앞서
3D에서의 벡터
오픈GL ES에서의 광원
- 광원의 적용 방식
- 광원
- 재료
- 오픈GL ES가 빛을 계산하는 방법 - 정점 법선
- 실제 적용
- 오픈GL ES의 광원 사용과 관련한 몇 가지 참고 사항
밉매핑
간단한 카메라
- 1인칭 카메라 또는 오일러 카메라
- 오일러 카메라 예제
- 관찰 카메라
모델의 로딩
- Wavefront OBJ 형식
- OBJ 로더의 구현
- OBJ 로더의 활용
- 모델 로딩과 관련한 참고사항
간단한 3D 물리 이론
3D에서의 충돌 감지와 객체 표현
- 3D에서의 경계 도형
- 경계 구의 충돌 검사
- GameObject3D와 DynamicGameObject3D
정리
12장 드로이드 인베이더 - 그랜드 파이널
핵심 게임 방식
배경 이야기와 아트 스타일
게임 화면과 화면 전환
게임 세계의 정의
자원의 생성
- UI 자원
- 게임 자원
- 음악과 효과음
접근 방법
Assets 클래스
Settings 클래스
메인 액티비티
메인 메뉴 화면
설정 화면
시뮬레이션 클래스
- Shield 클래스
- Shot 클래스
- 우주선 클래스
- 인베이더 클래스
- 세계 클래스
GameScreen 클래스
WorldRender 클래스
최적화
정리
13장 게임 배포
테스트에 대한 조언
개발자 등록
게임 APK 서명
마켓에 게임 배포
- 자원 업로드
- Listing Details
- 배포 옵션
- 배포!
- 마케팅
개발자 콘솔
정리
14장 이제 어디로?
게임의 소셜 연동
위치 기반 게임
멀티플레이어 기능
오픈GL ES 2.0 및 그 외 기능
프레임워크와 엔진
웹 자료
맺음말