Top

게임 프로그래밍 알고리즘 [게임 프로그래머를 위한 실전 알고리즘 원리와 기법]

  • 원서명Game Programming Algorithms and Techniques: A Platform-Agnostic Approach (ISBN 9780321940155)
  • 지은이산자이 마드하브(Sanjay Madhav)
  • 옮긴이김홍중
  • ISBN : 9788960778016
  • 40,000원
  • 2015년 12월 30일 펴냄
  • 페이퍼백 | 404쪽 | 188*235mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개

이 책의 예제는 저자의 홈페이지(http://gamealgorithms.net/)에서 내려받을 수 있습니다.

요약

이 책은 서던 캘리포니아 대학교(USC)의 비디오게임 프로그래밍 과정 강사인 저자가 수업에 활용할 보조교재를 목적으로 쓴 책이다. 목적에 충실하게 특정 게임 엔진이나 플랫폼에 얽매이지 않고 2D, 3D 그래픽, 수학, 물리학, 사운드, 인공지능, 사용자 인터페이스 등 게임 개발에 쓰이는 다양한 알고리즘과 기법을 소개한다. 마지막으로 본문에서 소개한 내용을 종합해서 두 개의 예제 게임을 만들어 보면서 배운 내용을 복습한다.

이 책에서 다루는 내용

게임 시간의 운영, 속도 제어를 통해 하드웨어의 차이와 관계없이 일관성을 유지하는 방법

최신 모바일 게임에 쓰이는 핵심적인 2D 그래픽 기법

3D 게임에 필요한 벡터, 행렬, 선형 대수학

좌표 공간, 조명과 셰이딩, Z 버퍼링, 사원수 등 3D 그래픽 기법

다양한 디지털 입력, 아날로그 입력의 처리 방법

사운드 이벤트, 3D 오디오, 디지털 신호 처리를 포함하는 사운드 시스템

충돌 확인과 수치 적분을 포함하는 게임 물리학의 기초

1인칭 카메라, 수행 카메라, 스플라인 카메라 등 다양한 카메라

길 찾기, 상태 기반 행동, 전략과 계획 등의 인공지능

메뉴 시스템, HUD 같은 사용자 인터페이스

스크립트 언어와 텍스트 형식 데이터 파일을 사용해야 하는 이유와 시기, 상황

프로토콜과 네트워크 토폴로지 등 네트워크 게임에 필요한 기본 지식

이 책의 대상 독자

이 책은 C++, C#, 자바 같은 객체지향 언어로 프로그래밍하는 방법을 알고 연결 리스트, 이진 트리, 해시 테이블 같은 기본적인 데이터 구조에 친숙한 독자를 대상으로 한다. 일반적인 대학 컴퓨터 과학 교육 과정이라면 첫 두 학기에 이런 내용을 모두 소개하므로 수업만 잘 들었다면 별문제 없을 것이다. 또 미적분학을 수강했다면 선형 대수학, 물리학을 다루는 단원에서 소개하는 개념을 한층 수월하게 이해할 수 있을 것이다.

꼭 필요한 조건은 아니지만 간단한 게임을 기획해본 적이 있거나 게임에 친숙하기만 하다면 책의 내용을 이해하는 데 여러모로 유리하다. 특정 장르에만 쓰이는 프로그래밍 기법을 소개할 때도 있으므로 해당 장르 게임을 잘 알고 있다면 이해하기 쉬울 것이다. 또 게임메이커 같은 툴을 사용해서 게임을 프로토타이핑해본 적이 있다면 이해가 빠르겠지만 해본 적이 없어도 딱히 상관없다.

이 책은 강의를 목적으로 쓰였지만, 이미 일반적인 프로그래밍을 잘 알고 있으면서 전문적인 게임 프로그래밍에 관심이 있는 사람이라면 누구에게나 유용할 수 있다. 모든 주제를 실용성과 활용성에 초점을 맞춰서 설명한다는 점이 다른 대학 교재와의 차이점이다. 마지막으로 이 책은 게임 프로그래밍에 관한 다양한 주제를 폭넓게 소개하므로 게임 프로그래밍의 색다른 면모를 공부해보고 싶은 초보 프로그래머에게도 유용할 수 있다.

이 책의 구성

1장부터 12장까지는, 게임 프로그래밍에 쓰이는 다양한 알고리즘과 기법을 간략하게 소개한다. 2D/3D 그래픽, 물리학, 인공지능, 카메라 등 상당히 폭넓은 주제를 다룬다. 1장부터 순서대로 차례로 읽게 구성했지만, 어느 정도 벗어나도 상관없다.

마지막 두 개 장인 13장과 14장은 12장까지 앞에서 소개한 다양한 알고리즘과 기법을 토대로 만든 예제 게임을 소개하는 일종의 사례 연구를 다룬다. 두 개의 예제 게임은 각각 cocos2d를 사용해서 오브젝티브C로 만든 iOS용 2D 횡 스크롤 게임과 XNA, 모노 게임을 사용해서 C#으로 만든 PC, 맥, 리눅스용 3D 타워 디펜스 게임이다. 소스 코드는 이 책의 웹사이트인 http://gamealgorithms.net에서 다운로드할 수 있다.

1장, 게임 프로그래밍 개요

비디오 게임의 시대별 변천사를 통해 게임 프로그래머의 역할이 바뀌어온 과정을 간단하게 소개한다. 먼저 비디오 게임의 역사를 간략하게 살펴본 뒤에 게임을 프로그래밍하는 데 있어서 중요한 개념인 게임 루프, 시간 운영, 게임 오브젝트를 소개한다.

2장, 2D 그래픽

웹, 스마트폰, 독립 게임의 폭발적인 증가와 맞물려 2D 그래픽은 일종의 르네상스를 맞고 있다. 개발자가 2D에 끌리는 이유는 개발 예산과 인원을 줄일 수 있기 때문이다. 게이머가 2D에 끌리는 이유는 게임이 깔끔하고 단순하기 때문이다.
이 책은 주로 3D 게임에 초점을 맞추고 있지만 2D 그래픽에 숨어있는 핵심 개념을 그냥 지나치는 우를 범하진 않으려 한다. 또 다른 장에서 소개할 물리학, 음향, UI 프로그래밍에 관한 내용 중 상당수는 2D 게임과 3D 게임 양쪽에 똑같이 적용할 수 있다는 점도 명심하기 바란다.

3장, 선형 대수학

수학의 한 분야인 선형 대수학은 따로 책 한 권을 쓰기에 충분할 만큼 광범위한 학문이다. 하지만 3D 컴퓨터 게임에 쓰이는 선형 대수학은 그 넓은 범위 중 극히 일부다. 3장에서는 선형 대수학을 뒷받침하는 이론과 증명을 속속들이 소개하는 대신에 실제로 게임 프로그래밍과 관련이 있는 내용만 소개할 예정이다.
게임 프로그래머에게 벡터와 행렬의 중요성은 아무리 강조해도 지나치지 않다. 게임 업계에 종사하는 프로그래머라면 벡터와 행렬을 마주하지 않는 날이 드물 정도다.

4장, 3D 그래픽

최초의 3D 게임은 아케이드(상점가, 특히 국내의 경우 ‘오락실’을 의미) 시대에 등장했지만 사실상 3D 게임의 시대는 1990년대 중후반에 와서야 막을 올렸다. 요즘은 콘솔과 PC를 막론하고 거의 모든 AAA 타이틀이 3D 게임이다. 또 스마트폰의 성능이 높아지면서 모바일 게임에서도 3D의 비중이 점점 높아지고 있다.
기술적으로 3D 게임의 가장 큰 어려움은 3D인 게임 세계를 2D 화면에 표시해야 한다는 점이다. 4장에서는 이런 문제를 극복하는 데 필요한 요소를 설명하려 한다.

5장, 입력

게임에서 사용자의 입력을 빼버리면 영화, TV와 별다를 바 없다. 실제로 게임은 키보드, 마우스, 컨트롤러 등 다양한 입력 장치와 상호작용한다. 5장에서는 모바일 기기용 입력 장치를 포함해서 다종다양한 입력 장치를 상세하게 살펴본다. 게다가 한층 수준 높은 입력 시스템을 설계하고 구현하는 방법도 설명한다.

6장, 사운드

종종 간과하곤 하지만 사운드는 게임의 중요한 구성 요소다. 사운드의 중요성을 직접 느껴보고 싶다면 좋아하는 게임을 무음 상태로 플레이해보기 바란다. 사운드가 없으면 확실히 허전한 느낌이 들 것이다.
6장에서는 먼저 소스 데이터를 게임 코드가 재생할 ‘큐’로 전환하는 방법을 설명한다. 그런 다음 도플러 효과, 디지털 신호 처리, 사운드 폐쇄 등 특정 상황에서 쓸 수 있는 좀 더 수준 높은 사운드 기법을 소개한다.

7장, 물리학

아무리 물리학이 필요 없어 보이는 게임도 최소한 충돌 확인과 운동 정도는 구현해야 할 수 있다. 충돌 확인을 사용하면 두 게임 오브젝트가 서로 겹쳤는지 확인할 수 있다. 7장에서는 충돌을 확인할 때 사용할 수 있는 다양한 알고리즘 중에 가장 기본적인 알고리즘 몇 가지를 소개하려 한다.
물리학의 운동에 관한 부분에서는 고전역학에서 유래한 힘, 가속도, 질량 등의 속성을 고려해서 프레임 단위로 오브젝트의 위치를 결정하는 방법을 소개한다. 이 과정에는 미적분학, 특히 7장의 뒷부분에서 설명하는 수치 적분이 꼭 필요하다.

8장, 카메라

카메라는 3D 게임 세상에서 플레이어의 시점(視點)을 나타낸다. 게임에 쓰이는 카메라의 종류는 다양하며 기본적으로 게임에 사용할 카메라는 개발 초기에 결정해야 한다.
8장에서는 요즘 게임에 주로 쓰이는 카메라 몇 종류를 소개하고 카메라에 따라 신 안에서 처리해야 할 계산에 관해 설명한다. 또 4장, ‘3D 그래픽’에서 처음 소개했던 원근 투영에 관해 좀 더 자세히 살펴본다.

9장, 인공지능

9장에서는 인공지능의 세 가지 주요 측면인 길 찾기, 상태 기반 행동, 전략과 계획을 소개한다. 길 찾기 알고리즘은 플레이어가 조종할 수 없는 NPC가 게임 세계를 돌아다닐 경로를 결정한다. 또 NPC는 상태 기반 행동을 통해 자신의 행동을 결정한다. 마지막으로 전략과 계획은 실시간 전략(RTS) 게임처럼 대규모 AI 계획이 불가피할 때 필요하다.

10장, 사용자 인터페이스

일반적으로 게임의 사용자 인터페이스는 메뉴 시스템과 헤드업 디스플레이(HUD)라는 두 가지 구성 요소를 지닌다. 메뉴 시스템은 모드 변경, 게임 일시 정지, 설정 선택 등 플레이어가 게임에 참여하는 방법과 게임에서 벗어나는 방법을 정의한다. 또 RPG처럼 인벤토리나 스킬을 관리하는 메뉴가 따로 있는 게임도 있다.
레이더, 탄약 수, 나침반, 조준선 등 실제로 게임을 플레이하는 플레이어에게 부가적인 정보를 제공하는 모든 요소가 HUD에 속한다. HUD가 없는 게임도 있고 설정을 통해 HUD를 없앨 수 있는 게임도 있지만, 대부분의 게임은 하다못해 기본적인 형태일지언정 HUD를 가진다.

11장, 스크립트 언어와 데이터 형식

게임 플레이에 관한 코드를 스크립트 언어로 작성하는 게임이 점점 늘고 있다. 11장에서는 스크립트 언어의 장단점과 함께 게임에 사용할 수 있는 몇몇 스크립트 언어를 소개한다.
또 레벨을 구성하는 데이터와 기타 게임 속성을 저장하는 방법도 살펴본다. 스크립트 언어에서 데이터를 바이너리와 텍스트로 표현하는 방법도 함께 소개한다.

12장, 네트워크

네트워크를 지원하는 게임은 인터넷 너머의 플레이어와 함께 플레이할 수 있다. 최근 가장 인기 있는 네트워크 게임인 〈헤일로〉, 〈콜 오브 듀티〉, 〈월드 오브 워크래프트〉 등은 네트워크를 지원하거나 네트워크에 연결해야만 플레이할 수 있는 게임이다. AI가 아무리 발전했다고 해도 AI를 상대로 하는 게임 경험은 진짜 사람과 플레이할 때의 게임 경험에 비할 바가 아니다.
네트워크를 지원하는 게임의 구현은 책 한 권을 다 채울 수 있을 만큼 상당히 복잡한 주제다. 12장에서는 네트워크를 통해 데이터를 전달하는 기본적인 방법과 네트워크 지원 때문에 달라져야 하는 게임 설계 방법을 소개한다.

13장, iOS용 횡 스크롤 게임 예제

횡 스크롤 게임이란 옆에서 바라보는 상태로 진행하는 게임을 말한다. 그리고 무한 스크롤이란 플레이어가 죽을 때까지 끊임없이 게임 세계를 스크롤하는 방식을 말한다. 잘 알려진 무한 횡 스크롤 게임으로 〈제트팩 조이라이드(Jetpack Joyride)〉가 있다. 13장에서 살펴볼 〈Ship Attack〉이라는 예제 게임은 2D 공간에서 펼쳐지는 무한 횡 스크롤 게임으로, cocos2d 프레임워크를 사용해서 오브젝티브C로 만든 iOS용 게임이다.

14장, PC, 맥용 타워 디펜스 게임 예제

타워 디펜스는 꽤 오랫동안 명맥을 이어온 장르지만 사실상 〈스타크래프트〉와 〈워크래프트 III〉 같은 게임의 유즈맵(사용자가 직접 만든 맵)을 계기로 주목받기 시작했다. 타워 디펜스는 요즘 큰 인기를 누리고 있는 장르로 거의 모든 게임 플랫폼에서 수많은 타워 디펜스 게임을 찾아볼 수 있다.
14장에서는 미래가 배경인 〈__Defense〉라는 타워 디펜스 게임을 구현해볼 예정이다. 이미지는 3D지만 실제 게임 플레이는 2D 평면상에서 이뤄진다. 게임의 코드는 XNA와 모노 게임 프레임워크를 사용해서 C#으로 만들었다.

부록A, 연습 문제 풀이

1장에서 12장까지의 연습문제에 대한 해답을 제공한다.

부록B, 유용한 프로그래밍 툴

다양한 툴을 통해 프로그램의 에러를 줄이고 프로그래머의 생산성을 높일 수 있다. 부록 B에서는 거의 모든 전문 개발자가 매일같이 사용하는 유용한 툴 몇 가지를 소개한다. 여기서 소개하는 툴은 매우 보편적인 툴이므로 사용법을 잘 익혀두면 게임 프로그램뿐만 아니라 다른 프로그램을 만들 때도 유용하게 쓸 수 있다.

상세 페이지

저자/역자 소개

지은이의 말

불과 얼마 전만 해도 게임 업계에서는 전문가 몇 명이 상업용 비디오 게임의 프로그래밍에 필요한 지식을 독점하고 있었다. 마이클 아브라쉬(Michael Abrash)의 『Graphics Programming Black Book』 같은 기념비적인 책이 있었다 해도, 그 당시 AAA 게임(대작 게임)에 쓰이는 실전 알고리즘은 마치 흑마법이나 금단의 지식처럼 베일에 싸여 있어서 배우기가 쉽지 않았다. 정규 교육 과정을 통해 게임 프로그래밍을 배우려면 소수의 전문 직업학교밖에 선택지가 없었다. 하지만 지난 10여 년간 비디오 게임 교육은 큰 변화를 겪어 왔다. 이제 유명 대학 중에도 비디오 게임 프로그래밍에 관한 과정과 학위를 제공하는 학교가 생겼으며 그 수는 매년 늘고 있다.

비디오 게임 교육 과정이 늘어나면서 게임 회사가 신입 프로그래머에게 바라는 기대치가 너무 높아지는 부작용도 생겼다. 2000년대 초만 해도 초보 프로그래머에게 컴퓨터 과학에 관한 확고한 배경지식과 비디오 게임 제작에 관한 열정 이상을 기대하는 회사는 없었다. 단지 탄탄한 기초를 바탕으로 실무를 통해 더욱 수준 높은 게임 프로그래밍 기법을 배워 나가길 바라는 정도가 고작이었다. 요즘은 중점적으로 게임에 관한 교육을 받을 수 있는 훌륭한 교육 기관이 많으므로 신입 프로그래머라도 게임 프로그래밍에 관한 다양한 경험을 지니고 있을 것이라고 기대하는 회사가 늘고 있다.

굳이 또 게임 프로그래밍 책을 쓴 이유

비디오 게임 과목이 늘어나면서 대학 수준에 맞는 책의 수요도 늘어났다. 하지만 현재 시중에 나와 있는 게임 프로그래밍 책은 대부분 취미로 게임 제작을 배워보려는 개발자나 이미 게임 업계에 수년간 종사해온 전문 개발자를 대상으로 하고 있다. 양쪽 다 대학 수업에 쓰기에는 무리가 있었다. 취미용 개발서는 대학생에게 가르치기에 너무 수준이 낮았고 전문가용 개발서는 대학생이 제대로 이해할 수 있는 수준을 넘어서기 일쑤였다.

‘ITP 380: 비디오 게임 프로그래밍’은 내가 서던 캘리포니아 대학교(USC)에서 가르치는 과정 중 하나다. 수업에 들어오는 학생은 보통 프로그래밍의 기본을 잘 알고 있는 2, 3학년이다. 게임 메이커(Game Maker)나 유니티(Unity) 같은 게임 엔진을 사용해서 간단한 게임을 만들어봤던 학생도 있지만, ITP 380을 통해 실질적인 비디오 게임 프로그래밍을 처음 접하는 학생이 대부분이다. 이 책이 내 수업은 물론, 다른 대학의 비슷한 수업에서 지금껏 미흡했던 부분을 메꿔주는 참고서 역할을 할 수 있으면 좋겠다. 대학생을 대상으로 쓴 책이지만 게임 프로그래밍에 흥미가 있는 사람이라면 이 책의 진가를 알아볼 수 있으리라 믿는다.

이 책의 앞쪽 열두 장은 플랫폼, 프레임워크와 상관없는 내용이다. 즉 프로그래밍 언어나 타깃 플랫폼에 상관없이 다양한 2D 게임과 3D 게임에 적용할 수 있는 내용이 대부분이다. 특정 프레임워크의 특정 버전에 단단히 얽혀서 몇 년만 지나도 쓸모가 없어지는 다른 책과 확연히 다른 특징이다. 미래를 내다볼 수는 없지만 적어도 이 책은 꽤 오랜 시간 동안 가치를 지닐 것으로 생각한다. 또 학교마다 수업에 사용하는 언어와 프레임워크가 다르다 해도 큰 상관없이 유용하게 쓰일 수 있는 책이다. 그렇다고 예제 코드가 쓸모없다는 뜻은 절대로 아니다. 이와 같은 이유로 마지막 두 장에서는 두 종류의 프레임워크로 작성한 두 개의 게임을 소개한다. 물론 예제 코드도 제공한다.

지은이 소개

산자이 마드하브(Sanjay Madhav)

서던 캘리포니아 대학(USC)의 강사로, 비디오 프로그래밍에 관한 다양한 과목을 가르치고 있다. USC에서 전임 강사를 맡기 전에는 일렉트로닉 아츠(Electronic Arts), 네버소프트(Neversoft), 판데믹 스튜디오(Pandemic Studios) 등 여러 비디오 게임 개발사에서 프로그래머로 일했다. 다양한 시스템에서 프로그래밍을 해왔지만 주 관심사는 게임 플레이 메커니즘이다. 〈메달 오브 아너: 퍼시픽 어썰트(Medal ofHonor: Pacific Assault)〉, 〈토니 호크 프로젝트 8(Tony Hawk’s Project 8)〉, 〈반지의 제왕: 컨퀘스트(Lord of the Rings: Conquest)〉, 〈사보티어(The Saboteur)〉 등의 개발에 참여했다.

2008년 게임 업계에서 일하며 USC에서 시간 강사로 강의를 시작했고, 2009년 판데믹 스튜디오가 문을 닫은 뒤로 전도유망한 게임 프로그래머를 가르치는 데 힘을 쏟기로 마음먹었다. 주력 과목은 연달아 10학기 이상 맡아온 학부생 대상 게임 프로그래밍이다.

옮긴이의 말

PC, 콘솔을 제외한 iOS, 안드로이드 등의 모바일 플랫폼에서만도 하루에 10여 개의 새로운 게임이 등장하는 요즘, 게임 개발은 그리 특별하게 느껴지는 일이 아닐지도 모른다. 하지만 하나의 게임을 만들려면 수많은 알고리즘과 기법이 필요한 게 사실이다. 3D 캐릭터를 단순히 화면에 표시하는 데만도 크게 모델링, 렌더링을 필두로 하는 다양한 알고리즘과 기법이 쓰인다. 사운드, 입력 처리 등 게임을 이루는 모든 분야가 마찬가지다. 따라서 수년 전만 해도 게임 개발은 상당히 전문적인 개발 분야로 여겨졌다.

하지만 요즘은 게임 개발에 필요한 대부분의 알고리즘과 기법을 알아서 처리해주는 훌륭한 게임 개발 툴이 등장한 덕분에 게임 내부에서 일어나는 일에 관해 잘 알지 못하더라도 비교적 간단하게 게임을 만들 수 있다. 개발 툴의 GUI를 사용해서 적당히 구성 요소를 배치하고 약간의 스크립트만 작성하면 게임이 만들어진다. 단순히 게임을 만들어내는 것만이 목적이라면, 적절한 게임 개발 툴을 선택하고 활용법을 익히는 쪽이 가장 빠르고 확실한 길이다. 목적이 그뿐이라면 이 책이 딱히 유용하지 않을 수 있다. 하지만 자신이 만들고 있는 게임이 ‘어떻게’ 동작하는지 궁금하다면 이 책에서 큰 도움을 받을 것이다.

USC의 비디오 게임 프로그래밍 과정 강사인 저자는 이 책의 ‘들어가며’에서 대학 수준의 게임 프로그래밍 강의에 쓸 수 있는 보조교재를 만들고 싶었다고 밝히고 있다. 그리고 자신의 의도를 충분히 살려서 2D, 3D 그래픽, 선형 대수학, 물리학, 사운드, 입력, 인공지능, 사용자 인터페이스, 네트워크 등 폭넓은 주제에 걸쳐 다양한 알고리즘과 기법을 소개한다. 물론 여기서 소개하는 알고리즘이나 기법 중에는 최신 게임에 쓰이지 않는 것도 있다. 하지만 적어도 처음에 느낀 궁금증을 해소해주거나 궁금증 해소에 관한 단서를 제공할 수 있는 튼튼한 ‘기초’라는 점만큼은 분명하다. 그리고 이 페이지를 읽고 있는 독자라면, 기초의 중요성은 부연하지 않아도 잘 알고 있으리라 믿는다.

옮긴이 소개

김홍중

중앙대학교 컴퓨터공학과를 졸업했다. 재학 중에 삼성소프트웨어 멤버십 회원으로 활동하다 삼성전자에 입사했고, DM 연구소, VD 사업부에 근무하면서 윈도우CE, 임베디드 리눅스 환경에서 PDA, 셋톱박스, DTV 등 다양한 기기에 들어가는 애플리케이션을 개발했다. 2007년, 답답한 삶을 털어내고 훌쩍 미국으로 날아가 한껏 여유를 즐기다가 빈손으로 돌아왔다. 이후 웹 호스팅사, 게임 개발사를 거쳐 지금은 메이크어스 모바일(Makeus Mobile)에서 iOS 앱을 개발 중이다.

에이콘출판사에서 출간한 『유니티3D 게임 스크립트』(2015), 『Beginning Windows Phone 7 Development 한국어판』(2011), 『아이폰 UI 디자인 프로젝트』(2010), 『The iPhone Developer’s Cookbook (Second Edition) 한국어판』(2010) 등을 번역했다

목차

목차
  • 1장 게임 프로그래밍 개요
    • 비디오 게임 프로그래밍의 발전
    • 게임 루프
    • 시간과 게임
    • 게임 오브젝트
    • 요약
    • 연습 문제
    • 참고 문헌

  • 2장 2D 그래픽
    • 2D 렌더링의 토대
    • 스프라이트
    • 스크롤
    • 타일 맵
    • 요약
    • 연습 문제
    • 참고 문헌

  • 3장 선형 대수학
    • 벡터
    • 행렬
    • 요약
    • 연습 문제
    • 참고 문헌

  • 4장 3D 그래픽
    • 3D의 기초
    • 좌표 공간
    • 조명과 셰이딩
    • 가시성
    • 월드 변환 재검토
    • 요약
    • 연습 문제
    • 참고 문헌

  • 5장 입력
    • 입력 장치
    • 이벤트 기반 입력 시스템
    • 모바일 입력
    • 요약
    • 연습 문제
    • 참고 문헌

  • 6장 사운드
    • 기본적인 사운드
    • 3D 사운드
    • 디지털 신호 처리
    • 기타 사운드에 관한 주제
    • 요약
    • 참고 문헌

  • 7장 물리학
    • 평면, 반직선, 선분
    • 충돌체
    • 충돌 확인
    • 물리학을 바탕으로 한 움직임
    • 물리학 미들웨어
    • 요약
    • 연습 문제
    • 참고 문헌

  • 8장 카메라
    • 카메라의 종류
    • 원근 투영
    • 카메라 구현
    • 카메라를 뒷받침하는 알고리즘
    • 요약
    • 연습 문제
    • 참고 문헌

  • 9장 인공지능
    • '실제' AI와 게임의 AI
    • 길 찾기
    • 상태 기반 행동
    • 전략과 계획
    • 요약
    • 연습 문제
    • 참고 문헌

  • 10장 사용자 인터페이스
    • 메뉴 시스템
    • HUD의 구성 요소
    • 기타 UI 고려사항
    • 요약
    • 연습 문제
    • 참고 문헌

  • 11장 스크립트 언어와 데이터 형식
    • 스크립트 언어
    • 스크립트 언어의 구현
    • 데이터 형식
    • 사례 연구: <월드 오브 워크래프트>의 UI MOD
    • 요약
    • 연습 문제
    • 참고 문헌

  • 12장 네트워크
    • 프로토콜
    • 네트워크 토폴로지
    • 부정행위
    • 요약
    • 연습 문제
    • 참고 문헌

  • 13장 iOS용 횡 스크롤 게임 예제
    • 개요
    • 코드 분석
    • 과제
    • 요약

  • 14장 PC, 맥용 타워 디펜스 게임 예제
    • 개요
    • 코드 분석
    • 과제
    • 요약

  • 부록A 연습 문제 풀이
  • 부록B 유용한 프로그래밍 툴

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안