본문 바로가기

도서 소개

오브젝티브-C로 배우는 아이폰 게임 개발

 오브젝티브-C로 배우는
아이폰 게임 개발

 2017년 1월 4일부로 더 이상 판매되지 않습니다. 

출판사      제이펍
원출판사  O'Reilly (원서 ISBN 9780596159856)
원서명      iPhone Game Development: Developing 2D & 3D games in Objective-C
저자명     폴 저클(Paul Zirkle), 조 호그(Joe Hogue)
역자명     이대근
출판일     2010년 3월 29일
페이지     324쪽
사이즈     188*245
제  본     반양장(Soft Cover)

정  가      24,000원
ISBN       978-89-962410-7-2  부가기호: 13560
시리즈     I♥Mobile 01 (아이러브모바일 01)
분  야      모바일 프로그래밍 / 아이폰 / 게임 프로그래밍


관련 사이트


샘플 챕터

아이폰게임개발_1장.zip



소스 코드

아이폰게임개발_예제소스코드.zip


도서 구매 사이트
강컴    교보문고    도서11번가    리브로    반디앤루니스    알라딘    영풍문고    예스이십사    인터파


아이폰 게임 개발 참고 사이트
코드 참조
Game Kit Programming Guide: http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html

물리 라이브러리

SQLite (SQL database):
http://www.sqlite.org/
Bullet (3D physics): http://www.bulletphysics.com/
Open Dynamics Engine (3D physics): http://www.ode.org/
Newton (3D physics): http://newtondynamics.com/
Box2D (2D physics): http://www.box2d.org/


미들웨어

Cocos2D:
http://code.google.com/p/cocos2d-iphone/
Oolong: http://oolongengine.com/
Torque 3D: http://www.garagegames.com/products/
Unity: http://unity3d.com/
IrrLicht Engine: http://irrlicht.sourceforge.net

오픈 소스 게임
Tris (Tetris clone): http://code.google.com/p/tris/
Wolfenstein 3D (John Carmack)ftp://ftp.idsoftware.com/idstuff/wolf3d/wolf3d_iphone_v1.0_src.zip
iPhone Quake 3 Arena (port of the PC original):
http://code.google.com/p/quake3-iphone/


이 책의 목표
▶ 이 책의 우선적인 목표는 모든 개발자가 언제나 펼쳐볼 수 있는 아이폰 게임 개발 책을 초보와 숙련된 게임 프로그래머 모두에게 알맞은 형태로 제공하는 것이다.
▶ 이 책은 예제 게임을 빌드하고, 나아가 스스로 게임을 만들어 빌드하기 위해 알아야 하는 모든 것을 위한 소스 그 자체이다.
▶ 게임 엔진을 만드는 핵심 개념과 그것을 아이폰에 적용하는 방법 모두를 제공한다.

2D 게임을 만들기 위해 기본적인 Objective-C를 학습시켜 아이폰 SDK를 이용할 수 있도록 한다.
3D 게임을 만들기 위해 아이폰에서 사용할 OpenGL ES를 소개한다.
▶ 게임을 앱 스토어에 올리는 것이 두렵지 않게 하기 위해 인증 과정에 익숙해지도록 한다.


이 책의 구성
1장, 아이폰 입문에서는 애플 개발자 계정 생성 같은 세부 계획을 포함해서 인터페이스를 만들고 Objective-C로 코드를 만들어 본다.
2장, 게임 엔진 해부
에서는 유지보수가 쉽고 재미있는 게임 애플리케이션을 제작케 하는 게임 로직과 좋은 디자인의 요소를 소개한다.
3장, 프레임워크
는 애플 SDK가 제공하는 기능을 보충하기 위해 작성한 특별한 게임 구현과 중대한 클래스를 감싸는 코드를 보여준다.
4장, 2D 게임 엔진
3장에서 만든 프레임워크를 기본으로 네 개의 레벨이 있는 완성된 게임을 만든다. 2D로 시작하는 이유는 게임 작업과 코드의 복잡함이 3D보다는 2D가 더 쉽기 때문이다. 기본 움직임, 비주얼과 오디오 이펙트, 게임 레벨 이동, 그 외의 다른 게임 프로그래밍 요소까지 다룬다.
5장, 3D 게임
3D 게임을 만들기 위해 더 복잡한 작업을 설명한다. OpenGL 라이브러리를 사용하지만 그 목표는 3D 기초의 설명이나 OpenGL이 아니고, 게임 프로그래밍에 그것들을 사용하기 위해 필요한 고유 기술을 알려주는 것이다.
6장, 게임 디자인의 고려사항
은 고급 개발자들을 위해 책을 몇 가지 큰 기준으로 간추리고 좋은 라이브러리와 미들웨어를 포함하는 더 많은 리소스를 알려준다.
부록, 참고문헌
은 정보, 라이브러리, 제품의 좋은 소스를 알려준다.

학습 선행조건
책의 내용들을 모두 이해하려면 프로그래밍 지식이 어느 정도 있어야 한다. 아이폰은 Objective-C를 사용하지만 대부분의 사람들은 C/C++이나 자바에 익숙하기 때문에 기본에 익숙해지도록 1장에는 Objective-C의 기초를 넣었다.

또한 Mac이 필요하다. 아이폰 SDK OS X에서만 되기 때문에 아이폰 개발을 진지하게 생각하고 있다면 맥의 구입은 필수다. 다행히 기본 모델인 맥 미니는 아이폰 개발에 충분한 성능을 가지고 있고, 기존의 모니터와 키보드를 설치해서 사용할 수 있다. 반면에 맥이 있으면 Xcode IDE는 무료다
.

세 번째로 필요한 건 꼭 필요한 것은 아니다. 하지만 강력히 추천한다. 아이폰이나 아이팟 터치가 있어야 한다. 책에서 아이폰이라고 말을 하지만, 아이폰용으로 만든 게임은 아이팟 터치에서도 작동한다. 어떤 이들은 아이폰 시뮬레이터만 가지고도 아이폰 게임을 만들 수 있다고 믿는다. 이렇게 하는 것은 사실 가능하고 앱 스토어에도 올릴 수도 있지만, 기기에서 개발하고 테스트할 것을 강력히 권한다. 여러분이 직접 플레이할 수도 없는 게임이 어떻게 좋은 평가를 받을 수 있겠는가
?

이 세 가지 외의 다른 필요한 모든 것들을 다운받거나 배울 수 있는 곳이 있다.
https://sourceforge.net/projects/iphonegamebook/에서 좋은 클래스와 예제들을 만들고 있고, 모든 예제 소스 코드를 이곳에서 받을 수 있다.

대상 독자
이전에 말한 것처럼 독자가 어느 정도 기초적인 프로그래밍 지식이 있을 것이라 생각한다. 하지만 게임 프로그래밍 경험이 없고 게임 엔진과 유저 인터페이스 디자인에 대한 기초 이론이 필요할 수도 있다. 아니면 다른 플랫폼에서 비디오 게임을 만들어본 경험이 많고, 단지 터치스크린 개념과 아이폰 SDK와 빌드 과정만 익힐 필요가 있을 수도 있다. 크로스 플랫폼 게임에 사용할 이식성 높은 코드 작성법이나 어떤 미들웨어 솔루션이 현재 존재하는지와 같은 심화 주제에 관심이 있을 수도 있다. 어느 쪽이건 이 책이 도움이 될 것이다.

뒷표지 소개글
“현재 게임을 제작 중인 아이폰 앱 개발회사의 오너이기에, 이 책이 게임 엔진을 구축하고 게임과 레벨 설계를 하는 데에 소중한 동료임을 알았다. 이 책은 아이폰 게임 프로그래머들의 진정한 자산이다.
_브래드 오헌(Brad OHearne)
_Big Hill SoftWare LLCthe Phoenix iPhone Developer Group 창립자

아이폰 게임을 만들려면 무엇이 필요할까? 이미 아이폰 애플리케이션을 몇 번 만든 경험이 있어도 아이폰의 제스쳐 인터페이스와 작은 크기의 화면으로 인해 게임 개발은 새로운 기술들을 필요로 한다. 이 책은 게임 개발에 필요한 그래픽과 오디오를 다루는 법, 게임의 물리를 구현하는 법, 2D 3D 게임 개발법 등 아이폰 게임 프로그래밍의 핵심 기술들을 제공하고 있다.

미리 만들어둔 예제의 실행과 명확한 설명을 통해 아이폰과 아이팟 터치에 특화된 기술적인 설계 이슈들을 쉽게 배울 수 있을 것이다. 또한 이 책은 여러 종류의 게임에서 성능을 극대화하는 방법을 제시하고 있으며, 아이폰의 게임 프로그래밍 지원이 취약한 부분을 보충하기 위한 플러그인 클래스도 소개하고 있다
.

■ 사용자 경험을 보증하는 아이폰용 게임 개발방법을 배운다.

■ 오브젝티브-C Xcode 도구 모음에 익숙해진다.
■ 아이폰 인터페이스를 게임에 맞추는 방법을 배운다.
■ 게임 앱에 쓸 유연하면서도 확장이 가능한 프레임워크를 만든다.
2D 3D 그래픽 구현에 필요한 것들을 이해한다.
■ 음악, 효과음, 메뉴, 컨트롤 추가 방법을 배운다.
■ 앱스토어에 게임을 출시하는 방법을 배운다.

저자 소개
폴 저클(Paul Zirkle)
코나미(Konami Digital Entertainment)의 선임 모바일 프로그래머로서 5년이 넘는 모바일 게임 프로그래밍 개발 경력을 갖고 있다. 이식, 재작성, 새로운 개발을 합쳐서 40개 이상의 게임을 제작해왔다. 가끔 남캘리포니아 주립대학에 게임 개발 강의를 나가곤 한다.

조 호그(Joe Hogue)

EA(Electronic Arts)
의 모바일 프로그래머로서 모바일 게임 프로그래밍에 5년의 경험을 갖고 있다. 이식, 재작성, 새로운 개발을 합쳐 40개 이상의 게임을 제작해왔다. 최근에는 아이튠즈 앱 스토어에서 이용할 수 있는 아이폰 게임을 제작하였다.

역자 소개
이대근(thatsplenty앳gmail.com)
고려대학교에서 전기전자전파를 전공하는 도중 오목 같은 게임의 AI를 어떻게 만드는지에 관심이 생겨서 프로그래밍에 입문하게 되었다. 임베디드 회사에서 마이크로프로세서를 수년간 다루며 실무 기초를 쌓고, 현재는 게임개발 회사에서 게임 AI를 주업무로 담당하고 있다.

차 례
Chapter 1 아이폰 입문
1.1 애플 개발자 계정과 SDK 다운로드   2
     1.1.1 애플리케이션 번들   3
     1.1.2 Xcode와 인터페이스 빌더   5
     1.1.3 뷰와 콘트롤러   15
1.2 기기에 올리기   23
     1.2.1 인증과 프로파일   24
     1.2.2 Xcode 설정   25
1.3 Objective-C 입문   28
     1.3.1 클래스   29
     1.3.2 인스턴스화   34
     1.3.3 메시지   34
     1.3.4 멤버 변수   36
     1.3.5 메모리 관리   36
     1.3.6 생성자와 소멸자   37
     1.3.7 인터페이스 빌더 통합   38
     1.3.8 C++ Objective-C 혼합   38
1.4 결론   39

Chapter 2 게임 엔진 해부

2.1
애플리케이션 프레임워크   42
     2.1.1
메인 루프   43
2.2
게임 스테이트 관리자   44
     2.2.1
스테이트 머신   45
     2.3
그래픽 엔진   49
     2.3.1
텍스처링   49
     2.3.2
애니메이션   54
     2.3.3
물리 엔진   60
     2.3.4
오디오 엔진   66
     2.3.5
플레이어 입력   69
     2.3.6
게임 로직   73
2.4
결론   82

Chapter 3 프레임워크

3.1
게임 스테이트 관리   84
     3.1.1
구현   86
     3.1.2
상태 바 제거   89
3.2 App Delegate   89

     3.2.1 FPS   91
3.3
이벤트 핸들링   93
3.4
리소스 매니저   95
     3.4.1
텍스처 포맷   95
     3.4.2
사운드 포맷   96
     3.4.3
리소스 배포   96
     3.4.4
관리   96
3.5
렌더 엔진   98
     3.5.1 GLESGameState   99

     3.5.2
텍스처   100
     3.5.3
폰트 텍스처   102
     3.5.4
예제 스테이트   104
3.6
사운드 엔진   106
     3.6.1
예제 스테이트   107
3.7
데이터 저장   109
     3.7.1
간단한 데이터 저장   110
     3.7.2
복잡한 데이터 저장   110
     3.7.3
예제 스테이트   111
3.8
뼈대 애플리케이션   115
3.9
결론   117

Chapter 4 2D 게임 엔진

4.1
게임 디자인   119
     4.1.1
기능 목록   120
     4.1.2
사용자 입력 구조   122
     4.1.3
학습 곡선   124
4.2
타일 엔진   126
     4.2.1
유니크 타일   126
     4.2.2
타일 그리기   128
     4.2.3 TileWorld
클래스   130
4.3
애니메이션   136
     4.3.1
애니메이션과 스프라이트 클래스   137
4.4
물리   151
     4.4.1
개체   151
     4.4.2
개체-게임 세계   153
     4.4.3
특수한 타일   157
     4.4.4
개체-개체   157
4.5
레벨 1 구현   159
     4.5.1 gsEmuLevel   159

     4.5.2 TileWorld   160
     4.5.3
메인 캐릭터   161
     4.5.4
에뮤 새끼   165
     4.5.5
에뮤 어미   173
     4.5.6
게임 로직   175
     4.5.7
사운드   177
4.6
레벨 2 구현   177
     4.6.1 gsLionLevel   178

     4.6.2 TileWorld   179
     4.6.3 McGuffin   181
     4.6.4
메인 케릭터   181
     4.6.5
사자 개체   182
     4.6.6
게임 로직   191
     4.6.7
사운드   192
4.7
레벨 3 구현   192
     4.7.1 gsMazeLevel   193

     4.7.2 TileWorld   194
     4.7.3
버튼   197
     4.7.4
  198
     4.7.5
고양이와 쥐   199
     4.7.6
사용자 입력   199
     4.7.7
게임 로직   200
     4.7.8
사운드   208
4.8
레벨 4 구현   208
     4.8.1 gsRiverLevel   209

     4.8.2 TileWorld   210
     4.8.3
악어   212
     4.8.4
통나무   213
     4.8.5 Tom   214

     4.8.6
사용자 입력   217
     4.8.7
게임 로직   218
     4.8.8
사운드   222
4.9
게임 스테이트 직렬화   223
     4.9.1
저장소 초기화   223
     4.9.2
게임 끝내기   223
     4.9.3 UI
수정   228
4.10
결론   228

Chapter 5 3D 게임

5.1 GLESGameState3D
클래스   231
     5.1.1 POWERVR   233

     5.1.2 Sprite3D   235
     5.1.3
가속도계   236
5.2 3D
게임 디자인   238
     5.2.1
그래픽   238
     5.2.2
입력   240
     5.2.3
카메라   241
     5.2.4
로직   241
5.3
구현   241
     5.3.1
카메라   243
     5.3.2 Skybox   247

     5.3.3
입력   250
     5.3.4
고리   259
     5.3.5
파티클 시스템   265
     5.3.6
로직   275
     5.3.7
최고 기록   277
5.4
게임 끝내기   280
5.5
결론   283

Chapter 6 게임 디자인의 고려사항

6.1
리소스 관리   286
6.2
사용자 입력 디자인   286
6.3
네트워킹   287
6.4
써드파티 코드   288
     6.4.1
라이브러리   288
     6.4.2
미들웨어   289
     6.4.3
오픈 소스 게임   289
6.5
앱 스토어   290
6.6
결론   291

Appendix 참고문헌

A.1
코드 참조   293
A.2
물리 라이브러리   293
A.3
미들웨어   294
A.4
오픈 소스 게임   294