책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 게임 프로그래밍
· ISBN : 9791192987927
· 쪽수 : 296쪽
· 출판일 : 2024-03-21
책 소개
목차
옮긴이 머리말 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
리뷰
책속에서
게임 개발자로서는 고도를 사용했을 때 얻을 수 있는 이득이 많다. 우선 상업적 라이선스의 제약을 받지 않기 때문에 게임을 배포하는 방식과 분야를 완전히 제어할 수 있다. 대다수 상용 게임 엔진은 제작할 수 있는 프로젝트 유형을 제한하거나 도박 등 특정 장르의 게임을 제작하는 데는 훨씬 더 비싼 라이선스를 요구한다. / 고도가 오픈 소스라는 점은 상업용 게임 엔진과는 비교할 수 없는 수준의 투명성이 있다는 뜻이기도 하다. 예를 들어 특정한 엔진 기능이 사용자의 요구 사항에 맞지 않는다는 것을 알게 되면 엔진 자체를 자유롭게 수정해서 필요한 새 기능을 추가할 수 있으며, 이 과정에서 허락을 받을 필요도 없다. 또한 엔진의 내부 작동에 대한 완전한 접근 권한이 있으므로 대규모 프로젝트를 디버깅할 때 매우 유용할 수 있다.
파이썬처럼 GDScript도 동적 타입 언어다. 이는 변수를 생성할 때 타입을 선언할 필요가 없다는 뜻이다. 또한 공백(들여쓰기)을 사용해 코드 블록을 나타낸다. 전체적으로 봐서 GDScript를 게임 로직에 사용했을 때의 장점은, 엔진과 긴밀하게 통합되어서 코드 작성량이 적다는 점이다. 이는 그만큼 개발이 빨라지고 실수를 수정할 일도 줄어든다는 뜻이다. / GDScript가 어떤 모습인지 개념을 잡을 수 있게 다음 예제 코드를 준비했다. 스프라이트를 정해진 속도로 화면 왼쪽에서 오른쪽으로 움직이는 짧은 스크립트다.