책 소개
◈ 이 책에서 다루는 내용 ◈
이 책에서 주로 다룰 내용은 게임 엔진 기술과 구조(아키텍처)다. 즉, 상용 게임 엔진을 이루는 여러 하부 시스템의 바탕이 되는 이론뿐만 아니라 이를 구현하는 데 필요한 자료 구조, 알고리듬, 소프트웨어 인터페이스를 이야기하면서 이것들이 게임 엔진 안에서 하나로 동작하는지 볼 것이다. 게임 엔진과 게임의 경계는 다소 불분명하다. 이 책에서는 주로 게임 엔진 자체에 집중할 텐데, 여기에는 여러 가지 로우레벨 기반 시스템 및 렌더링 엔진, 충돌 시스템, 물리 시뮬레이션, 캐릭터 애니메이션 등이 포함되며, 개인적으로 게임플레이 기반 계층이라고 부르는 부분에 대한 심층적 논의도 포함된다.
◈ 이 책의 대상 독자 ◈
이 책은 입문서이지만 숙련된 프로그래머라도 많이 다뤄보지 않았을 부분에 대해 유용한 화두를 제시한다. 이전과 마찬가지로 풍부한 참고 문서와 인용문을 제공하기 때문에 특정 게임 개발 과정에 대해 깊게 공부하고 싶은 독자를 위한 단초가 될 수도 있다.
작가 소개
지은이 : 제이슨 그레고리
1994년부터 소프트웨어 엔지니어로 일했고, 1999년부터는 게임 개발 소프트웨어 엔지니어로 근무했다. 샌디에이고에 있는 미드웨이 홈 엔터테인먼트(Midway Home Entertainment)에서 처음 게임 프로그래밍을 시작했으며, 하이드로 썬더 2(아케이드)의 툴, 엔진 기술, 게임 플레이 코드를 작업했다. 프리키 플라이어(Freaky Flyer)와 크랭크 더 위즐(Crank the Weasel)의 플레이스테이션 2/엑스박스용 애니메이션 시스템을 만들기도 했다. 2003년에는 일렉트로닉 아츠 로스앤젤레스(Electronic Arts Los Angeles)로 옮겨 '메달 오브 아너: 퍼시픽 어설트' 프로젝트에서 엔진과 게임플레이 기술을 담당했고, '메달 오브 아너: 에어본' 프로젝트에서는 리드 엔지니어로 근무했다. 현재 너티 독(Naughty Dog)에서 리드 프로그래머로 근무하며, 자신의 팀과 함께 여러 가지 흥미로운 플레이스테이션 5 게임을 만들고 있다. 또한 라스트 오브 어스 파트 2(The Last of US Part II)(플레이스테이션 4), 언차티드: 엘도라도의 보물(Uncharted: Drake's Fortune), 언차티드 2: 황금도와 사라진 함대(Uncharted 2: Among Thieves), 언차티드 3: 황금사막의 아틀란티스(Uncharted 3: Drake's Deception), 라스트 오브 어스(The Last of Us), 언차티드 4: 해적왕과 최후의 보물(Uncharted4: A Thief's End), 언차티드 잃어버린 유산(Uncharted: The Lost Legacy)의 엔진과 게임 플레이 소프트웨어도 만들었다. 남가주대학교(University of Southern California)에서 게임 기술에 관한 강의를 개발하고 가르치기도 했었다.
옮긴이 : 박상희
서울대학교 컴퓨터 공학과를 졸업한 후 게임 클라이언트 프로그래머(2003년~현재)로 일하고 있다. 아스가르드(넥슨), 리니지2(엔씨소프트), 오버히트(넷게임즈, 현 넥슨게임즈) 등 알려진 프로젝트에 참여했으며, 그 외 몇몇 알려지지 못한 프로젝트에서도 일했다. 현재 출시 준비 중인 PC/콘솔 게임을 만드는 중이다.
목 차
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 출력의 종류
9.5 게임 엔진의 HID 시스템
9.6 휴먼 인터페이스 장치들의 실제
10장. 디버깅과 개발 도구
10.1 로그 기록과 추적
10.2 디버그 정보 그리기 기능
10.3 인게임 메뉴
10.4 인게임 콘솔
10.5 디버그 카메라와 게임 일시 정지
10.6 치트
10.7 스크린샷과 무비 캡처
10.8 인게임 프로파일링
10.9 인게임 메모리 상태와 누수 감지
3부. 그래픽, 모션, 사운드
11장. 렌더링 엔진
11.1 깊이 버퍼를 이용한 삼각형 래스터화의 기초
11.2 렌더링 파이프라인
11.3 고급 조명 기법과 전역 조명
11.4 시각 효과와 오버레이
11.5 더 읽을거리
12장. 애니메이션 시스템
12.1 캐릭터 애니메이션의 종류
12.2 뼈대
12.3 포즈
12.4 클립
12.5 스키닝과 행렬 팔레트 생성
12.6 애니메이션 블렌딩
12.7 후처리
12.8 압축 기법
12.9 애니메이션 파이프라인
12.10 액션 상태 기계
12.11 제약 조건
13장. 충돌과 강체 역학
13.1 정말 게임에 물리가 필요해?
13.2 충돌/물리 미들웨어
13.3 충돌 검출 시스템
13.4 강체 역학
13.5 물리 엔진과 게임 통합
13.6 고급 물리 기능
14장. 오디오
14.1 소리의 물리적 개념
14.2 소리의 수학
14.3 오디오 기술들
14.4 3D 오디오 렌더링
14.5 오디오 엔진 아키텍처
14.6 게임을 위한 오디오 기능들
4부. 게임플레이
15장. 게임플레이 시스템 기초
15.1 게임 월드의 구성
15.2 동적 구성 요소 구현: 게임 객체
15.3 데이터 주도 게임 엔진
15.4 게임 월드 에디터
16장. 런타임 게임플레이 기반 시스템
16.1 게임플레이 기반 시스템의 컴포넌트
16.2 런타임 객체 모델 구조
16.3 월드 덩어리 데이터 형식
16.4 게임 월드의 로딩과 스트리밍
16.5 객체 참조와 월드 질의
16.6 실시간 게임 객체 업데이트
16.7 병행성을 활용한 게임 객체 업데이트
16.8 이벤트와 메시지 전달
16.9 스크립트
16.10 하이레벨 게임 흐름
5부. 결론
17장. 추가 사항
17.1 다루지 않았던 엔진 시스템
17.2 게임플레이 시스템
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |