Top

[게임 개발 원리에서 기획, 그래픽, 프로그래밍까지]
유니티로 만드는 게임 개발 총론

  • 원서명Holistic Game Development with Unity (ISBN 9780240819334)
  • 지은이페니 드 빌
  • 옮긴이박기성
  • ISBN : 9788960774551
  • 40,000원
  • 2013년 07월 31일 펴냄
  • 페이퍼백 | 516쪽 | 188*250mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개



유니티는 프로그래머뿐만 아니라 기획자와 그래픽 디자이너에게도 자신의 상상력을 실현시킬 수 있는 가능성을 제공함으로써 게임 개발의 새로운 장을 열고 있다. 이 책은 얕은 깊이의 단순한 기능적 설명에 그치지 않고, 게임 개발의 근본 원리부터 설명한 다음, 치밀하게 준비된 단계별 실습을 통해 게임 개발 원리를 유니티에서 직접 경험해 보게 해줌으로써, 강력한 게임 개발 도구로서 유니티에 자연스럽게 빠져들게 만드는 책이다. 2011년 유니티 본사에서 시상한 유니티 모바일 세대 위대한 교육상 수상자인 페니 드 빌 박사의 회심의 역작이다.

페니 드 빌 박사는 유니티를 중심으로 광범위한 맥락을 다루는 종합적인 게임 개발 방법을 소개함으로써, 게임을 처음 만들어보는 독자들에게도 쉽게 다가간다.
- 에단 보스보그(Ethan Vosburgh) / 유니티 테크놀로지스 테크니컬 아티스트


[ 이 책에서 다루는 내용 ]

■ 게임 아트와 프로그래밍 과제를 모두 해결해야 하는 개인 개발자와 소규모 팀을 위한 원스톱 해결서
■ 유니티에서 아트 애셋으로 차례차례 따라 하며 게임 전체를 디자인하고 구성하는 방법 학습
■ 기본적인 2D와 3D 관련 수학과 물리 개념 설명
■ 마음껏 사용할 수 있는 무료 게임 메커니즘 모음
■ 프로젝트 소스 코드, 안내 동영상, 아트 애셋 등의 수업 자료를 제공하고, 질의응답을 통한 심층적인 학습을 돕는 웹사이트 제공(www.holistic3d.com)


[ 이 책의 대상 독자 ]

게임 개발을 배우고 싶어 하는 아티스트와 게임 아트를 제대로 활용하고 싶어 하는 프로그래머를 염두에 두고 집필한 책으로서, 디자인을 염두에 두고 프로그래밍을 가르친다는 독특한 접근법을 취한다. 예를 들어 프로그래밍 입장에서 게임의 그래픽 사용자 인터페이스(GUI)를 만든다는 것은, 보기 좋은 인터페이스를 만드는 것과는 전혀 다른 개념이다. 디자인이 프로그래밍과 어떤 영향을 주고 받는지 이해하면 게임 개발의 양면성을 게임 제작에 논리적으로 적용할 수 있다.

[ 이 책의 구성 ]

이 책은 전체적으로 게임 안에 존재하는 역학적인 기능을 다룬다.

1장, 프로그래밍 메커니즘의 예술: 게임 제작에 있어 아트와 프로그래밍의 역할을 설명하며, 어느 한쪽이 간과될 때의 한계점에 대해 살펴본다. 디지털 예술과 프로그래밍의 보완적 특성도 함께 본다.

2장, 실세계 메커니즘: 운동 연구를 다루는 물리학 분야를 살펴본다. 운동은 모든 과학의 근본이 되는 개념으로, 컴퓨터 화면을 가상 세계로 탈바꿈시킨다. 2장에서는 운동과 역학을 설명하는 운동학을 살펴보고 컴퓨터 게임에서 운동의 의미를 어떻게 활용하는지 알아본다. 또한 실세계의 물리적 속성을 소개하고, 어떤 게임 환경에서든 수학과 물리학, 디자인 원칙을 이해해야 한다고 강조한다. 기술, 수학, 프로그래밍 코드와 함께 소개하는 구성과 애니메이션 원칙, 디자인 원리는 캐릭터와 카메라, 환경 및 기타 게임오브젝트의 움직임을 규정한다.

3장, 애니메이션 메커니즘: 2D와 3D 애니메이션 모델의 기술적 특성을 살펴본다. 게임 환경 내에서 코드를 사용해 자신이 만든 아트워크와 모델, 다운로드 받은 애셋을 제어하는 방법과 관련 기술들을 배운다. 기초 수학, 물리학, 프로그래밍 개념을 통해 키프레임의 개념과 애니메이션 상태, 역학적인 캐릭터 움직임, 스프라이트 애니메이션을 소개한다.

4장, 게임 규칙과 메커니즘: 매칭, 분류, 탐색, 타격과 같이 널리 쓰이는 범용 게임 메커니즘을 소개한다. 이런 메커니즘들이 게임 내에서 시각적으로 표시되는 방법을 보여주는 예제와 이런 메커니즘들을 제어하는 프로그램에 대해 상세히 설명한다. 각 메커니즘에 활용되는 일반적인 알고리즘과 데이터 구조는 필요에 따라 주요 아트 애셋과 함께 단계적으로 제시한다.

5장, 캐릭터 메커니즘: 실감나는 NPC 캐릭터를 직접 제작하기 위한 간단한 인공지능 알고리즘을 소개한다. 새떼에서부터 플레이어를 쫓으면서 플레이어와 상호 작용하는 적에 이르기까지, 캐릭터의 동작을 제어하기 위해 3장에서 다뤘던 애니메이션 상태와 기법이 게임 특유의 데이터 구조 및 알고리즘과 통합된다.

6장, 플레이어 메커니즘: 그래픽 사용자 인터페이스를 개발하고 플레이어 상태를 유지하기 위해 활용되는 코드와 아트워크를 소개한다. 인벤토리 시스템, 헤드업 디스플레이, 캐릭터와 환경의 상호 작용 개발을 다룬다.

7장, 환경 메커니즘: 게임 환경 개발 및 최적화의 기본 개념을 소개한다. 환경에 실감나게 표현하기 위한 묘사 방법부터 대규모 맵과 날씨 시뮬레이션을 다루는 요령까지 다양한 기법을 다룬다.

8장, 외부 연결 메커니즘: 수많은 새로운 입력 기기, 소설 데이터와 GPS 장치, 모션 센서, 증강 현실, 화면 크기를 고려한 게임 개발 관련 주제를 다룬다. 그리고 유니티를 활용해서 터치 스크린, 가속도계, 네트워크를 활용한 게임을 안드로이드, 아이폰이나 아이패드 모바일 기기로 배포하는 방법도 배운다.

[ 상세 이미지 ]

저자/역자 소개

[ 저자 서문 ]

게임 디자이너, 아티스트, 프로그래머를 타깃으로 한 기존의 책들이 하나같이 디자인이나 그래픽, 프로그래밍 등 한 분야에만 초점을 맞추고 있는 것을 보면서 나는 이 책을 쓰기로 마음을 먹었다. 예술적 재능이 풍부하고 게임에 대한 아이디어를 가진 친구들에게 프로그래밍을 가르쳐주는 책은 찾기 어려웠다. 반면 프로그래밍 교재는 무미건조하고 시각적 측면을 무시하기 일쑤였다.

최근 게임 개발 업계는 대규모 개발 팀 위주로 움직이던 과거 경향과는 달리 적은 인원으로 여러 기능을 수행하는 소규모 팀이 점점 많아지고 있다. 이처럼 가내수공업 규모로 움직이는 개발 구조로의 급속한 변화에 따라, 게임 아트 디자인과 프로그래밍 재능을 겸비한 인재들의 필요성이 더욱더 중요해졌다.

게임 개발 도구들도 발전을 거듭해, 이제 유니티 같은 속성 개발 엔진을 사용해 초보자도 처음부터 끝까지 자신만의 게임을 만들 수 있게 됐다.

이 책은 프로그래밍을 하고 싶어 하는 그래픽 아티스트와 게임 아트를 잘 활용하고 싶은 게임 프로그래머를 독자 대상으로 하여 기획하고 집필됐다. 처음에는 그래픽 아티스트만을 타깃으로 한 책이었지만, 이런 내용이 게임 프로그래밍을 배우고 싶어 하는 사람들에게도 의미가 있겠다고 생각했기 때문이다.

나에게 게임 개발이란, 프로그래밍이라는 지각판과 예술이라는 지각판이 융합되는 접점이다. 게임 개발은 양쪽 영역이 진정으로 빛을 발할 수 있는 분야다. 여러분도 이 책을 읽으면서 나와 같은 기분을 느낄 수 있기를 바란다.


[ 저자 소개 ]

페니 드 빌(Penny De Byl)
호주 본드대학교(Bond University) 인문사회과학부 교수다. 20년 가까이 유수 대학에서 컴퓨터 공학과 컴퓨터 그래픽, 게임 개발을 가르쳐 왔다. 지금까지 컴퓨터 게임용 인공지능 프로그래밍에 대한 책 두 권을 썼고, 2011년에는 유니티 테크놀로지스의 ‘유니티 모바일 세대의 위대한 교육자 상(Unity Mobile Generation Great Education Giveaway)’을 수상했다.


[ 옮긴이의 말 ]

이 책은 지금껏 접한 프로그래밍 서적 중에서도 좋은 의미로 상당히 독특한 책이었다. 프로그래밍 서적은 현업 프로그래머가 저술하는 경우가 많지만, 이 책의 저자는 오랫동안 대학에서 게임 개발을 가르쳐 온 교수다. 그리고 서문에서 저자가 밝힌 것처럼, 이 책은 프로그래머뿐만 아니라 게임 기획자, 그래픽 디자이너까지 감안하여 집필되었다. 그런 이유로 이 책은 그간 국내에 출간된 유니티3D 책과는 근본적으로 다르다.

이 책의 중심은 사실상 유니티3D 자체가 아닌 '게임 개발'이다. 좋은 게임을 개발하기 위해서 무엇이 필요한지, 이를 위해 유니티3D를 어떻게 활용할 수 있는지, 유니티3D가 그런 상위 목적을 달성하는 데 얼마나 유용한지에 초점이 맞춰져 있다. 유니티3D의 세부적인 기능이나, 프로그래밍 코드에만 초점을 맞추지 않고 '게임 개발 도구로서의 유니티3D’라는 전체적 관점에 초점을 맞추고 있는 것이다. 또한 게임 개발의 도구로서 유니티3D는 프로그래머만의 전유물이 아니라, 기획자나 그래픽 디자이너들도 활용할 수 있는 강력한 도구라는 점을 강조한다.

그러다 보니 게임 개발의 기본 원리를 설명하는 데 많은 지면을 할애한다. 다시 말해 즉석에서 써먹을 수 있는 조리법이 아니라, 그 조리법이 필요한 이유 같은 근본적인 원리까지 설명하는 책이다. 오랫동안 강단에서 게임 개발의 근본 원리를 가르쳐 왔던 저자의 특징이 드러나는 부분이다.

결과적으로 프로그래밍 코드의 기술적인 부분이나 유니티 자체의 기능에 대해서는 상세하게 설명하지 않는다. 따라서 프로그래밍 중심의 상세한 기술 설명이나 유니티에 대한 상세한 설명을 원하는 프로그래머에게는 다소 맞지 않을 수도 있다. 게임 개발에는 프로그래밍 같은 공학적 측면뿐만 아니라 기획이나 그래픽 아트 같은 예술적 측면도 매우 중요하며, 그런 예술 분야 인재들이 유니티3D라는 강력한 도구를 활용해 자신의 상상력을 실현하는 데 도움을 주자는 것이 이 책의 주요 집필 동기 중 하나이기 때문이다. 프로그래머들에게도 기존의 기능적이고 깊이가 얕은 유니티3D 서적들에서 부족했던 부분을 보완해 줄 수 있는 좋은 책이라고 생각한다.

교수가 쓴 책이라서 이론적인 면에만 치우쳐 있냐 하면 그렇지도 않다. 이론 뒤에는 항상 해당 이론을 유니티3D에서 실험해 볼 수 있는 실습 과제들이 잘 준비되어 있다.

이렇게 이론과 실습이 물 흐르듯이 너무나 자연스럽게 연결되어 있기 때문에, 프로그래밍이 주업인 현업 개발자가 용돈벌이를 위해 급히 쓴 책이 아니라 저자가 오랜 교수 경험을 바탕으로 꼼꼼히 준비한 책임을 알 수 있다.

번역을 하다 보니 저자가 매우 뛰어난 교육자라는 느낌이 들었는데 아니나 다를까, 저자는 2011년 모바일 게임 디자인에 관련해 유니티 본사에서 주최한 전세계 커리큘럼 디자인 경연에서 수상한 바가 있어서 고개가 끄덕여졌다(유니티 본사에서는 전세계의 우수한 유니티 교육 커리큘럼에 대해 매년 상을 수여하고 있다).
국내 저자들이 쓴 책을 비롯해 유니티를 다룬 좋은 책들이 속속 출간되고 있지만, 현업 개발자의 입장에서 볼 때 현재까지 출간된 유니티3D 책 중에서도 가장 독특하고 뛰어난 책이다. 특히 유니티3D를 활용해서 그동안 프로그래머의 전유물이었던 게임 구현의 최종 단계에 도전해보고 싶은 기획자나 그래픽 디자이너들에게 강력 추천하는 바이다.


[ 옮긴이 소개 ]

박기성
게임 개발을 중심으로 IT업계에 20년째 근무하고 있고, 최근에는 다수의 스마트폰 게임 개발 프로젝트를 진행하고 있다. 전문 분야나 관심 분야의 책을 번역하기도 하며, 역서로는 에이콘 출판사의 『Gamification & 소셜게임』(2011년), 『두 얼굴의 구글』(2012년), 『코코스2d 게임 프로그래밍』(2012년)이 있다. 첫째 아들 지유와 함께 시간을 보낼 때 가장 즐겁다.

목차

목차
  • 1장 프로그래밍 메커니즘의 예술
    • 1.1 들어가며
    • 1.2 우뇌 프로그래밍
    • 1.3 좌뇌에서 시작되는 아트 작업
      • 1.3.1 점
      • 1.3.2 선
      • 1.3.3 형태
      • 1.3.4 방향
      • 1.3.5 크기
      • 1.3.6 텍스처
      • 1.3.7 색상
    • 1.4 게임 엔진의 동작
      • 1.4.1 범용 게임 엔진
      • 1.4.2 메인 루프
    • 1.5 스크립트 기초
      • 1.5.1 논리
      • 1.5.2 주석
      • 1.5.3 함수
      • 1.5.4 변수
      • 1.5.5 연산자
      • 1.5.6 조건문
      • 1.5.7 배열
      • 1.5.8 오브젝트
    • 1.6 게임 아트 애셋 입문
      • 1.6.1 2제곱 규칙
      • 1.6.2 다른 사람들이 만든 아트 애셋 활용
    • 1.7 요약
  • 2장 실세계 메커니즘
    • 2.1 들어가며
    • 2.2 벡터의 원리
    • 2.3 2D와 3D 공간의 정의
      • 2.3.1 카메라
      • 2.3.2 로컬과 월드 좌표계
      • 2.3.3 이동과 회전, 스케일링
      • 2.3.4 폴리곤과 노멀
    • 2.4 3D 게임 엔진에서의 2차원 게임
      • 2.4.1 사원수
    • 2.5 물리학 법칙
      • 2.5.1 중력의 법칙
      • 2.5.2 운동 제1법칙
      • 2.5.3 운동 제2법칙
      • 2.5.4 운동 제3법칙
    • 2.6 물리학과 애니메이션 원리
      • 2.6.1 찌그러짐과 늘어남
    • 2.7 게임 공간 최적화를 위한 2D와 3D 기법
      • 2.7.1 폴리곤 줄이기
      • 2.7.2 카메라 뷰 볼륨
      • 2.7.3 안개
      • 2.7.4 텍스처
      • 2.7.5 빌보드
    • 2.8 요약
  • 3장 애니메이션 메커니즘
    • 3.1 들어가며
    • 3.2 스프라이트
    • 3.3 텍스처 아틀라스
    • 3.4 애니메이션이 들어간 스프라이트
    • 3.5 베이킹된 3D 애니메이션
    • 3.6 생체 역학
    • 3.7 애니메이션 관리
      • 3.7.1 단일 2D 스프라이트 액션
      • 3.7.2 단일 파일의 3D 애니메이션
      • 3.7.3 블렌딩
    • 3.8 2차 애니메이션
    • 3.9 요약
  • 4장 게임 규칙과 메커니즘
    • 4.1 들어가며
    • 4.2 게임 메커니즘
    • 4.3 주요 메커니즘
      • 4.3.1 탐색
      • 4.3.2 매칭
      • 4.3.3 분류
      • 4.3.4 운
      • 4.3.5 혼합
      • 4.3.6 타이밍
      • 4.3.7 진척
      • 4.3.8 포획
      • 4.3.9 정복
      • 4.3.10 회피
      • 4.3.11 수집
    • 4.4 간단한 게임 메커니즘 개발
      • 4.4.1 매칭과 분류
      • 4.4.2 발사, 타격, 튀기, 쌓기
      • 4.4.3 경주
      • 4.4.4 회피와 수집
      • 4.4.5 탐색
    • 4.5 보상과 벌칙
    • 4.6 요약
  • 5장 캐릭터 메커니즘
    • 5.1 들어가며
    • 5.2 가시선
    • 5.3 그래프 이론
    • 5.4 경유지
      • 5.4.1 경유지 탐색
    • 5.5 유한 상태 기계
    • 5.6 군집
    • 5.7 결정 트리
    • 5.8 퍼지 로직
    • 5.9 유전자 알고리즘
    • 5.10 셀룰러 오토마타
    • 5.11 요약
  • 6장 플레이어 메커니즘
    • 6.1 들어가며
    • 6.2 게임 구조
    • 6.3 게임 인터페이스 디자인 원리
      • 6.3.1 사용자 분석
      • 6.3.2 은유
      • 6.3.3 기능 노출
      • 6.3.4 일관성
      • 6.3.5 상태 시각화
      • 6.3.6 단축키
      • 6.3.7 레이아웃
      • 6.3.8 초점
      • 6.3.9 도움말
    • 6.4 인벤토리
    • 6.5 순간이동
      • 6.5.1 묵시적 순간이동
      • 6.5.2 명시적 순간이동
    • 6.6 요약
  • 7장 환경 메커니즘
    • 7.1 들어가며
    • 7.2 맵 디자인 기초
      • 7.2.1 강조점을 제공하라
      • 7.2.2 플레이어의 이동을 인도하고 제한하라
      • 7.2.3 비례
      • 7.2.4 디테일
      • 7.2.5 맵 레이아웃
      • 7.2.6 기타 고려사항
    • 7.3 지형
      • 7.3.1 지형 그리기
      • 7.3.2 절차적 지형
      • 7.3.3 절차적 도시
      • 7.3.4 무한 지형
    • 7.4 카메라 기법
      • 7.4.1 심도
      • 7.4.2 블러
      • 7.4.3 그레이스케일
      • 7.4.4 모션 블러
      • 7.4.5 세피아 톤
      • 7.4.6 트윌
      • 7.4.7 블룸
      • 7.4.8 플레어
      • 7.4.9 색 보정
      • 7.4.10 외곽선 검출
      • 7.4.11 크리스
      • 7.4.12 어안
      • 7.4.13 선 샤프트
      • 7.4.14 비네트
      • 7.4.15 화면 공간 SSAO
    • 7.5 하늘
      • 7.5.1 스카이박스
      • 7.5.2 스카이 돔
      • 7.5.3 구름
    • 7.6 날씨
      • 7.6.1 바람
      • 7.6.2 강수
    • 7.7 파티클
    • 7.8 요약
  • 8장 외부 연결 메커니즘
    • 8.1 들어가며
    • 8.2 모바일 기기에서 실행하기
    • 8.3 햅틱과 외부 모션 통합하기
    • 8.4 모바일 하드웨어 기능 활용하기
      • 8.4.1 가속도계
      • 8.4.2 방향
      • 8.4.3 웹 서비스
      • 8.4.4 위성위치확인시스템 GPS
      • 8.4.5 증강 현실
    • 8.5 소셜 메커니즘
      • 8.5.1 트위터
      • 8.5.2 페이스북
      • 8.5.3 오픈페인트
    • 8.6 플랫폼 배포: 앱스토어, 안드로이드 마켓 및 콘솔
      • 8.6.1 앱스토어와 안드로이드 마켓 게임 출시
      • 8.6.2 콘솔 발매
      • 8.6.3 플레이어가 직접 다운로드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[ p127 리스트 2.7 1행]
var aBullet: GameObject; → var aBullet: GameObject;

[ p131 리스트 2.11 14행 ]
var exp:Game Object → var exp:GameObject

[ p193 10행 ]
사물을 들어올리려면 반ㄷ시 → 사물을 들어올리려면 반드시

2015. 11. 26

[ p51 불 대수 표]

[ p51 불 대수 표]