이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 x
추천의 글 xiii 베타리더 후기 xvi 이 책에 대하여 xix 감사의 글 xxii CHAPTER 1 고도 4 소개 1.1 시작을 위한 조언 2 __1.1.1 효과적인 학습 비결 3 1.2 게임 엔진이란 무엇인가? 4 1.3 고도란 무엇인가? 5 1.4 고도 다운로드 6 __1.4.1 다른 설치 방법 7 1.5 고도 UI 개요 9 __1.5.1 프로젝트 매니저 9 __1.5.2 에디터 창 11 1.6 노드와 씬 14 1.7 고도에서의 스크립팅 15 __1.7.1 GDScript 15 요약 16 CHAPTER 2 코인 대시: 첫 2D 게임 만들기 2.1 기술적 요구 사항 18 2.2 프로젝트 설정 19 2.3 벡터와 2D 좌표계 21 2.4 1단계: 플레이어 씬 22 __2.4.1 씬 생성 23 __2.4.2 스프라이트 애니메이션 24 __2.4.3 콜리전 모양 26 __2.4.4 플레이어 스크립트 작성 28 __2.4.5 플레이어 이동 29 __2.4.6 애니메이션 선택 31 __2.4.7 플레이어의 이동 시작 및 종료 32 __2.4.8 충돌에 대비하기 32 2.5 2단계: 동전 씬 35 __2.5.1 노드 설정 35 __2.5.2 동전 스크립트 36 2.6 3단계: 메인 씬 37 __2.6.1 노드 설정 37 __2.6.2 메인 스크립트 38 __2.6.3 새 게임 시작 39 2.7 4단계: 사용자 인터페이스 41 __2.7.1 노드 설정 41 __2.7.2 메시지 레이블 42 __2.7.3 점수 및 시간 표시 개요 43 __2.7.4 점수 및 시간 표시 구현 43 __2.7.5 GDScript를 통한 UI 업데이트 44 __2.7.6 게임 오버 45 __2.7.7 메인에 HUD 추가 46 2.8 5단계: 마무리 47 __2.8.1 비주얼 이펙트 47 __2.8.2 사운드 49 __2.8.3 파워업 49 __2.8.4 동전 애니메이션 52 __2.8.5 장애물 53 요약 54 CHAPTER 3 스페이스 록: 물리 엔진으로 고전 2D 아케이드 만들기 3.1 기술적 요구 사항 56 3.2 프로젝트 설정 56 __3.2.1 리지드 바디 물리학 58 3.3 플레이어 우주선 60 __3.3.1 바디 및 물리 설정 60 __3.3.2 상태 기계 62 __3.3.3 플레이어 컨트롤 추가 64 __3.3.4 화면 휘감기 66 __3.3.5 사격 68 3.4 바위 추가 71 __3.4.1 씬 설정 71 __3.4.2 다양한 크기의 바위 72 __3.4.3 바위 인스턴스화 73 __3.4.4 폭발하는 바위 76 3.5 UI 제작 80 __3.5.1 레이아웃 81 __3.5.2 UI 스크립트 83 __3.5.3 메인 씬의 UI 코드 84 __3.5.4 플레이어 코드 86 3.6 게임 종료 88 __3.6.1 리지드 바디 사이의 콜리전 감지 89 3.7 게임 일시 정지 90 3.8 적 92 __3.8.1 경로 따라가기 92 __3.8.2 적 씬 94 __3.8.3 적 이동 94 __3.8.4 적 스폰 95 __3.8.5 적 사격 및 충돌 96 3.9 플레이어 보호막 99 3.10 사운드 및 비주얼 이펙트 103 __3.10.1 사운드와 음악 103 __3.10.2 파티클 104 __3.10.3 적의 자취 107 요약 108 CHAPTER 4 정글 점프: 2D 플랫포머의 달리기와 점프 4.1 기술적 요구 사항 110 4.2 프로젝트 설정 110 4.3 키네마틱 바디 소개 112 __4.3.1 콜리전 반응 112 4.4 플레이어 씬 만들기 113 __4.4.1 콜리전 레이어와 마스크 114 __4.4.2 AnimationPlayer에 대해 114 __4.4.3 애니메이션 115 __4.4.4 콜리전 모양 116 __4.4.5 플레이어 씬 마무리 117 __4.4.6 플레이어 상태 117 __4.4.7 플레이어 스크립트 119 __4.4.8 플레이어 이동 120 __4.4.9 플레이어 체력 122 4.5 수집용 아이템 124 __4.5.1 씬 설정 124 __4.5.2 수집용 아이템 스크립트 125 4.6 레벨 디자인 126 __4.6.1 타일맵 사용 127 __4.6.2 첫 번째 레벨 디자인 130 __4.6.3 위험한 오브젝트 추가 132 __4.6.4 배경 스크롤 133 4.7 적 추가 136 __4.7.1 씬 설정 136 __4.7.2 적 스크립트 137 __4.7.3 적에게 피해 주기 138 __4.7.4 플레이어 스크립트 140 4.8 게임 UI 142 __4.8.1 씬 설정 142 __4.8.2 HUD 스크립트 144 __4.8.3 HUD 붙이기 144 4.9 타이틀 화면 145 __4.9.1 씬 설정 145 4.10 메인 씬 설정 147 4.11 레벨 간 전환 149 __4.11.1 Door 씬 149 __4.11.2 화면 설정 150 4.12 마무리 작업 151 __4.12.1 사운드 이펙트 151 __4.12.2 이중 점프 152 __4.12.3 먼지 파티클 153 __4.12.4 사다리 154 __4.12.5 움직이는 플랫폼 157 요약 159 CHAPTER 5 3D 미니골프: 미니골프 코스를 만들며 3D로 뛰어들기 5.1 기술적 요구 사항 162 5.2 3D에 대한 소개 162 __5.2.1 3D 공간에서 방향 지정 162 __5.2.2 고도의 3D 에디터 164 __5.2.3 3D 오브젝트 추가 165 __5.2.4 글로벌 공간과 로컬 공간 166 __5.2.5 변형 166 __5.2.6 메시 167 __5.2.7 카메라 169 5.3 프로젝트 설정 170 5.4 코스 만들기 171 __5.4.1 GridMap 이해하기 172 __5.4.2 첫 번째 홀 그리기 172 __5.4.3 환경과 조명 174 __5.4.4 홀 추가하기 175 5.5 공 만들기 176 __5.5.1 공 테스트 176 __5.5.2 공 콜리전 개선 177 5.6 UI 추가하기 178 __5.6.1 화살표로 겨냥하기 178 __5.6.2 UI 디스플레이 181 5.7 게임 스크립팅 182 __5.7.1 UI 코드 183 __5.7.2 메인 스크립트 184 __5.7.3 공 스크립트 186 __5.7.4 테스트하기 187 __5.7.5 겨냥 개선 옵션 1 188 __5.7.6 겨냥 개선 옵션 2 189 __5.7.7 카메라 개선 191 __5.7.8 전체 코스 디자인 193 5.8 비주얼 이펙트 194 __5.8.1 머티리얼 추가 195 5.9 조명과 환경 198 요약 199 CHAPTER 6 인피니트 플라이어 6.1 기술적 요구 사항 202 6.2 프로젝트 설정 202 __6.2.1 입력 202 6.3 비행기 씬 203 __6.3.1 콜리전 모양 205 __6.3.2 비행기 스크립트 작성 205 6.4 월드 만들기 208 __6.4.1 월드 오브젝트 209 __6.4.2 청크 212 6.5 메인 씬 216 __6.5.1 새 청크 스폰하기 218 __6.5.2 난이도 조절 219 __6.5.3 콜리전 221 __6.5.4 연료와 점수 223 6.6 타이틀 화면 226 6.7 오디오 228 6.8 하이스코어 저장하기 228 __6.8.1 파일 위치에 대해 229 __6.8.2 파일 접근 229 6.9 추가 기능에 대한 제안 230 요약 231 CHAPTER 7 다음 단계와 추가 리소스 7.1 고도 문서 사용하기 234 __7.1.1 API 문서 읽기 235 7.2 버전 관리: 고도에서 깃 사용 236 7.3 고도와 블렌더 병용하기 238 __7.3.1 가져오기 힌트 238 __7.3.2 블렌드 파일 사용하기 239 7.4 프로젝트 내보내기 240 __7.4.1 내보내기 템플릿 241 __7.4.2 내보내기 프리셋 241 __7.4.3 내보내기 242 __7.4.4 특정 플랫폼용으로 내보내기 243 7.5 셰이더 소개 244 __7.5.1 2D 셰이더 만들기 245 __7.5.2 3D 셰이더 250 __7.5.3 추가 학습 253 7.6 고도에서 다른 프로그래밍 언어 사용하기 253 __7.6.1 C# 254 __7.6.2 그 밖의 언어: GDExtension 256 7.7 도움받기: 커뮤니티 리소스 257 __7.7.1 고도 레시피 257 7.8 고도에 기여하기 258 __7.8.1 엔진에 기여 259 __7.8.2 문서 작성 259 __7.8.3 기부 260 요약 260 APPENDIX A 한국어판 부록: 고도 엔진 에디터 메뉴 버튼 설명 A.1 에디터 선택 메뉴 262 A.2 2D 에디터 상단 메뉴 263 A.3 3D 에디터 상단 메뉴와 원근 버튼 266 A.4 플레이 테스트 메뉴바 268 A.5 고도 에디터 활용 참고 문서 269 마치며 271 찾아보기 272 |
Chris Bradfield
강세중의 다른 상품
|
게임 개발자로서는 고도를 사용했을 때 얻을 수 있는 이득이 많다. 우선 상업적 라이선스의 제약을 받지 않기 때문에 게임을 배포하는 방식과 분야를 완전히 제어할 수 있다. 대다수 상용 게임 엔진은 제작할 수 있는 프로젝트 유형을 제한하거나 도박 등 특정 장르의 게임을 제작하는 데는 훨씬 더 비싼 라이선스를 요구한다. / 고도가 오픈 소스라는 점은 상업용 게임 엔진과는 비교할 수 없는 수준의 투명성이 있다는 뜻이기도 하다. 예를 들어 특정한 엔진 기능이 사용자의 요구 사항에 맞지 않는다는 것을 알게 되면 엔진 자체를 자유롭게 수정해서 필요한 새 기능을 추가할 수 있으며, 이 과정에서 허락을 받을 필요도 없다. 또한 엔진의 내부 작동에 대한 완전한 접근 권한이 있으므로 대규모 프로젝트를 디버깅할 때 매우 유용할 수 있다.
--- p.6 파이썬처럼 GDScript도 동적 타입 언어다. 이는 변수를 생성할 때 타입을 선언할 필요가 없다는 뜻이다. 또한 공백(들여쓰기)을 사용해 코드 블록을 나타낸다. 전체적으로 봐서 GDScript를 게임 로직에 사용했을 때의 장점은, 엔진과 긴밀하게 통합되어서 코드 작성량이 적다는 점이다. 이는 그만큼 개발이 빨라지고 실수를 수정할 일도 줄어든다는 뜻이다. / GDScript가 어떤 모습인지 개념을 잡을 수 있게 다음 예제 코드를 준비했다. 스프라이트를 정해진 속도로 화면 왼쪽에서 오른쪽으로 움직이는 짧은 스크립트다. --- pp.15-16 플레이어가 동전이나 장애물에 부딪혔을 때는 이를 감지해야 하지만, 아직 이런 오브젝트를 만들지 않았다. 하지만 괜찮다. 고도의 시그널 기능을 사용하여 만들 수 있다. 시그널은 노드가 메시지를 보내서 다른 노드가 감지하고 반응할 수 있게 하는 방법이다. 대다수 노드에는 이벤트(바디가 충돌하거나 버튼이 눌리는 등)가 발생했을 때 이를 알려주는 시그널이 내장되어 있다. 또한 여러분의 목적에 맞게 커스텀 시그널을 정의할 수도 있다. / 시그널은 이 시그널을 수신하려는 노드에 연결해 사용한다. 연결은 인스펙터 창이나 코드에서 할 수 있다. 이 프로젝트 후반에 2가지 방법으로 시그널을 연결하는 방법을 배울 것이다. --- p.32 그런데 지금 게임을 실행하면 문제가 하나 있다. 모든 노드가 일시 정지되고, Main도 거기 포함된다는 것이다. 즉, 더 이상 _input()을 처리하지 않으므로, 입력을 다시 감지해 일시 정지를 해제할 수 없다. 이 문제를 해결하려면 Main 노드의 Process/Mode를 Always로 설정하자. 일시 정지 기능은 알아두면 매우 유용하다. 어떤 게임에서든 이 기법을 사용할 수 있으므로, 이 기능을 다시 검토하며 작동 방식을 이해했는지 확인하자. --- p.91 게임을 다시 플레이하면 공격적인 상대 외계인과 전투를 벌이게 될 것이다. 모든 콜리전 조합이 처리되고 있는지 확인하자(플레이어가 적 총알에 맞을 때를 제외하고). 적의 총알이 바위에 막힐 수 있다는 점에도 주목하자. 따라서 바위 뒤에 숨어 엄폐할 수도 있다. / 이제 게임에 적들이 생겨서 훨씬 더 도전적이다. 그래도 너무 쉽다면 적의 출현 빈도, 피해량, 파괴하는 데 필요한 사격 횟수 등 적의 속성을 증가시켜보자. --- p.99 움직이는 플랫폼은 레벨 디자인 툴킷에 추가하기 좋은 재미 요소다. 이 절에서는 레벨의 아무 곳에나 배치하고 이동과 속도를 설정할 수 있는 움직이는 플랫폼을 만들어보겠다. / 새 씬을 시작하고 Node2D를 루트 노드로 추가해서 이름을 MovingPlatform으로 바꾼다. 씬을 저장하고 TileMap을 자식으로 추가한다. 플랫폼 아트는 모두 스프라이트 시트에 있으며 이미 타일로 분할되고 콜리전이 추가된 상태이므로 플랫폼을 그리기는 쉽다. Tile Set에 tiles_world.tres를 추가한다. Collision Animatable 상자도 사용으로 체크해야 한다. 그래야 이동 중에도 콜리전이 제대로 작동한다. --- p.157 |
|
게임 엔진계의 샛별, 고도 엔진으로 게임 개발 시작하기한국어판 부록으로 고도 엔진 에디터 메뉴 설명까지
유니티 가격 정책 이슈 이후로 무료 오픈 소스 게임 엔진인 고도 엔진은 점점 더 인기를 얻고 있다. 고도 엔진은 사용하기 쉽고 가벼울 뿐더러 복잡한 라이선스 문제가 없어서 상업용 게임을 전 세계에 배포하는 데 부담이 없다. 게다가 4.0 버전에는 고가의 상용 게임 엔진에 버금가는 새 기능이 대거 추가되어 세계 3위 엔진으로 올라섰다. 개인 또는 소수 인원의 팀이 무료 엔진을 사용해 자기 게임을 만들 수 있는 시대가 열린 것이다. 하지만 지금까지는 고도 엔진에 대해 참고할 만한 자료가 국내에 거의 없었다. 고도 에디터는 한국어를 100% 지원하지만, 고도 4 문서 대부분은 아직 번역되지 않은 채 남아 있는 실정이다. 이러한 상황에서 에디터 사용법부터 실제 게임 개발 방법까지 쉽고 자세하게 설명하는 책이 나왔다. 책에서 설명하는 5가지 크로스 플랫폼 2D 및 3D 게임 프로젝트 예제로 쉽게 고도 엔진과 친해질 수 있으며, 게임을 개발하는 방법을 제대로 이해할 수 있다. 원서의 4.1 버전 대신 한국어 4.2 버전으로 업데이트해 최신 기능까지 쉽게 활용할 수 있다. 1장에서는 게임 엔진의 전반적인 개념과 고도의 특성을 소개하며, 고도를 다운로드하는 방법과 이 책을 효과적으로 사용하는 방법을 알아본다. 2장에서는 작은 2D 게임 〈코인 대시〉를 만들면서 씬을 만들고 고도 엔진의 노드 시스템으로 작업하는 방법과 고도 에디터 사용법, GDScript로 스크립트를 작성하는 방법을 배운다. 3장에서는 고전 2D 아케이드 게임 〈스페이스 록〉을 만들며 물리 바디를 사용하여 〈아스테로이드〉식 우주 게임을 만드는 방법을 알아본다. 4장에서는 〈슈퍼 마리오브라더스〉식 횡 스크롤 플랫폼 게임 〈정글 점프〉를 만들어본다. 키네마틱 바디, 애니메이션 상태, 타일 맵을 사용한 레벨 디자인에 대해 배울 수 있다. 5장에서는 이전 개념을 3D로 확장해 〈3D 미니골프〉를 만들고, 메시, 조명, 카메라 제어 등을 익힌다. 6장 〈인피니트 플라이어〉에서는 계속해서 3D 개발을 탐색하며 동적 콘텐츠, 절차적 생성, 기타 3D 기법을 다룬다. 7장에서는 추가로 알아두면 도움이 되는 주제와 리소스를 살펴본다. 마지막으로 한국 독자를 위해 부록으로 고도 엔진 에디터 메뉴 설명을 수록했다. 최종 프로젝트를 마칠 때쯤이면 고도 4를 이용해 게임과 게임 시스템을 실제로 개발 및 구현할 수 있을 것이다. 1인 개발을 시작하려는 초보자는 손쉽게 게임 개발 기술을 익히고 나아가 자신만의 게임을 만들 수 있으며, 무료 게임 엔진 사용을 고려 중인 팀과 숙련된 개발자는 강력하고 커스터마이징 가능한 고도 엔진으로 비전을 실현할 수 있다. 앞으로 프로덕트까지 진행되는 고도 엔진 프로젝트가 많이 나오기를 기대한다. 주요 내용 ㆍ고도와 함께 게임 엔진과 에디터에 익숙해지기 ㆍ고도 4의 새로운 기능 탐색하기 ㆍ디자인 및 코딩 모범 사례를 활용하여 2D 및 3D 게임 제작하기 ㆍ고도의 내장 스크립팅 언어인 GDScript를 사용하여 복잡한 게임 시스템 만들기 ㆍ직관적인 사용자 인터페이스를 구현해서 정보 표시하기 ㆍ매혹적인 시각 효과로 게임에 풍미 더하기 ㆍ데스크톱 및 모바일 플랫폼으로 게임 퍼블리싱하기 |
|
몇 년 전부터 고도 엔진에 대한 관심이 많아졌지만 제대로 된 저서나 역서를 찾기 어려워 아쉬웠는데, 이렇게 멋진 책이 나오게 되어 반갑습니다. 고도 엔진으로 2D 게임뿐만 아니라 3D 게임 개발 과정까지, 프로젝트 시작부터 GDScript 작성, 애셋 관리 등 게임을 개발하기 위한 첫 단추를 끼울 수 있을 정도의 간단하면서도 필요한 내용이 다 포함되어 있습니다. - 박일 (엔씨소프트 TL 캠프)
|
|
국내에 처음으로 고도 엔진 입문서가 나온다는 소식은 고도 엔진 후원자이자 나름 전도사로서 매우 반가운 일입니다. 그동안 해외 인디 게임 씬에서는 고도 엔진의 사용자가 꾸준히 증가해서 세번째로 사용자가 많은 엔진이 되었지만 국내에는 사용자가 드물었습니다. 최근 유니티 엔진의 가격 정책 변경 때문에 그 어느 때보다 무료 오픈 소스인 고도 엔진에 대한 관심이 커졌지만, 상대적으로 국내 사용자가 적다 보니 한국어로 된 정보도 한정되고 특히 한국어 책은 없었습니다. 이런 상황에서 고도 엔진 4의 최신 입문서 중 가장 좋은 책의 번역서가 나오게 되어 참으로 기쁩니다. 저자는 미국에서 청소년들에게 게임 만들기를 통해 코딩을 가르치는 교육 과정을 오랫동안 운영해온 베테랑 교육자이기도 합니다. 고도 엔진을 처음 배우려는 이들에게 좋은 입문서가 되리라고 기대합니다. - 김성완 (Godot Engine Korea 운영자, 인디라! 인디 게임 개발자 모임 대표)
|
|
유니티와 언리얼 엔진을 현업에서 모두 사용해본 경험이 있지만, 고도 엔진과의 인연은 지금껏 없었습니다. 최근 즐겨 하는 스팀 게임들 사이에서 고도 엔진 적용 사례가 늘어나는 것을 보며 흥미가 있던 찰나에 이 책을 만나게 되었습니다. 간단한 게임을 만들어보자는 생각으로 책을 대했고, 필요한 기능을 차근차근 책에서 찾아나가기 시작했습니다. 유니티와 유사한 구조를 가지고 있어, 씬과 노드에 대한 이해만 새롭게 하면 유니티 사용자들도 고도 엔진으로 쉽게 전환할 수 있을 것으로 보입니다. 고도 엔진을 활용한 2D와 3D 게임 제작에 이르기까지, 이 책은 고도 엔진을 처음 접하는 이들에게 훌륭한 레퍼런스가 될 것입니다. - 장세용 (NDUS Interactive TD)
|
|
게임 엔진은 새로운 강자가 나타나고 또한 없어지는 것이 계속 반복되면서 지금은 유니티와 언리얼, 2강으로 굳어졌습니다. 하지만 개발이 엔진에 종속되는 것은 항상 위험성을 가지고 있습니다. 2018년 고도 엔진 코리아 페이스북 그룹이 생기면서 이 새로운 엔진이 자리 잡기를 기대했지만, 한국어 자료가 부족하고 해당 기술을 사용하는 개발자 역시 부족했기 때문에 자리를 잡지 못하고 있었습니다. 고도 엔진은 파이썬과 유사한 GDScript를 지원하며, 오픈 소스라는 장점이 있습니다. 2D부터 3D까지 다양한 예제로 고도 엔진 사용법을 배울 수 있는 이 책은 고도 엔진에 입문하고자 하는 사람들에게 좋은 마중물이 될 것입니다. 이 책을 통해 프로덕트까지 진행되는 고도 엔진 프로젝트가 나오기를 기대합니다. - 오영욱 (게임 프로그래머, 가천대 게임·영상 전공 강사)
|
|
유명한 두 상용 게임 엔진 사이에서 오픈 소스로 완전 무료로 사용할 수 있는 고도 엔진에 대한 국내 게임 개발자들의 관심이 급격히 커졌습니다만, 공식 문서 외에는 한국어로 접할 수 있는 입문 자료가 거의 전무했습니다. 이런 상황에서 한국어로 된 첫 고도 엔진 4 입문서가 나올 수 있게 된 것도 반가운데, 최신 버전에 맞춘 실습 중심의 입문서라 더 반갑고 기쁩니다.
게임을 개발하기 위해 필요한 모든 걸 공부한 뒤 개발을 시작할 필요는 없습니다. 게임 개발 분야는 방대하기 때문에, 만들고자 하는 게임에 필요한 요소들만 공부하는 것이 가장 빠르고, 쉽고, 효율적인 학습 방법입니다. 이 책은 고도 엔진을 빠르게, 쉽게, 효율적으로 익히고자 하는 분들을 위해 장황한 사전 설명을 최소화하고 5개의 게임을 하나씩 만들어보는 과정에서 고도 엔진의 특징과 필수 게임 개발 지식을 자연스럽게 설명합니다. 고도 엔진으로 게임을 직접 만들어보고 싶은 게임 개발 유경험자분들은 물론, 초심자분들께도 추천합니다. - 원소랑 (인디 게임 개발자, 게임 개발 블로거) |
|
1인 개발을 시작하는 사람들이 많이 늘고 있습니다. 이에 따라 무료 게임 엔진을 찾는 사람들도 늘고 있습니다. 이 책에서는 무료 게임 엔진의 신흥 강자인 고도 엔진의 사용법을 간단한 게임을 개발해 보면서 차근차근 익힐 수 있습니다. 1인 개발을 시작하려는 개발자나 무료 게임 엔진 사용을 고려 중인 팀 모두에게 이 책을 추천합니다. - 이동연 (게임 개발자)
|