1부. 기초
1장. 소개
1.1 게임 팀 구성
1.2 게임이란?
1.3 게임 엔진이란?
1.4 장르별 게임 엔진
1.5 현존하는 게임 엔진
1.6 런타임 게임 아키텍처
1.7 도구와 자원 파이프라인
2장. 도구
2.1 버전 컨트롤
2.2 컴파일러, 링커, IDE
2.3 프로파일링 툴
2.4 메모리 누수와 오염 감지
2.5 기타 툴
3장. 게임을 위한 소프트웨어 엔지니어링 기초
3.1 C++ 개념과 올바른 사용법
3.2 에러 감지와 처리
3.3 데이터, 코드, 메모리 레이아웃
3.4 컴퓨터 하드웨어 기초
3.5 메모리 구조
4장. 병렬성과 병행 프로그래밍
4.1 병행성과 병렬성에 대한 정의
4.2 묵시적 병렬성
4.3 명시적 병렬성
4.4 운영체제 기초
4.5 병행 프로그래밍 입문
4.6 스레드 동기화 기본 도구
4.7 락 기반 병행성의 문제점
4.8 병행성의 경험적 규칙
4.9 락-프리 병행성
4.10 SIMD/벡터 프로세싱
4.11 GPGPU 프로그래밍에 대한 소개
5장. 게임에 사용되는 3D 수학
5.1 3D 문제를 2D로 풀기
5.2 점과 벡터
5.3 행렬
5.4 사원수
5.5 각 회전 변환 표현 간 비교
5.6 기타 유용한 수학적 개념
5.7 난수 생성
2부. 로우레벨 엔진 시스템
6장. 엔진 지원 시스템
6.1 하부 시스템 시작과 종료
6.2 메모리 관리
6.3 컨테이너
6.4 문자열
6.5 게임 설정
7장. 리소스 시스템과 파일 시스템
7.1 파일 시스템
7.2 리소스 매니저
8장. 게임 루프와 실시간 시뮬레이션
8.1 렌더링 루프
8.2 게임 루프
8.3 게임 루프 구조의 형태
8.4 가상 타임라인
8.5 시간을 측정하는 방법과 처리하는 방법
8.6 멀티프로세서 게임 루프
9장. 휴먼 인터페이스 장치
9.1 휴먼 인터페이스 장치의 종류
9.2 HID와의 인터페이스
9.3 입력의 종류
9.4 출력의 종류
이 책에서 다루는 내용
이 책에서 주로 다룰 내용은 게임 엔진 기술과 구조(아키텍처다. 즉, 상용 게임 엔진을 이루는 여러 하부 시스템의 바탕이 되는 이론뿐만 아니라 이를 구현하는 데 필요한 자료 구조, 알고리듬, 소프트웨어 인터페이스를 이야기하면서 이것들이 게임 엔진 안에서 하나로 동작하는지 볼 것이다. 게임 엔진과 게임의 경계는 다소 불분명하다. 이 책에서는 주로 게임 엔진 자체에 집중할 텐데, 여기에는 여러 가지 로우레벨 기반 시스템 및 렌더링 엔진, 충돌 시스템, 물리 시뮬레이션, 캐릭터 애니메이션 등이 포함되며, 개인적으로 게임플레이 기반 계층이라고 부르는 부분에 대한 심층적 논의도 포함된다.
이 책의 대상 독자
이 책은 입문서이지만 숙련된 프로그래머라도 많이 다뤄보지 않았을 부분에 대해 유용한 화두를 제시한다. 이전과 마찬가지로 풍부한 참고 문서와 인용문을 제공하기 때문에 특정 게임 개발 과정에 대해 깊게 공부하고 싶은 독자를 위한 단초가 될 수도 있다.
지은이의 말
오늘날의 게임 콘솔, 모바일 기기, 개인용 컴퓨터의 핵심인 컴퓨터 하드웨어는 병렬성(parallelism을 중요하게 활용한다. 이 기기들의 CPU와 GPU의 깊은 안쪽에서는 여러 개의 기능 단위(funtional unit가 동시에 작동하며, 분할 정복(divide-and-conquer 기법을 통해 고성능 연산을 수행한다. 병렬 하드웨어가 기존의 단일 스레드 프로그램을 빨리 돌릴 수 있게 해주지만, 오늘날의 연산 플랫폼에서 이미 널리 쓰이는 하드웨어 병렬성의 이점을 활용하려면 프로그래머가 병행 소프트웨어를 제대로 짜야 한다.
게임 엔진 아키텍처의 초판에서는 게임 디자인의 관점에서만 병렬성과 병행성을 살짝 언급했었다. 주제에 걸맞은 심도 깊은 취급을 하지 못한 것이다. 3판에서는 병행성과 병렬성에 관한 완전히 새로운 장을 추가함으로써 비로소 제대로 다루게 됐다. 또한 8장과 16장은 보강을 통해 병행 프로그래밍 기법들이 게임 엔진 하부 시스템과 게임 객체 모