Game Programming in C++ - OpenGL과 SDL을 활용한 3D 게임 개발

본문 바로가기

회원메뉴

쇼핑몰 검색

통합검색

Game Programming in C++ - OpenGL과 SDL을 활용한 3D 게임 개발

정가
45,000 원
판매가
40,500 원    10 %↓
적립금
2,250 P
배송비
무료배송
배송일정
48시간 배송 예정 배송일정안내
ISBN
9791161753560
쪽수 : 652쪽
산자이 마드하브  |  에이콘출판  |  2019년 09월 30일
소득공제 가능도서 (자세히보기)
주문수량
 
책 소개
★ 이 책에서 다루는 내용 ★ ■ C++ 개발 도구를 빠르게 구축하고 개발 시작하기 ■ 기초 2D 그래픽스와 게임 갱신, 벡터, 게임 물리 구현 ■ 널리 사용되는 AI 알고리즘으로 더욱 지능적인 게임을 제작하기 ■ OpenGL, 셰이더, 행렬, 변환 등의 내용을 포함한 3D 그래픽스 구현 ■ 3D 위치기반 오디오를 포함한 오디오 통합 및 믹싱 ■ 3D 환경에서 오브젝트 간 충돌 감지 ■ 플레이어의 입력에 효율적으로 반응하기 ■ 헤드업 디스플레이(HUD)를 포함한 유저 인터페이스 구축 ■ 이방성 필터링과 지연 셰이딩을 통한 그래픽 품질 향상 ■ 게임 레벨과 바이너리 게임 데이터 불러오기 및 저장 ★ 이 책의 대상 독자 ★ C++에 익숙한 프로그래머나 3D 비디오 게임을 프로그래밍하는 방법을 배우려는 프로그래머를 대상으로 하는 책이다. C++에 익숙하지 않은 독자를 위해 부록 A, '중급 C++ 리뷰'에서 몇 가지 C++ 개념을 살펴본다. 그러나 C++ 경험이 거의 없거나 전혀 없는 경우라면 이 책을 읽기에 앞서 C++를 배워야 한다. 그리고 독자가 동적 배열(벡터), 트리, 그래프를 포함한 일반 데이터 구조에 친숙하며, 고등학교 수준의 대수학을 어느 정도 알고 있다고 가정한다. 이 책에서 다루는 내용은 게임 프로그래밍의 지식을 넓히고자 하는 학계의 독자와 취미로 게임 프로그래밍에 관심을 두는 사람, 초급 및 중급 게임 프로그래머에게 도움이 된다. 이 책의 내용은 대학에서 한 학기에 배우는 내용보다 좀 더 많은 분량에 해당한다.
저자 소개
저자 : 산자이 마드하브 서던 캘리포니아 대학(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학기 이상 맡아온 학부생 대상 게임 프로그래밍이다. 역자 : 박주항 서강대학교에서 컴퓨터공학과 물리학을 복수 전공했으며, JCE(현 조이시티)의 온라인 게임 서버 프로그래머, 라인의 백엔드 프로그래머, 노리숲의 모바일 게임 개발 회사 대표를 거쳐 현재 프리랜서로 활동 중이다. 주요 저서로는 한빛미디어에서 출간한 『CGSF를 활용한 게임 서버 제작』(2014), 『CGSF 파헤쳐 보기』(2014), 『C++ 개발자를 위한 WIN32 오픈소스 라이브러리 100』(2015), 『SDL과 C++를 이용한 크로스 플랫폼 프로그래밍』(2015), 에이콘에서 출간한 『C++로 나만의 운영체제 만들기』(2018) 등이 있다. 번역서로는 한빛미디어에서 출간한 『데이터베이스 첫걸음』(2016)이 있다. 현재 『C++로 나만의 운영체제 만들기』의 후속 편을 집필하면서 운영체제인 SkyOS의 완성도를 높이기 위해 수많은 버그와 사투를 벌이고 있다.
목 차
1장 게임 프로그래밍 개관 __개발 환경 설정하기 ____마이크로소프트 윈도우 ____애플 맥OS __이 책의 소스 코드 얻기 __C++ 표준 라이브러리를 넘어 __게임 루프와 게임 클래스 ____프레임의 구조 ____게임 클래스 골격 구현하기 ____메인 함수 ____기본 입력 처리 __기초 2D 그래픽스 ____색상 버퍼 ____더블 버퍼링 ____기초 2D 그래픽스 구현하기 ____벽, 공, 패들 그리기 __게임 갱신하기 ____실시간 그리고 게임 시간 ____델타 시간 함수 로직 ____패들의 위치 갱신하기 ____공의 위치 갱신하기 __게임 프로젝트 __요약 __추가 독서 __연습 2장 게임 객체와 2D 그래픽스 __게임 객체 ____게임 객체의 타입 ____게임 객체 모델 ____게임 객체를 게임 루프에 통합하기 __스프라이트 ____이미지 파일 로딩 ____스프라이트 그리기 ____스프라이트 애니메이션 __배경 스크롤하기 __게임 프로젝트 __요약 __추가 독서 __연습 3장 벡터와 기초 물리 __벡터 ____두 점 사이에서 벡터 얻어내기: 뺄셈 ____벡터 스케일링하기: 스칼라 곱 ____두 벡터의 결합: 덧셈 ____거리 결정하기: 길이 ____방향 결정하기: 단위 벡터와 정규화 ____각도로부터 전방 벡터 변환 ____전방 벡터를 각도로 변환: 아크탄젠트 ____두 벡터 사이의 각도 구하기: 내적 ____법선 벡터 계산하기: 외적 __기본 이동 ____기본 MoveComponent 클래스 제작 ____InputComponent 클래스 제작 __뉴턴 물리 ____선형 역학 개요 ____오일러 적분을 사용한 위치 계산 ____가변 시간 단계 문제 __기본 충돌 감지 ____원과 원의 교차 ____CircleComponent 서브클래스 제작 __게임 프로젝트 __요약 __추가 독서 __연습 4장 인공지능 __상태 기계 행위 ____상태 기계 설계하기 ____기본 상태 기계 구현 ____클래스로서의 상태 __길찾기 ____그래프 ____너비 우선 탐색 ____휴리스틱 ____탐욕 최우선 탐색 ____A* 탐색 ____데이크스트라 알고리즘 ____길 따라가기 ____기타 그래프 표현 __게임 트리 ____미니맥스 ____불완전 게임 트리 다루기 ____알파 베타 가지치기 __게임 프로젝트 __요약 __추가 독서 __연습 5장 OpenGL __OpenGL 초기화 ____OpenGL 윈도우 설정 ____OpenGL 콘텍스트와 GLEW 초기화 ____프레임 렌더링 __삼각형 기초 ____왜 폴리곤인가? ____정규화된 장치 좌표 ____버텍스 버퍼와 인덱스 버퍼 __셰이더 ____버텍스 셰이더 ____프래그먼트 셰이더 ____기본 셰이더 작성하기 ____셰이더 로딩 ____삼각형 그리기 __변환 기초 ____오브젝트 공간 ____세계 공간 ____세계 공간으로 변환 __행렬과 변환 ____행렬 곱셈 ____행렬을 사용한 점의 이동 ____세계 공간으로 변환, 재검토 ____세계 변환을 액터에 추가 ____세계 공간에서 클립 공간으로 변환하기 ____변환 행렬을 사용하는 셰이더로 갱신 __텍스처 매핑 ____텍스처 로딩 ____버텍스 포맷 갱신 ____셰이더 갱신 ____알파 블렌딩 __게임 프로젝트 __요약 __추가 독서 __연습 6장 3D 그래픽스 __3D에서 액터 변환 ____3D를 위한 변환 행렬 ____오일러 각 ____쿼터니언 ____새로운 액터 변환 __3D 모델 로딩 ____모델 포맷 선택 ____버텍스 속성 갱신 ____gpmesh 파일 로딩 __3D 메시 그리기 ____클립 공간으로의 변환, 재검토 ____화가 알고리즘을 버리고 Z-버퍼링을 사용하자 ____BasicMesh 셰이더 ____MeshComponent 클래스 __조명 ____버텍스 속성 재검토 ____광원의 유형 ____퐁 반사 모델 ____조명 구현 __게임 프로젝트 __요약 __추가 독서 __연습 7장 오디오 __오디오 구축하기 ____FMOD ____FMOD 설치 ____오디오 시스템생성 ____뱅크와 이벤트 ____SoundEvent 클래스 __3D 위치 기반 오디오 ____기본 리스너 설정 ____SoundEvent에 위치 기반 기능 추가 ____액터와 사운드 이벤트를 연관시키는 AudioComponent 작성 ____3인칭 게임상의 리스너 ____도플러 효과 __믹싱 및 이펙트 ____버스 ____스냅샷 ____차폐 __게임 프로젝트 __요약 __추가 독서 __연습 8장 입력 시스템 __입력 장치 ____폴링 ____상승 에지와 하강 에지 ____이벤트 ____기본 입력 시스템 아키텍처 __키보드 입력 __마우스 입력 ____버튼과 위치 ____상대 모션 ____스크롤 휠 __컨트롤러 입력 ____컨트롤러 한 개 활성화하기 ____버튼 ____아날로그 스틱과 트리거 ____2차원에서 아날로그 스틱 필터링하기 ____복수개의 컨트롤러 지원 __입력 매핑 __게임 프로젝트 __요약 __추가 독서 __연습 9장 카메라 __1인칭 카메라 ____기본 1인칭 이동 ____피치 없는 카메라 ____피치 추가(높낮이) ____1인칭 모델 __팔로우 카메라 ____기본 팔로우 카메라 ____스프링 추가 __궤도 카메라 __스플라인 카메라 __언프로젝션 __게임 프로젝트 __요약 __추가 독서 __연습 10장 충돌 감지 __기하 타입 ____선분 ____평면 ____바운딩 볼륨 __교차 테스트 ____점을 포함하는지 판정하는 테스트 ____바운딩 볼륨 테스트 ____선분 테스트 ____동적 오브젝트 __게임 코드에 충돌 추가하기 ____BoxComponent 클래스 ____PhysWorld 클래스 ____SegmentCast를 활용한 공의 충돌 ____PhysWorld에서 박스 충돌 테스트 ____벽과 플레이어와의 충돌 __게임 프로젝트 __요약 __추가 독서 __연습 11장 유저 인터페이스 __폰트 렌더링 __UI 스크린 ____UI 스크린 스택 ____정지 메뉴 ____버튼 ____다이얼로그 박스 __HUD 요소 ____조준망 추가 ____레이더 추가 __현지화 ____유니코드로 작업하기 ____텍스트 맵 추가하기 ____기타 현지화 이슈 __다양한 해상도 지원 __게임 프로젝트 __요약 __추가 독서 __연습 12장 뼈대 애니메이션 __뼈대 애니메이션의 기초 ____뼈대와 포즈 ____인버스 바인드 포즈 행렬 ____애니메이션 데이터 ____스키닝 __뼈대 애니메이션 구현 ____스키닝 버텍스 속성으로 그리기 ____뼈대 로딩 ____애니메이션 데이터 로딩 ____스키닝 버텍스 셰이더 ____애니메이션 갱신 __게임 프로젝트 __요약 __추가 독서 __연습 13장 중급 그래픽스 __텍스처 품질 개선하기 ____텍스처 샘플링 재검토 ____밉매핑 ____이방성 필터링 __텍스처로 렌더링 ____텍스처 생성하기 ____프레임버퍼 개체 생성 ____프레임버퍼 개체로 렌더링 ____HUD에 거울 텍스처 그리기 __지연 셰이딩 ____G 버퍼 클래스 생성 ____G 버퍼에 쓰기 ____전역 조명 ____점광 추가 ____개선 및 이슈 __게임 프로젝트 __요약 __추가 독서 __연습 14장 레벨 파일과 바이너리 데이터 __레벨 파일 로딩 ____전역 속성 로딩 ____액터 로딩 ____컴포넌트 로딩 __레벨 파일 저장하기 ____전역 속성 저장 ____액터와 컴포넌트 저장 __바이너리 데이터 ____바이너리 메시 파일 저장하기 ____바이너리 메시 파일 로딩 __게임 프로젝트 __요약 __추가 독서 __연습 부록 A 중급 C++ 리뷰 __참조, 포인터, 그리고 배열 ____참조 ____포인터 ____배열 ____동적 메모리 할당 __유형별 클래스 주제들 ____참조, 상수 그리고 클래스 ____클래스의 동적 할당 ____소멸자 ____복사 생성자 ____연산자 오버로딩 __컬렉션 ____빅 오 표기법 ____벡터 ____연결 리스트 ____큐 ____스택 ____맵 ____해시 맵 ____반복자, auto, 범위 기반 for 루프 __추가 독서
출판사 서평
처음에는 핵심 개념을 배우기 위해 게임 제작을 2D로 진행한다. 6장 이후부터는(8장 제외) 게임 제작을 3D로 진행한다. 각 장에서는 다음 내용을 다룬다. 1장, '게임 프로그래밍 개관'에서는 게임 프로그래밍의 기본 개념을 살펴보고 게임을 초기화하고 실행하는 방법을 확인한다. 또한 SDL(Simple DirectMedia Layer) 라이브러리를 소개한다. 2장, '게임 객체와 2D 그래픽스'에서는 프로그래머가 게임에서 객체를 구성하는 방법을 설명하고 플립북 애니메이션과 같은 추가 2D 그래픽 콘셉트를 살펴본다. 3장, '벡터와 기초 물리'에서는 모든 게임 프로그래머에게 중요한 도구인 수학 벡터를 설명한다. 또한 움직임 및 충돌에 사용하는 물리의 기초를 살펴본다. 4장, '인공지능'에서는 상태 기계와 길 찾기 같은 개념을 포함해 컴퓨터가 제어하는 게임 캐릭터를 만드는 방법을 살펴본다. 5장, 'OpenGL'에서는 버텍스 셰이더와 프래그먼트 셰이더 구현을 포함해 OpenGL 렌더러를 생성하는 방법을 설명한다. 6장, '3D 그래픽스'에서는 뷰, 투영, 그리고 회전을 표현하는 방법을 포함해 지금까지 작성한 코드를 3D 게임에서 동작하는 데에 중점을 둔다. 7장, '오디오'에서는 FMOD API를 사용해서 오디오 시스템을 구축하는 방법을 설명한다. 3D 위치 기반 오디오에 관한 내용도 다룬다. 8장, '입력 시스템'에서는 키보드나 마우스 그리고 게임 컨트롤러 이벤트를 처리하기 위해 좀 더 견고한 입력 시스템을 설계하는 방법을 설명한다. 9장, '카메라'에서는 1인칭 카메라, 팔로우 카메라, 궤도 카메라를 포함해 여러 3D 카메라를 구현하는 방법을 보여준다. 10장, '충돌 감지'에서는 구체, 평면, 선분, 박스를 포함해 게임에서 충돌을 감지하는 방법을 자세히 알아본다. 11장, '유저 인터페이스'에서는 메뉴 시스템과 레이더와 조준 격자 같은 헤드업 디스플레이(HUD) 요소의 구현을 살펴본다. 12장, '뼈대 애니메이션'에서는 3D 캐릭터를 움직이는 방법을 다룬다. 13장, '중급 그래픽스'에서는 지연 셰이딩을 구현하는 방법을 포함해 몇 가지 중급 그래픽스 주제를 살펴본다. 14장, '레벨 파일과 바이너리 데이터'에서는 레벨 파일을 로드하고 저장하는 방법을 설명한다. 또한 바이너리 파일 포맷을 작성하는 방법을 다룬다. 부록 A, '중급 C++ 리뷰'에서는 메모리 할당과 컬렉션을 포함하여 책 전반에서 사용한 몇 가지 중급 C++ 주제를 살펴본다. 각 장은 게임 프로젝트와 추천 추가 독서 목록, 그리고 몇 가지 예제를 담고 있다. 연습에서는 각 장에서 구현한 코드에 추가 기능을 구현할 수 있도록 제시한다.
고객 리뷰
평점 리뷰제목 작성자 작성일 내용보기

아직 작성된 리뷰가 없습니다.

반품/교환
· 회사명 : 북앤북스문고   · 주소 : 제주특별자치도 제주시 1100로 3308 B1  
· 대표자 : 김대철   · 사업자 등록번호 : 661-10-02383  
· 통신판매업신고번호 : 2023-제주노형-0169   · 개인정보 보호책임자 : 최재혁  

고객센터

(평일 09:30~17:30)
(점심 12:00~13:00)
· 전화 : 064)725-7279 (발신자 부담)
    064)757-7279 (발신자 부담)
· 팩스 : 064)759-7279
· E-Mail : bookpani@naver.com
Copyright © 2019 북앤북스문고. All Rights Reserved.