로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 
[세가의 신입 사원 교육 과정에서 배우는] 

게임 프로그래밍의 정석: C++ 2D 콘솔 게임 개발에서 DirectX로 3D 게임 개발까지 한 번에 배운다

   
지은이 히라야마 타카시 / 김성훈 역   |   출판사 한빛미디어  |   발행일 2012년 02월 01일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 48,000원43,200원 10%
마일리지 5% 2,400원
발행일 2012-02-01
ISBN 8979148992 | 9788979148992
기타정보 번역서 | 1008쪽
예상출고일 2~3일 이내 (근무일기준)
배송비 무료배송
   
게임
종합지수 16p 30 위
   
 

[출판사서평]

1. 이 책이 제시하는 핵심 내용
세가의 신입 사원 교육 과정에서 탄생한 게임 프로그래밍 입문서

2. 어떤 독자를 위한 책인가?
● 게임 개발자로 취업을 희망하는 대학생
● 게임 프로그래밍을 배워보고 싶은 개발자
● 2D 콘솔 게임 제작에서 DirectX를 이용한 3D 게임 개발까지 학습하고 싶은 개발자
● 게임 회사 신입 사원과 신입 사원을 교육해야 하는 강사

3. 책 소개
세가의 신입 사원 교육 과정에서 배우는 게임 프로그래밍의 정석
저자는 주식회사 세가에서 <전뇌전기 버츄어 온 마즈>(PS2), <파워 스매시3>(PS3) 개발에 참여했다. 저자가 담당했던 세가의 신입 사원 교육 프로그램을 바탕으로 게임 프로그래밍에 필요한 기술을 책으로 담았다. 콘솔 게임에서 시작해서 2D 게임, DirectX에서 3D 게임까지 게임 제작 전반을 단계별로 설명한다. 현업에서의 게임 제작 경험을 바탕으로 왜 이 기술을 사용해야 하는지, 왜 이런 프로그래밍 기법을 사용하는지 설명하며 예제를 보여주므로 현업에서 원하는 기술의 기초를 학습할 수 있다.

【주요 내용】
● 이미지 파일 사용법
● 문자 처리
● 평면 충돌 처리
● 입력장치 처리: 키보드, 마우스, 조이스틱
● 사운드 처리
● 2D 그래픽 이론
● 3D 그래픽의 기초: 은면소거, Z버퍼, 투시 변환, 행렬, 벡터
● 입체의 충돌 처리
● 라이팅, 레이 트레이스, 램버트 모델
● 캐릭터 애니메이션
● 게임 로딩: 분할 기법과 압축 기법
● 폭탄맨 제작
● 로보 파이트 제작

예제 코드: http://www.hanb.co.kr/exam/1899

4. 지은이 서문
게임 프로그래밍을 공부하면서 한 권으로 대략적인 내용을 이해할 수 있는 책이 없는 것을 계속 이상하게 생각했다. 세상에는 능력이 뛰어난 사람이 많으니 그런 책을 쓸 거라고 생각했기 때문이다. 하지만 책을 쓰는 작업은 금전적으로 수지가 맞지 않으며 소속되어 있는 조직이라는 굴레도 있어 생각만큼 간단하지 않다는 사실을 나중에 깨달았다. 뛰어난 사람에겐 책을 쓰기보다 돈을 벌 수 있는 수단이 훨씬 많고 조직이라는 굴레가 없는 사람은 조직적으로 게임을 만든 경험이 부족하여 ‘파는 물건을 만든다’는 관점에서 책을 쓰기 어렵다. 하지만 그렇다고 해서 ‘어쩔 수 없다’라는 말로 정리해도 되는 걸까? 뭘 공부해야 게임을 만들 수 있을지 알 방법이 없는데 인재 부족이고 뭐고 없다. 몇 년 전까지는 ‘할 마음이 있는 사람이면 혼자서 게임을 만드는 정도는 다 하니 그냥 내버려 두면 된다’라고 했지만 많은 물량과 기술이 뒷받침되는 요즘 게임을 보고 자신이 만들 수 있을 것으로 생각하는 사람이 도대체 얼마나 될까?
이런 말을 잘난 듯이 쓰고 있는 나조차 입사 당시에는 이 책 내용 중 십분의 일도 이해하지 못했다. 만약 그때 정석이라고 할 수 있는 책이 한 권이라도 있었으면 입사 직후 ‘터무니없는 곳에 와 버렸다’라고 막다른 지경에 몰렸다는 생각을 가볍게 끝냈을 것이고 그 후 공부 방식도 달라졌을 것이다.
내가 이 책을 쓰게 된 것은 그런 생각을 한 결과다. 또한 이 책에는 다양한 게임 회사에 있는 뛰어난 사람이 ‘그렇구나. 책을 써도 괜찮구나’라고 깨닫기 바라는 의미도 있다. 일본 게임 회사는 전체적으로 몰락하는 도상에 있고 이미 기업 비밀이라면서 감추고 있을 상황이 아니다. 기본적인 기술은 회사에 관계없이 공유하지 않으면 이제 어떻게 할 방법이 없다. 어느 회사든지 마술사 같은 사람이 틀림없이 있을 것이고 그런 사람이 지닌 기술이 책 등을 통해 밖으로 나온다면 분명히 즐거울 것이다. 이렇게 말하긴 뭣하지만 숨겨서 가치가 있는 기술 같은 건 세상에 거의 없다. 이 책이 내가 계속 바라왔던 ‘정석이 될 책’이라고 자부할 순 없지만 앞으로 ‘정석이 될 책’이 나타나기 위한 사전 준비가 될 수 있기를 바란다.
지은이_ 히라야마 타카시

5. 옮긴이 서문
학교에서 수학을 배우면서 이런 복잡한 공식이 어디에서 사용되는 것일까? 궁금해 했던 기억이 있습니다. 프로그래밍을 배우면서 문제를 해결하는 데 수학 이론을 어떻게 적용하는지 그 과정이 궁금했습니다. 일을 할 때도 어떤 도구가 어디에 쓰이는지 알고 하면 훨씬 능률이 오르는 법입니다. 이 책은 이런 점에 초점을 맞춰 학습자에게 무엇을 어떻게 사용해야 하는지를 설명하고 멀게만 느껴지는 이론을 실제 코드에 어떻게 적용할 수 있는지 보여 줍니다. 제 책장에도 두꺼운 프로그래밍 책이 여러 권 있지만 솔직히 끝까지 다 읽은 책은 거의 없습니다. 그래서 처음 책을 마주했을 때 조금 걱정되기도 했는데 이 책은 달랐습니다. 이 책이 두꺼운 이유는 다른 책처럼 모든 것을 담으려고 했기 때문이 아니라 저자가 이 책을 읽는 독자 모두를 목표 지점까지 데려가고자 최선을 다했기 때문입니다. 저자는 책 전반에 걸쳐 마치 현장에서 직접 후배에게 이야기하듯이 경험하여 스스로 체계화시킨 내용을 소설을 읽듯 편안하게 볼 수 있게 친절히 설명했습니다. 번역을 마치고 저는 새삼 수학과 알고리즘 관련 책을 들춰 볼 정도였습니다. 이렇듯 이 책은 입문 과정을 갓 지난 프로그래머에게 시야를 폭넓게 하고 생각하는 방법을 설명하며 왜 배워야 하는지 동기를 부여하고 또한 앞으로 어느 방향으로 나아가야 할지 방향성을 제시합니다. 제가 처음 프로그래밍을 배웠을 때 이 책이 있었다면 지금쯤 정말 프로그래머가 되어 있지 않을까 상상해봅니다. 특히 혼자서 프로그래밍 언어의 기본 내용을 공부했다면 이 책을 통해 배운 내용을 효과적으로 정리하고 다음에 무엇을 공부해야 하는지 적절한 조언을 얻을 수 있을 것입니다. 지난해 많은 시간을 이 책과 함께 보냈습니다. 그 사이 귀여운 첫 조카 도준이가 태어나는 등 저에게 중요한 변화가 많이 있었습니다. 그런 소중한 시간을 함께 했던 책이 드디어 세상에 나온다니 무엇보다 기쁩니다. 끝으로 이 자리를 빌려 한빛미디어 한동훈 씨와 번역하는 내내 응원해 주신 부모님께 감사 인사를 드립니다.
옮긴이_ 김성훈
CHAPTER 00 머리말
__01 이 책은 어떤 책인가
__02 대상 독자
____필요한 기술
__03 필요한 준비
____컴파일러와 운영체제
____DirectX
____CPU와 메모리
____그래픽 하드웨어
____그래픽과 음악 소재
__04 이 책 진행 방법
__05 이 책 학습 방법
__06 예제 코드
____소프트웨어 등 사용 허가서

Part I 2차원 게임
CHAPTER 01 처음 만드는 게임

__1.1 퍼즐 게임을 만들자
____예제
____준비
____메인 루프
____처리 내용을 작성한다
____검사
__1.2 예제 코드
____헤더 포함
____스테이지 데이터 상수
____열거형
____함수 프로토타입
____main 함수
____스테이지 초기화
____화면 그리기
____갱신
____클리어 판정
____정리
__1.3 스테이지 데이터를 읽자
____준비
____데이터 형식
____스테이지 크기
____오류 처리
____예제 코드
__1.4 C++ 보충
____이름공간
____템플릿
____생성자와 소멸자
____초기 설정
____멤버함수에서 const
____두 가지 delete
____문자열 상수
__1.5 팁: 플래그와 비트 연산
____플래그
____플래그 저장
____계산으로 플래그를 추출하는 방법
____곱셈 나눗셈과 시프트 연산
____비트 연산을 사용한다
____플래그를 온으로 하자
____플래그를 오프로 하자
____여러 플래그를 한 번에 조작한다
____16진수
__1.6 팁: 포인터와 메모리
____메모리는 배열이다
____포인터
____포인터와 배열
____0 포인터
____포인터 형
____new와 delete
____배열과 new 차이
____포인터 정리
__1.7 팁: 참조
____참조와 포인터
____성능 향상을 위한 포인터와 참조
____참조 문제점
____참조 ‘반환’에 주의
__1.8 정리

CHAPTER 02 점에서 시작하는 2D 그래픽
__2.1 2D 그래픽
____라이브러리
__2.2 준비
____라이브러리 경로를 설정한다
____디버그와 릴리스
____환경변수
____멤버함수
____앞 장에 cout, cin과의 차이
__2.3 점을 찍자
____예제 코드
__2.4 배달맨을 이식한다
____그래픽이 나오지 않는 배달맨 만들기
____배달맨에 그래픽을 덧붙인다
____그래픽을 확대한다
__2.5 팁: 종료 처리
____종료 처리용 함수
____종료 처리가 필요한 이유
__2.6 정리

CHAPTER 03 이미지 파일을 사용하자
__3.1 파일에서 이미지를 읽는다
____이미지 형식
____DDS 이미지를 준비한다
____DDS 구조를 조사한다
____데이터를 추출하자
____사각형 화면에 붙인다
____이미지 일부를 잘라내자
____배달맨에 적용하자
__3.2 그래픽 버전인 배달맨 예제 코드
____전체 구성
____maincpp
____Statecpp
____Filecpp
____Imagecpp
__3.3 알파 채널을 사용한다
____알파 테스트
____배달맨에 도입한다
____알파 블렌딩
____배달맨에 적용하자
__3.4 포함 관계 결정 방법
____전통적인 방법
____문제점은 무엇인가
____정의와 선언
____인클루드 가드
____결국 어떻게 하면 되는가
____헤더 인클루드를 생각하는 의미
__3.5 팁: 알파 블렌딩 최적화
____정수로 계산한다
____시프트를 지우자
__3.6 팁: 가산 블렌딩
__3.7 정리

CHAPTER 04 실시간 게임
__4.1 실시간 게임
____어디를 수정해야 하는가
____새로운 입력 함수: Framework::isKeyOn()
____입력 페이스 조정
__4.2 애니메이션을 만들자
__4.3 애니메이션이 들어간 배달맨 예제 코드
____Stateh
____Statecpp
__4.4 프레임 레이트를 구한다
____프레임 레이트 계산
__4.5 프레임 레이트 차이에 대응한다
____프레임 레이트를 고정한다
____unsigned 범위를 넘었을 때 대처
__4.6 팁: 프레임 레이트에 맞게 게임 속도를 바꾸는 방법
____좋은 점과 나쁜 점
____만들어 본다
____예제 코드
____unsigned와 int
____가변 프레임 레이트와 고정 프레임 레이트 비교
__4.7 팁: 티어링 문제
____티어링을 어떻게 잡을 수 있을까
__4.8 정리

CHAPTER 05 간단한 시퀀스 전이
__5.1 라이브러리 추가 기능
____입력 취득 기능
____프레임 레이트 관련 기능
____편리한 매크로
__5.2 단순한 방법
____if 문으로 한다
____switch 문을 사용한다
__5.3 시퀀스를 늘리자
____시퀀스 사양
____이것은 간단한 과제인가
__5.4 코드 검사
____자원 로드와 해제에 관한 문제
____시퀀스에 걸쳐 있는 자원 문제
____계층 구조 시퀀스 전이
____전이 트리거를 어디에 둘까
____계층 간 이동
__5.5 예제 코드
____파일 배치
____프로젝트 설정
____클래스 구성
____데이터 배치
____maincpp
____Sequence/Parenth
____Sequence/Parentcpp
____Game::Parent
____1초 대기
____몇 가지 기능 추가
____stringstream
__5.6 정리

CHAPTER 06 문자를 출력하는 방법
__6.1 폰트용 이미지
__6.2 문자 그리기 함수
____ASCII 코드
__6.3 사용하기 편하게
____클래스화
____배경을 투명하게 만들자
____색을 바꾼다
____표시 위치 지정
____오류 검사
__6.4 사용한다
__6.5 예제 코드
____싱글톤
__6.6 저작권에 주의하자!
__6.7 예제 라이브러리 기능
__6.8 정리

CHAPTER 07 처음 시작하는 액션 게임
__7.1 사용할 라이브러리
____문자 그리기
____난수
__7.2 ‘폭탄맨’을 만들자
__7.3 예제 코드
____라이브러리를 대응시킨다
____시퀀스만 만들어 보자
____시퀀스만 추가한 예제 코드
__7.4 일단 배경을 출력한다
____이미지를 준비한다
____State 클래스를 바꿔 쓴다
____움직이지 않는 오브젝트 클래스를 정비한다
____스테이지 형태
____그리자
__7.5 움직이는 오브젝트를 배치한다
____움직이는 오브젝트 클래스
____배치
____움직이게 한다
__7.6 드디어 게임을 하자
__7.7 정리

CHAPTER 08 평면 충돌 처리
__8.1 충돌 검출
____정사각형 교차 판정
____데이터 표현 방법
____교차 판정 코드
__8.2 충돌 응답
____충돌하면 움직이지 않는다
____충돌 직전에 멈춘다
____이동시켜 처리한다
____어느 방법이 좋을까
__8.3 복수 충돌 문제
____충돌하면 움직이지 않는다
____충돌 직전에 멈춘다
____겹쳐 있으면 이동시킨다
____어느 것을 선택할 것인가
__8.4 충돌 응답과 조작성
____겉보기와 실체 크기를 다르게 한다
____충돌하면 벽면을 따라 미끄러지게 한다
____가로 이동과 세로 이동을 따로 다룬다
____움직이는 캐릭터를 원형으로 한다
____어느 방법을 택해야 하는가
__8.5 움직이는 것끼리 충돌한다
__8.6 폭탄맨 충돌 처리
____DynamicObject 확장
____움직이는 것끼리
____움직이는 것과 움직이지 않는 것 판정
____폭탄 설치 문제
____연쇄 폭발
__8.7 정리

CHAPTER 09 다양한 입력장치
__9.1 입력장치 인스턴스 취득
__9.2 키보드
__9.3 마우스
__9.4 조이스틱
__9.5 폭탄맨을 조이스틱으로 조작한다
____라이브러리를 은폐하는 것
____예제 코드
__9.6 정리

CHAPTER 10 좀 더 나은 시퀀스 전이
__10.1 도대체 무엇이 문제였을까
__10.2 상속을 사용한다
____ 기반 클래스
____ 파생 클래스
____ 파생 클래스와 기저 크래스
____ 가상 소멸자
__10.3 실제로 사용하자
____ 예제 코드
__10.4 팁: 시퀀스 이동 코드를 짧게 한다
____ 문제는 어디에 있는가
____ 잘못된 분기를 바로잡는다
____ 예제 코드
__10.5 팁: 계층 간 시퀀스 이동 코드도 짧게 한다
____ dynamic_cast
____ 계층마다 기반 클래스를 다시 정의한다
____ 예제 코드
____ 이렇게까지 할 필요가 있을까
__10.6 팁: 상속을 좀 더 자세히
____ 상속을 흉내낸다
____ 상속은 무엇을 희생하고 있는가
____ 상속은 언제 사용해야 하는가
____ 순수 가상 함수
__10.7 정리

CHAPTER 11 소리를 내다
__11.1 사운드 라이브러리
____ 데시벨
____ 예제 코드
__11.2 팁: 컴퓨터에서 소리를 재생한다는 것
____ 라이브러리
__11.3 팁: 소리 높이와 크기
____ 소리 높이
____ 소리 크기
__11.4 팁: 음색
__11.5 팁: 소리 겹침
__11.6 팁: 도레미 원리
____ 도레미로 놀아보자
__11.7 팁: 악보를 읽어 연주한다
____ 예제 코드
__11.8 팁: WAV 파일 읽기
____ WAV 파일 내용
__11.9 팁: Sound 모듈을 사용한 웨이브 합성
__11.10 정리

CHAPTER 12 회전, 확대, 이동
__12.1 회전
____ 좌표를 돌리는 간단한 방법
____ 삼각함수
____ 삼각함수를 사용해 회전시킨다
____ 좀 더 나은 방법
__12.2 벡터와 행렬 도입
____ 벡터형 도입
____ 행렬 도입
__12.3 정점
__12.4 확대•축소
____ 코드로 만들자
__12.5 확대•축소하면서 회전시킨다
____ 코드로 만들자
__12.6 행렬이 지닌 위력
____ 이동을 행렬로 표현한다
____ 확대•축소를 행렬로 나타낸다
____ 복수 조작을 하나로 모은다
__12.7 팁: 왜 이 공식으로 회전이 될까
__12.8 팁: 제대로 돌려보자
____ 래스터라이즈
__12.9 팁: 수학 속 행렬
____ 행렬과 벡터 곱
____ 행렬과 행렬 곱
__12.10 정리

CHAPTER 13 하드웨어 파워
__13.1 사용할 라이브러리
__13.2 그래픽 하드웨어로 삼격형을 그린다
____ 흰색 삼각형을 그린다
____ 색칠한 삼각형을 그린다
__13.3 삼각형에 이미지를 붙인다
____ 텍스처를 만든다
____ 텍스처를 사용한다
____ 텍스처 좌표
____ 텍스처와 정점 병용
__13.4 알파 블렌드
__13.5 회전, 확대•축소, 이동
____ 변환 순서를 생각한다
____ 행렬을 사용해 drawTriangle2D()를 호출한다
__13.6 폭탄맨을 이식한다
____ 텍스처 잘라내기
____ 예제 코드
__13.7 정리

Part II 3차원 게임
__14.1 라이브러리
____ 텍스처 등록
__14.2 3D 액션 게임 ‘로보 파이트’를 만들려면
____ 로보 파이트에 필요한 것
__14.3 삼각형을 그린다
__14.4 가까운 쪽을 가까이에 그린다
____ 반투명과 Z 버퍼법
__14.5 멀리 있는 것을 작게 그리기
____ 거리로 나눈다
____ 직접 했을 때 문제점
____ 그래픽 하드웨어를 이용하자
__14.6 좌표 교환
____ 좌표축 방향
____ z축을 반전한다
____ 행렬과 벡터 확장
____ 3차원 회전 행렬
____ 어떻게 보이는지 생각한다
____ 두 개 축 이상 회전이 필요할 때
____ 뷰 변환 행렬
__14.7 투시 변환도 행렬로
____ 무엇을 하고 있었는지 떠올린다
____ 또 하나 z 범위 변환
____ 화각 도입
____ 종횡비 보정
____ 행렬 완성
____ 모든 변환 합성
__14.8 로보 파이트를 만들기 시작하자
____ 클래스 설계
____ 메인 루프
____ 로보 클래스 선언
____ 스테이지 클래스 선언
____ 그림을 출력하는 경로를 생각한다
____ 시점 조작과 투시 변환
____ 로보를 출력하자
____ 시점 이동을 만든다
____ 로보를 움직인다
____ 텍스처를 붙인다
____ 시선 방향을 따라 이동 방향을 수정한다
__14.9 팁: Z 버퍼 정밀도 문제
__14.10 정리

CHAPTER 15 라이브러리 제작법
__15.1 전체 설계
____ 리소스와 인스턴스
__15.2 리소스 내역
____ 정점 버퍼 클래스
____ 인덱스 버퍼 클래스
____ 배치 클래스
____ 그리기 인스턴스 클래스
____ 리소스 컨테이너 클래스
____ 카메라 클래스
__15.3 사용해보자
__15.4 파일에서 로드한다
____ 너무 정직한 방법
____ XML처럼 만들자
____ 유사 XML을 라이브러리에
__15.5 팁: 라이브러리를 게임에서 분리한다
____ 비주얼 스튜디오 프로젝트 설정
__15.6 정리

CHAPTER 16 유사 XML 읽기
__16.1 파일 형식을 결정한다
__16.2 사전 준비
____ std::string
____ 단순화
__16.3 처리 흐름
____ Document 클래스
____ Element 클래스
__16.4 문자열 해석
____ 상태 전이 집합으로 분해한다
____ 실제로 분해한다
__16.5 코드로 만든다
__16.6 사용해보자
____ 필요한 함수
__16.7 예제 코드
____ Texture 클래스
____ 배치와 이름공간
____ 추가에 관한 문제
____ 문자열에서 수치로 변환
____ 사용자 코드
__16.8 팁: 쓰기
____ 사용자가 코드를 작성한다
____ 어트리뷰트 설정
____ 추가
__16.9 정리

CHAPTER 17 느리지 않은 코드를 작성하려면
__17.1 알고리즘과 계산량 오더
____ 간단한 예
____ 계산량 오더
__17.2 데이터 구조 기초
____ 데이터 구조 성질
____ 정렬되지 않은 배열
____ 정렬되어 있는 배열
____ 리스트
____ 이진 트리
____ 정렬된 이진 트리
____ 조작을 제한한다
__17.3 스루풋과 레이턴시
____ CPU 명령
____ 더욱 큰 주제
__17.4 병렬성
____ 병렬화 비용
__17.5 메모리 문제
____ 메모리에 해당하는 레이턴시를 짧게 하는 두 가지 방법
____ 모아서 처리하기
____ 캐시에 대해 생각해보자
____ 어떻게 하면 좋을까
__17.6 STL과 데이터 구조
____ 이터레이터
____ vector
____ list
____ set
____ map
____ 포인터를 넣을까 실체를 넣을까
__17.7 어디가 느린가
__17.8 팁: 함수 호출에 걸리는 무게
____ 클래스 간 처리 분담을 변경한다
____ 호출 횟수를 줄인다
____ 인라인화한다
__17.9 팁: 빠른 계산과 느린 계산
____ 나눗셈
__17.10 정리

CHAPTER 18 입체 충돌 처리
__18.1 직육면체 충돌 처리
____ 응답 문제
____ 예제 코드
____ 직육면체로는 할 수 없는 일
__18.2 부동 소수점 수를 사용한 충돌 검출
____ 어떤 형상이 필요할까
____ 구와 구 교차 판정
____ 충돌 응답
____ 내적과 각도
____ 충돌 응답으로 돌아가서
____ 복수 충돌
____ 지면에 똑바로 서고 싶다
__18.3 삼각형과 선분 교차 판정
____ 기하학 형상 표현 방법
____ 연립방정식으로 한 번에 구하는 방법
____ 두 단계로 판정한다
____ 외적과 법선
____ t를 구한다
____ 삼각형 안에 있는가
____ 코드로 만든다
__18.4 실용적인가
____ 이음새 문제
__18.5 남겨진 문제
____ 속도 문제
____ 응답 문제
____ 계산 정밀도 문제
__18.6 정리

CHAPTER 19 로보 파이트 설계
__19.1 시퀀스 전이
__19.2 조작계
____ 이동
____ 점프
____ 선회
____ 무기 발사
____ 예제 코드
__19.3 총을 쏘다
____ 탄환 클래스
____ 탄환 데이터 구조
____ 유도탄
____ 예제 코드
__19.4 하나로 모은다
____ 추가 요소
____ 예제 코드
__19.5 프론트엔드
____ 카메라와 관계없는 그래픽
____ 예제 코드
__19.6 여전히 부족한 것
__19.7 정리

CHAPTER 20 빛이 닿는다는 것
__20.1 물체가 보인다는 것
____ 레이 트레이스
____ 무리한 레이 트레이스
____ 간략화
__20.2 빛이 감소하는 과정
____ 태양에서 물체까지
____ 면 각도
____ 반사하는 비율
____ 물체에서 카메라까지
__20.3 계산하자
____ 실제로 계산하는 식을 세운다
____ 속임수를 쓰다
____ 색에 대한 이야기
____ 예제 코드
__20.4 로보 파이트에 넣자
__20.5 팁: 속도 개선 힌트
____ 로컬 좌표로 계산한다
____ 법선을 미리 준비한다
____ 정점에 법선을 연결한다
____ 예제 코드
__20.6 팁: 조금 더 나은 그림을 만들려면
__20.7 정리

CHAPTER 21 캐릭터가 움직이기 시작한다
__21.1 상대 이동
____ 초보자 애니메이션
____ 상대 이동 개념
____ 복수 좌표계
____ 좌표계 이동
____ 행렬 합성
____ 태양계 구현
____ 하루와 한달
__21.2 계층 모델 클래스
____ Node 클래스
__21.3 자동으로 트리 구조 구축
____ 데이터 파일에 친자 관계를 기술한다
____ Tree 클래스
____ 초기값도 파일에 넣는다
____ 노드와 트리 리소스화
____ 노드 정의
__21.4 애니메이션 데이터화
____ 데이터화 실현
____ 애니메이션 데이터 세부 사항
____ 예제 코드
__21.5 보간법
____ 1차 함수 보간
____ 2차 함수 보간
____ 미분
____ 다시 2차 함수 보간으로
____ 3차 함수 보간
____ 기울기를 주고 보간한다
____ 3차 함수 보간 코드
__21.6 로보 파이트에 넣는다
__21.7 팁: 연립방정식 vs 정해진 기울기
__21.8 팁: 부족한 것
____ 애니메이션 전환
____ 정점 블렌딩
____ IK
____ 깨끗한 회전 보간
__21.9 정리

Part III 판매용 제품으로 가는 길
__22.1 전체 검사를 하면 속도가 느리다
__22.2 속도를 개선할 때 기본
____ 두 가지 아이디어
____ 충돌 검출은 ‘검색’이다
__22.3 정렬에 바탕을 둔 방법
____ 아주 단순한 방법
____ 양 끝을 정렬한다
____ 만난 사람 리스트
____ 코드로 만든다
____ 조금씩 개량
____ 정렬에 의한 방법을 사용할 때 약점
__22.4 분할에 의한 방법
____ 균등 분할
____ std::list를 사용해서 만든다
____ 개수를 정해서 배열로 만들자
____ 균등 공간 분할을 사용할 때 약점
____ 균등 공간 분할 용도
__22.5 팁: 균등 분할을 추가로 개량
____ 조금씩 new하면서 용량 제한을 없앤다
____ list 자체를 줄인다
____ 더욱 빠르게 한다
__22.6 팁: 고도의 공간 분할
____ k-d tree를 만든다
____ 예제 코드
____ k-d tree 용도
__22.7 정리

CHAPTER 23 로딩
__23.1 왜 로딩 시간이 길어지는가
__23.2 파일 로더 클래스
____ 일단 사용 방식을 정하자
____ 예제 코드
____ 우선 한 프레임에 한 파일로 한다
____ 한 프레임에 정해진 양만 로드한다
__23.3 파일 결합에 의한 속도 개선
____ 파일 결합 전략
____ 파일 결합은 언제 해야 하는가
____ 읽기 프로그램
____ 파일을 열거한다
____ Archiver1 예제를 사용한다
____ 읽는 쪽
__23.4 압축에 의한 속도 개선
____ 압축 종류
____ 연장 압축
____ 사전 압축
____ 실제 사용을 고려한다
__23.5 팁: 멀티 스레드에 의한 비동기 처리
____ 스레드 만들기
____ 공유 자원 문제
____ 공유 자원에는 자물쇠를 걸자
____ Mutex를 사용한다
____ 메모리에 정말로 쓰고 있는가
____ 스레드 세이프
____ 로더를 멀티 스레드화한다
__23.6 팁: 부호화
____ 부호화 예
____ 부호화 사용 방법
__23.7 팁: 내부를 감추기 위한 결합과 압축
__23.8 정리

CHAPTER 24 float 사용 방법
__24.1 자릿수에 한계가 있다는 것
__24.2 float 내부
____ float 읽는 법
____ float 정밀도
__24.3 어중간한 수에 의한 오차
__24.4 어느 정도 오차가 나는가
____ 덧셈
____ 뺄셈
____ 곱셈과 나눗셈
____ 상대오차는 어느 정도일까
__24.5 오차 길들이기
____ 계산 순서를 바꿔서 회피한다
____ 다항식
____ 계산 횟수를 줄인다
____ = =와 ! =를 사용하지 않는다
____ 큰 값을 넣지 않는다
____ 뺀 것으로 나눈다
____ 대소 판정
____ 10과 1f
__24.6 특별한 수
____ 제로
____ 무한대
____ 비수
____ 오류를 찾는 방법
____ 비정규수
__24.7 정리

CHAPTER 25 부속 라이브러리 사양
__25.1 라이브러리 클래스
____ 싱글톤
____ 실체가 따로 있는 클래스
____ 보통 클래스
__25.2 시작 환경 설정
____ 파일을 로드한다
____ 명령창 문자열
____ 모니터 갱신 주기를 사용하는 고정 프레임 레이트(수직 동기)
__25.3 Framework 모듈
____ DebugScreen 클래스
__25.4 WindowCreator 모듈
__25.5 FileIO 모듈
____ 아카이브 사용법
__25.6 Base 모듈
__25.7 Math 모듈
____ Random 클래스
____ 각도 단위
__25.8 Threading 모듈
____ Thread
____ Semaphore
____ Mutex
____ Event
____ getCurrentThreadId()
____ 스레드 수
__25.9 Input 모듈
__25.10 Sound 모듈
__25.11 PseudoXml 모듈
__25.12 Graphics 모듈
____ 대략적인 사용 방법
____ DrawCube 예제
__25.13 Scene 모듈
____ PrimitiveRenderer
____ StringRenderer
____ Collisonmesh
____ CollisonDetctor
__25.14 안티앨리어싱
__25.15 최종 버전 라이브러리에 로보 파이트를 이식한다
__25.16 X 파일
__25.17 정리

CHAPTER 26 버그와 친해지는 법
__26.1 불조심과 불끄기
__26.2 버그 종류
____ 논리 버그
____ 기술 버그
____ 처리 지연
____ 메모리 오버플로우
__26.3 예방 혹은 불조심
____ 배열 범위 오류
____ 해제된 포인터에 접근
____ 초기화되지 않은 포인터 접근
____ 위험한 함수를 무분별하게 사용
____ std::vector를 무분별하게 사용
____ 메모리 해제 잊음
____ 포인터를 추방한다
____ GameLib의 클래스
____ 코딩 스타일
__26.4 치료 혹은 소화
____ ‘분할’ 응용
____ 기본은 이진 검색
____ 뒤로 미루지 않는다
____ 시제품은 버려라
____ 메모리 누수 검출
__26.5 로보 파이트 안전 사양
__26.6 팁: 메모리 누수 검출 내부
____ new 내부
____ delete 내부
____ 정보를 늘린다
____ 파일 이름과 줄 번호
__26.7 정리

CHAPTER 27 더욱 앞으로
__27.1 무엇을 배우면 좋을까
__27.2 도구
____ 명령창 도구
____ GUI 도구
__27.3 AI
__27.4 네트워크
__27.5 셰이더
__27.6 참고문헌
____ 수학과 계산기 과학
____ 프로그래밍
____ 물리학
____ 컴퓨터 그래픽
__27.7 이런 책이 있었으면
____ 게임을 소재로 한 프로그래밍 책
____ 게임을 소재로 한 물리와 수학책
____ 누군가 써 주기를
히라야마 타카시
교토대학 대학원 공학연구과에서 유전자 연구를 공부했고 수료 후 ㈜세가에 입사했다. 그 후 전뇌전기 버츄어 온 마즈(PS2) 및 파워 스매시3(아케이드, PS3) 개발에 참가하고 현재에 이르렀다. 전뇌전기 버츄어 온 마즈에서는 이펙트와 데모 등을 파워 스매시3에서는 그래픽 엔진과 직물 시뮬레이터 등 라이브러리를 담당했다.


[역자소개]
김성훈

한국외국어대학교 일본어과를 졸업한 후 경우 및 보람하이테크에서 전산 관리 및 매뉴얼 번역과 통역을 담당했다. SCJP, MCP이며 IT 기술 및 프로그래밍에 관심을 가지고 현재 번역에이전시 엔터스코리아에서 IT 분야 전문 번역가로 활동하고 있다. 번역서로는 『Objective-C 프로그래밍』(2011, 멘토르), 『웹 개발자를 위한 웹을 지탱하는 기술』(2011, 멘토르), 『iOS 디버그 & 최적화 기법 for iPad&iPhone』(2012, 멘토르) 등 다수가 있다.
등록된 서평이 없습니다.
절대강좌! 유니티 5...
이재현
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
마크 그레고...
티모시 마스...
오즈 모리하...
 
전체평균(0)
회원평점   회원서평수 0
한빛미디어 출판사의 신간
엑셀 파워포인트 2016
전미진 저
13,500원
(10%↓+5%)
 
엑셀 2016
한은숙 저
16,200원
(10%↓+5%)
 
Node.js 6.x 블루프린트
페르난두 몬테이루 저
27,000원
(10%↓+5%)
 
파이썬 라이브러리를 활용한 머신러닝
안드레아스 뮐러 저
27,000원
(10%↓+5%)
 
실무에서 바로 통하는 자바
다케다 하루키 저
25,200원
(10%↓+5%)
 
이메일주소수집거부