로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
서평보기
Programming Role Playing Games with DirectX, (2/E)
Jim Adams | Muska & Lipman Pub | 원서 | 2004-06-30
종합평점
도서수준
기초적 RPG 게임 코드구조를 이해하고 싶다면... 2005-04-23 오후 11:35:18 
평점
도서수준
조회수 (2486)
공감 (0)
남병철 님의 블로그
일단 이 책과 처음 만난것은 2002년 첫번째 판이 번역되었던것을 스치듯 접했었습니다.
그 당시 저는 아직 게임 프로그래밍과는 거리가 멀었었는데 웬지 끌렸던것 같습니다. 그리고 2004년에 두번째 판이 나왔습니다. 많은 변화는 없지만 이전판이 없는 분들이라면 최신판이 더 좋을듯 합니다.
 
자.. 그럼 책에대해 조금 살펴보겠습니다.
 
책 장사 모드~ ^^
 
본 책은~ D3D를 전혀 모르는 혹은 3D 프로그래밍을 전혀 모르는 분들이 처음부터 보기에는 다소 무리가 있습니다. 처음부터 보려면 국내에 번역서나 직접 쓴 책들이 몇몇 있기에 그런 책들을 살펴보시는게 좋을것 같습니다. 그러면서 어느정도 코드 작성에 익숙해 지면 이 책을 보면서 조금씩 익혀나간다면 같은 D3D 코드라도 보다더 재사용성이 용이한 코드들을 경험하게 됩니다.
실제 상용 3D엔진의 클래스 스펙을 보았는데(한개-_-;) 이 책의 클래스들이 비교적 잘 구현되어 있다는것을 알게되었습니다. 즉, 아직 D3D의 혹은 3D 프로그램의 전형적인 예제들에 익숙한 분들이라면 이 코드를 보면서 게임 프로그래밍은 어떻게 하는지 어느정도 힌트 혹은 방향을 알 수 있게됩니다.
 
그럼 이제 어떤 방향들이 있는지 살펴보겠습니다.
 
이 책에서는 Core라이브러리라는 이름으로 몇가지 클래스들과 스트럭쳐들을 제공합니다.
살펴보면 비교적 이해하기 쉽게 되어있고 D3D등에 어느정도 익숙하고 윈도우 프로그래밍에 익숙한 분들이라면 크게 어렵진 않을것입니다.
단, Core_Graphics라는 파일의 클래스들은 만만하지 않습니다. 일단 D3D에서 지원해주는 X파일을 사용하는 클래스이기에 맥스같은 3D툴에서 작업한 코드들을 파싱해서 로딩하는 3D 로더 코드 부분은 없습니다. 그냥 X파일을 읽어들여서 그 데이타에서 주욱~ 필요한 작업을 하게됩니다.
(책 내용중에 X파일 구조등에대해 알고싶으면 다른 책을 하나 추천했었습니다.)
 
하지만, MAX파일의 경우 D3D와 좌표계가 다르고 이를 해결하려면 X파일 익스포터 소스를 수정해야 되는것으로 알고있습니다. (혹 다른 방법이 있다면 comment 부탁드립니다. ^^ 그냥 코드상에서 읽어서 바꿔봤는데 잘 안되더라구요..)
자자.. 그럼 Graphics코어 부분은 어렵다는것을 알았습니다. 이를 견뎌내실려면 마음 단단히 먹고 덤벼들어야 합니다. 그리고 책도 꼼꼼히 읽어보시기 바랍니다.
(2판은 아직 번역서가 없는 관계로 1판을 참고하면서 보셔도 좋습니다. 실제 1판을 보셨던 분들은 2판을 안봐도 될정도라고 말하시지만... 그래도 전 2판이 나왔고, 1판을 못본 분들이라면 2판을 권해드립니다. -_-; 책장사?모드;;? )
 
그리고 본 책에서는 게임 프레임을 사용함니다.
기본적인 대부분의 3D 책들이 모두 Render같은 무한루프를 사용합니다. 여기서는 그런 무한루프를 바꿔치기하면서 게임을 구성하는 프레임간의 전환을 하게됩니다.
예를들면 게임 첫 시작화면의 메뉴구성 프레임과 게임 시작을 누르면 게임을 처리하는 게임 프레임 그리고, 게이머의 상태를 표시해주는 상태 프레임... 등등 프레임간 전환하는 기법을 볼 수 있습니다. 더이상 단순한 구조의 게임이 아니라 다양한 내용을 담는 게임을 만들수 있습니다.
정말 멋지지않습니까? (모두들 그런건 진작 쓰고 있었다구요? -_-;)
 
자.. 그럼 다른 장점을 들어보겠습니다.
여기에서는 비록 X파일을 로딩하지만 그 기본 컨셉이 본에니메이션이 되며(물론 스키닝이되는 예제들입니다만 이부분이 핵심은 아닙니다. 그래픽적 요소에 집착하기보다 다른 더 많은 게임프로그래밍 기법들을 시도하고 있으며 독자에게 그를 더 확장하거나 다듬고 싶은 욕구를 길러줍니다.)
에니메이션들을 분리해서 처리하고 있습니다. 스스로 로더를 만들며 책의 소스에서 X파일만 걷어내고 자신의 로더를 붙이면? 이 또한 멋진 작품을 만들 수 있습니다.

즉, 에니메이션을 여러게 보유하는 로더의 체계화되어있는 코드를 접하게 됩니다.
이 소스를 보기전에 혼자 ASE 메시로더 정도를 구현해서 어설픈 팽귄을 만들어 띄우고 북극탐험이라는 게임을 만들어봤습니다. 그 때 항상 메시와 에니메이션을 어떻게하는게 좋을까 고민했었는데 이 책에서는 그에 관련된 방향이 분명히 나와있었습니다.
(이런것도 당연히 잘 처리하고 있다구요?)
 
자자.; 그럼 다음 장점으로 넘어가겠습니다.
이는 아주 중요하다기 보다는 게임을 만드는 분들이라면 모두들 구현하고 있겠지만 이제 게임을 만들어봐야지 하는 분들이라면 이만큼 체계적이지는 않을것입니다.
바로 인풋과 사운드 부분입니다. 2판에서는 DirectX를 이용한 MP3출력도 클래스 코드에 포함되어서 사운드 부분은 Wav, MIDI, Mp3라는 막강한 음원을 게임에 추가할 수 있습니다.
즉, 이런 쓸만한 클래스들이 책의 뼈대를 이룬다는 말입니다. ^^
 
자자. 그럼 다음 장점으로 가겠습니다.
지금까지는 실무를 하는 프로그래머들이 보기에 그다지 흥미꺼리가 되지 않습니다.
이미 다 초반에 대부분 경험들 하셨을테니.. ^^
하지만 여기에서 보여주는 간단하지만 초보들에게는 스크립트를 경험할 수 있는 좋은 코드가 있습니다. 결코 막강하다고는 할 수 없지만, 스크립트의 두가지? 방식중에 한가지 방식을 잘 표현해주고 있습니다. 즉, 게임속에 들어가는 게임흐름 컨트롤이나 게임 속의 대사들이 게임 밖에서 손델수 있게되는 것입니다. 게임프로그래밍젬스 같은곳에도 스크립트를 사용하라고 했고, 게임회사에 있었을때도 프로그래밍 하시는 분이 스크립트 시스템이야기를 했었던것이 생각나기도합니다.
문란?한 스크립트 시스템이 자칫 기획자에게 필요이상의 업무를 부과할 수 있지만 스크립트 시스템은 게임프로그래밍을 하는데 기본적으로 사용하게됩니다. 이 책에 그 스크립트 프로그래밍이 있습니다. 또한 4~5개의 스크립트 에디팅툴도 있습니다.
완전하다고 할 수는 없겠지만 분명 많은 도움이 될것입니다.
 
자.. 너무길면 지루하기에 슬슬 마무리 짓겠습니다.
본 책은 이렇듯 게임프로그래밍에 많은 도움을 주는 비교적 완성된 예제를 담고있습니다.
또한 DirectPlay에 대한 클래스와 그를 이용한 맵에서 캐릭터를 추가하여 여러명이 맵을 탐험하는 코드가 있습니다. 게임 서버프로그래밍에서 플레이어들간의 시간지연 처리등에대한 내용등 읽어볼만한 글들이 있습니다.
 
이 책을 보면서 많은것을 얻었지만, 이 책의 마지막 부분은 이 책의 곳곳에 있는 막강한 클래스들을 하나로 묶어주는 RPG 게임이 들어있습니다. 비록 간단하지만 시나리오가 있고 스크립트 시스템에 의해서 제어되며 은은한 사운드가 첨가되어있는 게임입니다.
중간 보스와 마지막 보스까지 있습니다.
그런 RPG적 게임의 전체적 구성을 최대한 간단하게 구성한 전체코드가 들어있습니다.
아쉬운점은 2판에서 DirectX 9.0을 지원하지만 DirectX의 잦은 업데이트 때문에 다소 코드가 달라져있는 부분이 있습니다. 그래서 더더욱 D3D의 기초를 분명히 다진 분들이 보셔야합니다.
 
RPG 게임 프로그래밍을 혹은 위에서 설명한 기법들이 필요하거나 궁굼한데 잘모르는 분들에게는 정말 단비와같은 책이라 생각됩니다. 제게도 그런 책이었습니다.
다만 2판은 번역서가 없습니다. 1판을 기준으로 미뤄본다면 2005년중에 나올것 같지만 아직은 없는것 같습니다.
원서를 보는것도 습관이 되는것이 좋으니 도전해 보는것도 좋을것 같습니다. 혹 안되면 1판이라도 좋습니다. 번역서인데다가 옛날코드이지만 그 원리는 거의 동일하게 다 있습니다.
 
다시한번 강조하지만, DirectX SDK에 완전히 초보이신 분들이 보시기에는 힘듭니다. 반드시 1~2권정도의 책들을 중심으로 D3D의 기본을 확실히 하시고 익숙해 지신다음 보시길 권장해 드립니다.
또한 9.0이지만 최신 DirectX 9.0버전에는 맞지 않습니다. 정~ 안되면 책에서 제공하는 9.0 버전으로 공부하시기바랍니다. 그럼 컴파일에 문제는 없습니다. ^^
 
이상, 게임을 만들고 싶지만 어느정도 체계성을 가지고 싶으신 분들을 위해 도움이 될만한 책 하나를 발견해서 글을 올려보았습니다.

 
코멘트 0   공감 0
코멘트작성
 
이메일주소수집거부