간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (38,480원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (28,350원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (32,400원)
(최대할인 4만원 / 2만원 이상 결제)
Close

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

원제 : Game Programming in C++
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 96
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

45,000원

  • 40,500 (10%할인)

    2,250P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
주문수량
감소 증가

* 배송예정일이 오늘이나 내일인 경우 1) 당일/하루배송 보장! 2) 배송 지연 시 I-Point 2,000P또는 4,000원 도서상품권 지급 &n 더보기

책소개

C++는 게임 개발을 선도하는 주요 스튜디오에서 핵심 언어로 사용한다. C++는 여러 코드 기반에서 사용되기 때문에 이들 스튜디오는 게임을 유지보수하거나 개선할 때 C++를 사용한다.
이 책은 C++로 3D 비디오 게임을 프로그래밍하는 데 현실적이고 실용적인 접근을 제공한다. USC 산자이 마드하브의 게임 프로그래밍 과정을 바탕으로 한 이 책은 쉽고 재밌으며, 직접 실습할 수 있어서 실용적이고 완벽하다.

출판사 서평

★ 이 책에서 다루는 내용 ★

■ C++ 개발 도구를 빠르게 구축하고 개발 시작하기
■ 기초 2D 그래픽스와 게임 갱신, 벡터, 게임 물리 구현
■ 널리 사용되는 AI 알고리즘으로 더욱 지능적인 게임을 제작하기
■ OpenGL, 셰이더, 행렬, 변환 등의 내용을 포함한 3D 그래픽스 구현
■ 3D 위치기반 오디오를 포함한 오디오 통합 및 믹싱
■ 3D 환경에서 오브젝트 간 충돌 감지
■ 플레이어의 입력에 효율적으로 반응하기
■ 헤드업 디스플레이(HUD)를 포함한 유저 인터페이스 구축
■ 이방성 필터링과 지연 셰이딩을 통한 그래픽 품질 향상
■ 게임 레벨과 바이너리 게임 데이터 불러오기 및 저장

★ 이 책의 대상 독자 ★

C++에 익숙한 프로그래머나 3D 비디오 게임을 프로그래밍하는 방법을 배우려는 프로그래머를 대상으로 하는 책이다. C++에 익숙하지 않은 독자를 위해 부록 A, ‘중급 C++ 리뷰’에서 몇 가지 C++ 개념을 살펴본다. 그러나 C++ 경험이 거의 없거나 전혀 없는 경우라면 이 책을 읽기에 앞서 C++를 배워야 한다. 그리고 독자가 동적 배열(벡터), 트리, 그래프를 포함한 일반 데이터 구조에 친숙하며, 고등학교 수준의 대수학을 어느 정도 알고 있다고 가정한다.
이 책에서 다루는 내용은 게임 프로그래밍의 지식을 넓히고자 하는 학계의 독자와 취미로 게임 프로그래밍에 관심을 두는 사람, 초급 및 중급 게임 프로그래머에게 도움이 된다. 이 책의 내용은 대학에서 한 학기에 배우는 내용보다 좀 더 많은 분량에 해당한다.

★ 이 책의 구성 ★

처음에는 핵심 개념을 배우기 위해 게임 제작을 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++ 주제를 살펴본다.
각 장은 게임 프로젝트와 추천 추가 독서 목록, 그리고 몇 가지 예제를 담고 있다. 연습에서는 각 장에서 구현한 코드에 추가 기능을 구현할 수 있도록 제시한다.

★ 옮긴이의 말 ★

게임업계에 종사한 사람으로서 이런 훌륭한 책을 번역하게 된 뜻깊은 일이다. 내용을 간단하게 설명하는 다른 책과 달리, 이 책은 게임에서 쓰이는 수학, AI, 사운드, 애니메이션 등 전반적인 기술을 자세하게 설명한다. 또한 C++로 제작된 예제 소스코드를 제공해 내용을 쉽게 전달하는 데 주력했다.
C++의 장점은 저수준 레벨에서 프로그램을 제어할 수 있다는 점이다. 즉, C++로 프로그램을 잘 작성한다는 것은 컴퓨터 아키텍처를 잘 이해하고 있다는 것과 일맥상통한다고 볼 수 있다. 그래서 컴퓨터 성능이 좋지 않았던 2000년대 초반에는 게임 개발 언어로 C++가 인기를 끌었다. 하지만 C++는 생산성 측면에서 후속 언어에 밀리면서 그 점유율이 굉장히 낮아졌다. 또한 유니티 같은 강력한 게임 제작 툴이 등장하면서 C++의 입지는 매우 줄어들었다. 하지만 C++ 언어는 지속해서 발전하고 있으며, 언리얼 엔진은 여전히 C++ 언어를 지원한다. 중견급 이상의 기업에서는 항상 C++ 스킬을 요구하기 때문에 프로그래머라면 C++는 기본으로 다룰 수 있어야 한다.
앞에서 언급한 툴이나 특정 언어가 영원히 시장을 장악한다고 볼 수는 없으며, 언젠가는 더 나은 게임 개발 모델이 나올 것이다. 그런 경우를 대비하기 위해서라도 특정 툴에 종속되는 내용이 아니라, 기반 기술을 이해하는 것은 큰 도움이 된다. 예를 들어, 클래스 간 계층 구조를 다루는 개념은 C++, 자바, C# 등의 객체지향 언어에 바로 적용해서 사용할 수 있으며, 새로운 언어가 등장하더라도 다시 활용할 수 있는 이론이다.
그리고 이 책은 샘플 코드를 위해 다양한 크로스 플랫폼 라이브러리를 활용했다. 이 책에서 사용한 SDL, OPENGL, FMOD 라이브러리는 다양한 플랫폼으로 이식할 수 있기에 알아두면 언젠가는 반드시 도움이 된다.
한 권의 책으로 게임에 사용된 모든 프로그래밍 기법을 담기에는 무리겠지만, 적어도 이 책은 게임 개발에 도전하려는 학생이나 일반인에게 좋은 지침서가 될 것이며, 현업 종사자에게는 자신의 실력을 점검해 볼 수 있는 가이드를 제공할 것이라고 확신한다.

목차

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 루프
__추가 독서

관련이미지

저자소개

산자이 마드하브 [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

해당작가에 대한 소개가 없습니다.

전공도서/대학교재 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    10.0

    판매자정보

    • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

    판매자

    (주)교보문고

    상호

    (주)교보문고

    사업자 종류

    법인사업자

    사업자번호

    102-81-11670

    연락처

    1544-1900

    이메일

    callcenter@kyobobook.co.kr

    통신판매 신고 번호

    01-0653

    영업소재지

    서울특별시 종로구 종로 1(종로1가,교보빌딩)

    교환/환불

    반품/교환 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

    반품/교환가능 기간

    변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
    단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

    반품/교환 비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
    상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

    반품/교환 불가 사유

    ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)

    ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등

    ·복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

    ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

    ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

    상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

    소비자 피해보상
    환불지연에 따른 배상

    ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

    ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

    배송안내

    • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

    • 배송비는 업체 배송비 정책에 따릅니다.

    • - 도서 구매 시, 1만 원 이상 무료, 1만원 미만 2천 원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용