출판사 제공 책 소개

이 책은 게임 엔진 소프트웨어 개발에 관한 이론과 실무 활용을 동시에 다루면서 다양한 주제를 상세히 설명한다. 책에 나오는 개념과 기법은 일렉트로닉 아츠와 너티 독 등의 개임 개발 스튜디오의 현장에서 실제로 사용되는 것들이다. 사용 예제들은 대부분 구체적인 기술에 근거하지만, 그에 대한 논의는 특정 엔진이나 API에 국한되지 않는다. 또한 수많은 참고 자료와 인용을 통해 게임 개발의 특정 분야를 더 공부하고 싶은 독자들의 길잡이가 되도록 했다. 대학 수준의 게임 프로그래밍 교재로 쓰였지만, 아마추어 소프트웨어 엔지니어나 게임에 흥미가 있는 사람, 독학하는 게임 프로그래머, 현업 게임업계 종사자도 도움을 얻을 수 있다. 게임 개발을 시작한 지 얼마 안 되는 엔지니어는 이 책을 통해 게임 개발 기술들과 엔진 아키텍처에 대한 탄탄한 이해를 얻을 수 있고, 게임 개발의 특정 분야에서 잔뼈가 굵은 개발자들도 이 책을 읽음으로써 큰 그림을 이해할 수 있다. ★ 이 책에서 다루는 내용 ★ ■ 게임에 사용되는 대규모 C++ 소프트웨어 아키텍처 ■ 게임 프로그래밍에 쓰이는 수학 ■ 게임 개발에 쓰이는 디버깅, 소스 컨트롤, 프로파일링 도구 ■ 기반 시스템 및 렌더링, 충돌, 물리, 캐릭터 애니메이션, 게임 월드 객체 모델 등 여러 엔진 하부 시스템 ■ 멀티플랫폼 게임 엔진 ■ 멀티프로세서 환경에서의 게임 프로그래밍 ■ 툴 파이프라인과 게임 자원 데이터베이스 ★ 추천의 글 ★ 비디오 게임은 원래 하드웨어로만 만들던 것이 시초지만, 마이크로프로세서 기술이 발전하면서 그 양상이 완전히 뒤바뀌었다. 오늘날 비디오 게임은 PC나 전용 게임 콘솔로 구동하며, 그 위에서 돌아가는 소프트웨어를 통해 엄청나게 다양한 경험을 제공한다. 초창기 원시적 형태의 게임이 나온 지 벌써 50년이나 흘렀지만 많은 사람은 아직 게임 산업이 미성숙 단계에 있다고 생각한다. 아직 만개한 산업은 아닐지라도 그 속을 들여다보면 게임 산업은 급속도로 발전 중이라는 것을 금방 알 수 있다. 오늘날의 비디오 게임은 다양한 계층의 사람들이 즐기는 수십억 달러 규모의 산업이 되었다. 비디오 게임은 그 형태도 다양하고 규모도 천차만별인데, 솔리테어(solitare)부터 MMO RPG까지 수많은 범주 혹은 '장르'가 있으며 마이크로칩이 달린 기계면 어디에서건 게임을 즐길 수 있다고 해도 과언이 아니다. 오늘날에는 PC부터 스마트폰, 전용 게임 콘솔(휴대용과 TV에 연결해 사용하는 기기 모두)까지 다양한 방식으로 게임을 즐길 수 있다. 가정용 전용 게임 콘솔은 최신 게임 기술을 대표하는 역할을 맡아 왔고, 이런 콘솔 기기들이 개발되는 반복된 주기를 콘솔의 '세대'라고 부르게 됐다. 가장 최근 콘솔 세대를 대표하는 기기로는 마이크로소프트의 엑스박스 360과 소니의 플레이스테이션 3를 들지만, 유구한 역사를 자랑하는 PC 또한 결코 간과해서는 안 되는 존재이며 선풍적인 인기를 끈 닌텐도 Wii도 새로운 경향이 등장했음을 나타내는 존재다. 그렇지 않아도 복잡한 상용 비디오 게임계에 최근 폭발적으로 증가한 다운로드 게임 및 캐주얼 게임이 더해져 더욱 다양해졌다. 하지만 대규모 게임들은 여전히 주요한 품목이다. 정교한 플랫폼들의 막강한 계산 능력을 활용할 수 있게 되면서 요즘에는 소프트웨어의 정교함도 크게 향상됐다. 이런 첨단 소프트웨어를 개발하는 데는 사람이 필요하고, 따라서 자연스럽게 개발 팀의 크기도 커지게 됐다(당연히 개발비도 증가했다). 산업이 완숙해 가면서 자연스레 제품을 더 잘 만들고 효율적으로 만들 방법을 찾게 되는데, 엄청나게 증가한 복잡도에 대처하기 위해 게임 개발 팀들은 재사용 소프트웨어나 미들웨어 등의 힘을 빌리는 쪽을 택했다. 헤아릴 수 없이 다양한 스타일의 게임이 여러 플랫폼들에서 존재하기 때문에 모든 상황에서 이상적으로 쓸 수 있는 개발 소프트웨어는 없다. 하지만 일부 패턴이 발전해 왔고, 잠재적인 해법들도 무수히 많다. 오늘날에는 원하는 프로젝트의 요구 사항에 맞춰 올바른 해법을 고르는 것이 중요하다. 좀 더 깊이 들어가면 개발 팀은 프로젝트의 서로 다른 모든 측면을 검토하고 어떻게 함께 어우러지는지 따져봐야 한다. 새 게임 디자인에 완벽하게 꼭 맞는 단 한 가지 소프트웨어 패키지를 찾기란 굉장히 어렵다. 지금이야 게임 산업의 베테랑이 됐지만 예전 우리들의 모습은 미지의 영토를 개척하는 탐험가 같았다. 우리 세대에는 컴퓨터 과학 학위를 갖고 있던 사람이 드물었는데(이 추천의 글을 쓰는 맷 화이팅은 항공 엔지니어링을 전공했고, 제이슨 그레고리는 시스템 디자인 공학을 전공했다), 요즘에는 비디오 게임 강좌를 개설하거나 학위를 마련하는 대학이 늘고 있다. 오늘날의 학생들과 개발자들은 게임 개발에 대해 견실한 정보를 얻을 곳이 필요하다. 순수 하이엔드 그래픽스에 관해서는 연구 결과부터 실용적인 지식까지 정보를 얻을 만한 곳이 많다. 하지만 이런 원천 정보들은 게임 개발에 직접 적용하기 힘들거나 실제 쓰일 만한 구현이 없는 경우가 허다하다. 그 외의 게임 개발에 대해서는 소위 입문자용 책들이 있기는 하지만, 이것들은 세부 사항에 대해서는 얼버무리기 일쑤고 마치 모든 것을 처음부터 자기들이 처음 만든 양 설쳐대지만 정작 별 쓸모없거나 아예 틀린 내용도 많다. 그 외에는 하이엔드 전문 분야에 관한 책들이 있는데, 물리, 충돌, AI 등 특정 세부 분야를 파고든다. 하지만 지나치게 지루한 경우가 많고 또 모든 독자들이 이해할 만큼 쉽지 않거나 전체적인 완성을 이루기에는 너무 지엽적인 경우도 많다. 상당수는 한정적인 기술에 너무 직접적으로 기대고 있어 하드웨어와 소프트웨어가 변함에 따라 금방 퇴물이 되곤 한다. 인터넷도 빼 놓을 수 없는 정보원으로, 지식 수집에 있어 훌륭한 보조 도구가 될 수 있다. 하지만 링크가 깨져 찾을 수 없는 경우도 많고 부정확한 데이터들이나 품질이 뒤죽박죽인(때로는 형편없는) 경우도 많아 찾고 싶은 게 뭔지 정확히 알고 있지 않으면 도움이 되기 힘들다. 이런 상황을 배경으로 제이슨 그레고리(Jason Gregory)가 등장한다. 제이슨은 너티 독(Naughty Dog, 전 세계에서 손꼽히는 게임 스튜디오 중 하나다)에서 근무 중인 베테랑 게임 개발자다. USC에서 게임 프로그래밍 강의를 할 때 비디오 게임 아키텍처의 근간을 다룬 교과서가 없어 어려움을 겪은 제이슨은 직접 총대를 메고 책을 쓸 결심을 했다. 제이슨 본인을 제외한 나머지 모두에게 정말 다행스런 일이라 하지 않을 수 없다. 마침내 여기에 제이슨의 노력이 담긴 책이 나왔는데, 실제 출시된 게임 프로젝트들에서 쓰였고 실무에 바로 적용할 수 있는 지식들을 한데 모아 전체적인 게임 개발의 큰 그림을 그릴 수 있게 했다. 풍부한 경험을 바탕으로 아이디어와 기법뿐 아니라 실제 코드 샘플과 구현 예시를 들어 어떻게 조각들이 합쳐져 진짜 게임을 만드는지 보여준다. 또한 참고 자료와 인용을 통해 특정 과정에 대해 더 심도 있는 공부를 원하는 독자들이 쉽게 정보를 얻을 수 있게 했다. 개념과 기법들은 실제로 게임을 만드는 데 사용되는 것들이며, 예제들은 해당 기법에 기반을 두기는 했지만 특정한 엔진이나 API를 넘어서 활용될 수 있는 것들이다. 우리가 처음 일을 시작했을 때 원했던 것이 바로 이런 책이었으며, 지금 시작하는 초보자뿐 아니라 큰 그림을 그리고 싶은 경험자들에게 똑같이 도움이 될 수 있으리라 생각한다. - 제프 랜더(Jeff Lander), 매튜 화이팅(Matthew Whiting) ★ 저자 서문 ★ 게임 엔진 아키텍처를 향한 여정을 시작한 여러분을 환영한다. 이 책에서 이루고자 하는 목표는 통상적으로 상용 게임 엔진을 이루는 모든 구성 요소를 두루 살펴보는 것이다. 게임 프로그래밍은 굉장히 방대한 주제이므로