장바구니 담기 close

장바구니에 상품을 담았습니다.

2D 게임 프로그래밍

2D 게임 프로그래밍

  • 찰스 켈리
  • |
  • 에이콘출판
  • |
  • 2014-11-28 출간
  • |
  • 644페이지
  • |
  • 188 X 235 X 31 mm /112g
  • |
  • ISBN 9788960776418
판매가

40,000원

즉시할인가

36,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
36,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

★ 요약 ★

이 책은 C++와 DirectX를 이용해 간단한 게임엔진을 제작해보면서 2D 게임을 개발하는 데 필요한 내용을 배울 수 있는 입문서다. 먼저 기본적인 윈도우 프로그래밍과 DirectX부터 간단한 게임 엔진 제작, 스프라이트 및 애니메이션, 게임 물리, 사운드, 텍스트 등을 배운다. 그러고 나서 타일 기반 게임을 제작하는 방법을 배우며, 프로젝트 관리 방법과 함께 그동안에 제작한 각 부분을 합쳐 게임을 완성한다. 마지막으로 간단하게 네트워크 프로그래밍을 배우며 책을 마친다.

★ 이 책에서 다루는 내용 ★

■ 충돌 감지 등 2D 프로그래밍 기법
■ 게임 엔진을 만드는 과정과 만든 엔진을 사용해 완성된 게임을 개발했을 때의 장점
■ C++를 사용해 최신 DirectX와 윈도우 프로그래밍 코딩 방법
■ 각 장의 내용을 복습할 수 있는 복습문제와 프로그래밍 연습 문제 포함
■ 철저하게 테스트된 예제 프로그램을 www.programming2dgames.com 사이트에서 제공
■ 이 책에서 만들어 보는 2D 게임의 종류
ㆍ 측면, 수직 스크롤 게임
ㆍ 고전 아케이드 게임
ㆍ 타일 기반 게임
ㆍ 동적 어드벤처 게임
ㆍ 퍼즐 게임.

★ 이 책의 대상 독자 ★
객체 지향 프로그래밍을 처음 접한다고 하더라도, 염려할 필요는 없다. 모든 코드를 보여줄 것이다. 책에 있는 객체 지향 코드를 매우 간단하게 사용할 수 있으며, 많은 예제가 포함되어 있다. 책에 있는 코드를 통해 성공적으로 프로그램을 만들기 위해서는 C, C++ 언어나 자바에 대한 철저한 이해와 미리 선언된 클래스를 사용할 수 있는 능력과 같은 프로그래밍 전문 지식이 요구된다. 책에 포함된 게임 엔진 코드를 수정하거나 개선하고자 하는 숙달된 C++ 프로그래머를 위해 추가 토론과 연습 문제가 제공된다.

★ 이 책의 구성 ★

1장, 시작하기
1장에서는 마이크로소프트 비주얼 스튜디오 2010 개발 환경을 소개하고 간략하게 DirectX API에 대해 설명한다. 책에 나와 있는 코드는 C++ 프로그래밍 언어로 작성됐다. C++에 익숙하지 않지만 C나 자바(Java)에 익숙하다면 광범위한 예제가 제공되기 때문에 쉽게 이해하고 사용할 수 있다. C++ 언어에 대한 간단한 소개도 포함돼 있다. 또한 게임 엔진의 역할을 설명하고, 프로그래밍에 관한 일반적인 팁과 도움이 되는 도구를 알려준다. 1장이 끝난 뒤에는 개발 환경을 더 잘 이해하게 되고 게임 엔진이 제공하는 목적이 무엇인지 더 잘 알게 된다.

2장, 윈도우 프로그래밍 기초
2장에서는 윈도우 프로그래밍의 기초를 알아본다. 비주얼 스튜디오에서 새 프로젝트를 만드는 방법부터 시작한 후 소스 파일을 추가하고 첫 번째 윈도우 프로그램으로 고전적인 ‘Hello World’를 만들어본다. 윈도우 애플리케이션의 요구 사항이나 작업이 설명돼 있다. 또한 키보드로부터 입력을 받는 방법, 프로그램이 하나 이상의 복사본을 갖지 못하게 만드는 방법 등도 살펴본다. 2장이 끝난 뒤에는 완전한 기능이 있는 윈도우 프로그램을 만들고, 컴파일하고, 실행할 수 있을 것이다.

3장, DirectX 입문
DirectX는 고성능 그래픽, 사운드, 주변 장치와 특별한 상호 작용을 필요로 하는 프로그램을 만드는 데 사용하는 애플리케이션 프로그래밍 인터페이스(API)다. 3장에서는 먼저 DirectX API를 살펴보고 어떻게 사용하는지 알아본다. 3장에서 소개하는 DirectX 코드는 Graphics 클래스에 포함할 것이다. Graphics 클래스는 게임 엔진의 일부분이 될 것이다. DirectX 프로그래밍을 위해 비주얼 스튜디오 프로젝트를 만들고 환경설정을 한 후 첫 번째 DirectX 프로그램을 만들어본다.

4장, 게임 엔진
4장에서는 게임 엔진을 만들기 시작한다. 먼저 엔진의 핵심인 Game 클래스를 만든다. 윈도우 메시지 핸들링과 고성능 윈도우 타이머를 포함한다. 잃어버린 윈도우 장치를 복구하는 적절한 방법을 살펴보고 관련 코드를 추가한다. 다음으로 화면에 이미지를 그리기 위해 DirectX가 요구하는 코드를 살펴본다. Game 클래스의 메인 게임 루프에 코드를 감싼 뒤 게임의 속도를 조절하는 방법을 알아본다. 또한 4장에서는 Input 클래스를 만든다. Input 클래스에서 키보드, 마우스, 게임 컨트롤러에서 어떻게 입력을 받는지 알아본다. 책의 나머지 부분에 걸쳐 만들 Spacewar 게임의 첫 모습을 보면서 4장을 마무리한다. 4장이 끝난 뒤에는 게임 엔진을 위한 기본적인 프레임워크를 완성하게 될 것이며, 게임과 같은 실시간 애플리케이션이 윈도우 환경에서 어떻게 동작하는지 알 수 있게 될 것이다.

5장, 스프라이트와 애니메이션
5장에서는 스프라이트와 애니메이션 그래픽 그리기와 관련된 사항을 전반적으로 다룬다. DirectX 스프라이트를 사용해 화면에 이미지를 그린다. 스프라이트는 투명한 부분을 포함하고 있는 이미지를 지원한다. 스프라이트로 그려진 이미지는 텍스처라고 부른다. 파일로부터 텍스처를 어떻게 불러오는지, 텍스처 관리(Texture Manager) 클래스를 통해 메모리로 불러온 뒤 텍스처를 어떻게 관리하는지 살펴본다. 실제로 스프라이트를 그리는 코드는 Image 클래스의 일부분이 된다. 5장에서 만든 새 클래스들은 게임 엔진에 포함할 것이다. 애니메이션 스프라이트를 어떻게 그리는지 살펴보면서 5장을 마무리한다. 5장이 끝난 뒤에는 애니메이션 그래픽을 그리는 데 게임 엔진을 사용할 수 있을 것이다

6장, 충돌과 개체
6장에서는 스프라이트를 어떻게 물리가 적용된 개체(entity)처럼 만드는지 살펴본다. 벡터와 관련된 수학을 살펴보며 6장을 시작한다. DirectX는 계산을 수행하는 데 도움을 주기 위해 사용하는 벡터 작업이 많이 포함돼 있다. 화면에 게임 아이템이 충돌할 때 어떻게 감지하는지 철저하게 설명한다. 그리고 개체가 현실적으로 반응하게 만들기 위해 게임에서 물리를 어떻게 사용하는지 알아본다. 충돌 코드와 물리 코드는 게임 엔진에 추가할 새 Entity 클래스의 일부분이 된다. 기능이 적용된 버전의 Spacewar 게임을 보며 6장을 마무리한다. 6장이 끝난 뒤에는 서로에게 반응할 수 있는 애니메이션 그래픽을 그릴 수 있을 것이다.

7장, 사운드
7장에서는 게임 엔진이 자신의 목소리를 얻게 된다. Audacity 유틸리티를 사용해 오디오 파일을 만들고 편집하는 방법을 알아본다. 다음으로 XACT를 사용해 게임에 사용할 오디오 파일을 어떻게 준비하는지 살펴본다. 그리고 XACT 엔진을 사용해 사운드를 재생하는 방법을 알아본다. 오디오 코드는 게임 엔진에 추가할 Audio 클래스에 추가할 것이다. 7장이 끝난 뒤에는 게임 오디오 파일을 만들고, 편집하고, 재생하는 방법을 이해하게 될 것이다.

8장, 텍스트
기존 그래픽 코드를 사용해 어떻게 스프라이트 기반의 텍스트 시스템을 만드는지 살펴보고, DirectX 텍스트를 사용하는 방법도 알아본다. 텍스트 코드는 새 Text 클래스로 감싼다. 새로 만든 텍스트 기능을 게임 엔진에 포함시켜 콘솔을 추가하는 데 사용한다. 8장이 끝난 뒤에는 게임에 텍스트 메시지를 보여줄 수 있게 될 것이며, 콘솔에 명령을 추가할 수 있게 될 것이다.

9장, 향상된 외관
9장에서는 게임의 외관을 향상시키기 위한 여러 기법을 살펴본다. 이 기법들은 게임에 깊은 느낌을 주는 기법과 사용자 인터페이스 요소를 추가하는 기법을 포함한다. 9장이 끝난 뒤에는 2D 게임의 외관을 향상하기 위한 여러 기법을 배웠을 것이다.

10장, 타일 기반 게임
타일 기반 게임은 나온 지 꽤 됐지만, 오늘날에도 여전히 의미가 있다. 먼저 타일 기반 게임의 장점을 알아본다. 다음으로 도구를 이용해 타일 세트를 만들고 게임 맵을 편집하는 방법을 분석한다. 마지막으로 타일 세트를 게임 화면에 그리는 흥미로운 방법을 살펴본다. 10장이 끝난 뒤에는 자신의 게임을 플랫폼 방식으로 만들 수 있을 것이다.

11장, 게임 완성
11장에서는 게임을 완성하기 위해 그동안 작업했던 모든 기능을 하나로 합친다. 시간과 자원을 관리하는 방법을 포함해 프로젝트 관리의 기초 일부분을 다룬다. 그리고 Spacewar 게임을 만들기 위해 거쳐야 하는 여러 단계를 차례로 밟아나간다. 또한 Space Pirates 게임의 도움을 약간 받아 게임 상태를 저장하고 불러오는 방법을 다룬다.

12장, 네트워크 프로그래밍
TCP/IP와 UDP/IP는 단지 웹 서핑 이상으로 훨씬 유용하다. 12장에서는 윈도우 소켓을 사용해 게임에 네트워크 통신 기능을 추가한다. 윈도우 소켓이 어떻게 동작하는지 설명하면서 12장을 시작한다. 소켓 코드는 게임 엔진의 일부분인 Net 클래스에 포함돼 있다. 새로운 네트워크 코드는 간단한 클라이언트/서버 채팅 프로그램과 Spacewar의 네트워크 플레이 버전을 만드는 데 사용된다.

★ 저자 서문 ★

오늘날 상용 게임의 대부분은 C++로 작성돼 있으며, 게임 엔진을 사용해 만들어진다. 이런 핵심 요소를 다루기 위해 이 책에서는 게임 프로그래밍에 필요한 모든 내용을 소개한다. 책에 있는 모든 코드는 C++를 사용해 면밀하게 작성했다. 독자들은 게임 프로그래밍 기술을 배우며 자신의 게임 엔진을 통합하고, 만든 게임 엔진을 사용해 완성된 게임을 만드는 방법을 알게 된다.
이 책은 스프라이트, 애니메이션, 충돌 감지, 사운드, 텍스트 디스플레이, 게임 대시보드, 특수 그래픽 효과, 타일 기반 게임, 네트워크 프로그래밍을 모두 다룬다. 또한 DirectX 애플리케이션을 프로그래밍하는 방법을 체계적으로 설명하고, 알맞은 소프트웨어 공학 기법에 초점을 맞춘다. 모든 주제는 이론적으로 설명하며, 실용적인 코드 예제를 함께 제공한다.

★ 옮긴이의 말 ★

바야흐로 게임 엔진의 시대다. 유니티(Unity) 엔진을 선두로 언리얼(Unreal) 엔진, 코코스 2D(Cocos 2D)부터 시작해 코드 작성이 필요하지 않은 게임샐러드(GameSalad)까지, 세상에는 수많은 게임 엔진이 있다. 불과 일이십 년 전 네이티브(Native)로 게임을 만들던 시절에 비하면 눈부신 발전을 했다고 볼 수 있다. 그 당시에 코드를 작성하지 않고 게임을 만들 수 있다고 생각이나 했을까?
물론 게임 엔진은 편리하고, 빠른 게임 개발을 할 수 있게 도와준다. 한 번의 클릭으로 육면체나 구를 만들 수 있으며, 물리나 사운드를 추가할 수도 있다. 하지만 게임 엔진을 사용해 게임을 만드는 것이 정말 좋기만 한 것일까?
게임 엔진을 통해 캐릭터에 대한 애니메이션 동작을 추가하는 방법은 알지만, 내부적으로 애니메이션 동작이 어떻게 실행되는지 아는 사람은 많지 않다. 물론 애니메이션 동작의 실행 원리를 반드시 알 필요는 없다. 원리를 모른다고 해서 게임을 만들지 못하는 것은 아니기 때문이다.
하지만 “아는 만큼 보인다.”라는 말이 있다. 애니메이션 동작의 실행 원리를 아는 사람이 게임 엔진을 더 빨리 이해하며, 문제가 생겼을 경우 더 빨리 해결할 수 있다. 그리고 다른 게임 엔진을 사용해야 되는 경우 더 빨리 적응할 수 있다.
이 책은 여러분이 ‘아는 만큼 볼 수’ 있게 2D 게임 제작에 필요한 부분을 C++와 DirectX를 통해 배운다. 또한 간단하게나마 게임 엔진을 제작하며 각 부분을 만들고 통합하는 방법도 배운다. 초반부에는 C++를 빠르게 복습하며, 기본적인 윈도우 프로그래밍과 DirectX에 대해 다룬다. 그 뒤에는 게임 엔진의 뼈대를 구축하는 과정에서 스프라이트 및 애니메이션, 게임 물리, 사운드, 텍스트 등을 배우게 된다. 후반부에는 타일 기반의 게임 제작 방법을 배우며, 프로젝트 관리 방법과 함께 그동안에 제작한 각 부분을 합쳐 게임을 완성한다. 마지막으로 네트워크 프로그래밍을 간략하게 배우며 책을 마친다.
이 책은 기본적으로 프로그래밍에 대한 지식을 요구한다. 물론 1장에서 C++를 빠르게 복습하는 시간을 갖기는 하지만, C++ 프로그래밍에 대한 기본적인 지식이 없다면 책을 읽는 데 어려움을 겪을 수 있다. 따라서 C++ 프로그래밍을 먼저 공부한 뒤, 또는 C++프로그래밍을 공부하면서 이 책을 보기 바란다.
나는 언제나 기본에 충실해야 된다고 생각한다. 혹시 여러분이 게임 개발자를 꿈꾸는 학생이라면 이 책을 반드시 읽기를 바란다. 이 책을 통해 자신의 기본기를 다시 다져보는 시간이 됐으면 좋겠다. 마지막으로, 게임 개발자 인터뷰에서 송재경 XL게임스 대표가 말했던 이야기 중 일부를 인용한다.
“게임을 개발할 때 가장 중요하게 여기는 가치는 무엇입니까? 최근 개발되는 게임 중 적지 않은 게임들이 기본에 충실하기보다는 독특함만을 추구하는 것 같습니다. 그런데 독특함은 의외로 기본에 충실할 때 만들어낼 수 있습니다. <리니지>를 개발할 때와 지금의 상황은 많이 달라졌지만, 게임의 변하지 않는 핵심은 재미를 선사해야 한다는 것입니다. 재미있는 게임은 당연히 게이머들에게 좋은 반응을 얻습니다. 따라서 기본에 충실히 하는 것이야말로 아무리 강조해도 지나치지 않고, 저 역시 게임을 개발할 때 가장 중요하게 여기고 있습니다.”

저자소개

저자 찰스 켈리 (Charles Kelly)는 먼로 카운티 커뮤니티 대학(Monroe County Community College)의 교수로, 게임 프로그래밍과 컴퓨터과학 과목들을 가르치고 있다. 오픈소스 어셈블러/시뮬레이터인 ‘EASy68K’ 프로젝트의 리더이자 주 기여자이기도 하다. 미시간 주 디어 본 대학(University of Michigan-Dearborn)에서 컴퓨터과학 석사 학위를 받았으며, 외래 강사로도 일했다.

도서소개

『2D 게임 프로그래밍』은 C++와 DirectX를 이용해 간단한 게임엔진을 제작해보면서 2D 게임을 개발하는 데 필요한 내용을 배울 수 있도록 구성한 책이다. 충돌 감지 등 2D 프로그래밍 기법, C++를 사용해 최신 DirectX와 윈도우 프로그래밍 코딩 방법, 각 장의 내용을 복습할 수 있는 복습문제와 프로그래밍 연습 문제 등을 수록하였다. 아울러 이 책에서는 측면, 수직 스크롤 게임, 고전 아케이드 게임, 타일 기반 게임 등의 2D 게임을 만들어 볼 수 있도록 했다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.