|
오프닝 x
튜토리얼 xii 학습 가이드 xviii 로드맵 xx PART I 게임 개발의 기초 LEVEL 1 게임 개발의 첫걸음 시작하기 3 1.1 고도 엔진 이해하기 4 __1.1.1 게임 엔진이란? 4 __1.1.2 게임 엔진의 역할 5 __1.1.3 엔진 없는 게임 제작 방식 6 __1.1.4 고도 엔진의 특징 7 __1.1.5 오픈소스 프로젝트란? 8 1.2 유니티, 언리얼 엔진과 비교하기 10 __1.2.1 라이선스 및 비용 10 __1.2.2 커뮤니티와 생태계 10 __1.2.3 개발 난이도 12 __1.2.4 자유도 12 __1.2.5 그래픽 품질 13 __1.2.6 플랫폼 지원 13 1.3 개발 흐름 머릿속에 그리기 14 리플레이 16 / QUIZ 16 LEVEL 2 고도 엔진 설치하고 바로 시작하기 17 2.1 고도 엔진 홈페이지 살펴보기 18 __2.1.1 홈페이지 구조 18 __2.1.2 상단 메뉴 구성 19 2.2 고도 엔진 설치하기 22 __2.2.1 버전 선택 기준 23 __2.2.2 다운로드 및 압축 해제 24 2.3 프로젝트 생성하기 26 __2.3.1 고도 엔진 실행 26 __2.3.2 언어 설정 변경 27 __2.3.3 프로젝트 생성 28 리플레이 30 / QUIZ 30 LEVEL 3 고도 엔진 인터페이스 익히기 31 3.1 에디터 UI 한눈에 파악하기 32 3.2 프로젝트 매니저 이해하기 34 __3.2.1 새 프로젝트 생성 35 __3.2.2 기존 프로젝트 가져오기 36 __3.2.3 스캔 기능 활용 37 __3.2.4 프로젝트 필터 및 정렬, 애셋 라이브러리 38 __3.2.5 프로젝트 옵션 버튼 기능 40 3.3 노드와 씬 이해하기 42 __3.3.1 노드란? 42 __3.3.2 부모-자식 관계 42 __3.3.3 씬이란? 43 __3.3.4 노드 및 씬 구조를 사용하는 이유 43 3.4 메뉴 익히기 45 __3.4.1 Scene 46 __3.4.2 Project 47 __3.4.3 Debug 48 __3.4.4 Editor 49 __3.4.5 Help 50 __3.4.6 자주 사용되는 단축키 51 3.5 Scene 탭 활용하기 52 __3.5.1 노드의 계층구조 52 __3.5.2 상단 버튼 기능 53 __3.5.3 루트 노드 53 __3.5.4 씬 인스턴싱 활용 54 3.6 Import 탭 이해하기 55 __3.6.1 Import 설정의 필요성 56 __3.6.2 Import 준비 과정 56 __3.6.3 Import As 기능 57 __3.6.4 Reimport 기능 59 3.7 FileSystem 탭 활용하기 60 __3.7.1 리소스 관리 60 __3.7.2 폴더 및 파일 탐색 61 __3.7.3 Change Split Mode 기능 61 __3.7.4 우클릭 기능 62 3.8 작업 화면 상단 UI 이해하고 활용하기 65 __3.8.1 작업 공간 전환 버튼 65 __3.8.2 탭 바 이해하기 66 __3.8.3 뷰포트 툴 바 익히기 67 3.9 뷰포트 다루기 71 __3.9.1 기본 조작 71 __3.9.2 2D 뷰 조작 72 __3.9.3 3D 기본 조작 72 __3.9.4 FPS 스타일 조작 73 3.10 하단 패널 활용하기 74 __3.10.1 Output 정보 확인 74 __3.10.2 Debugger 활용 75 __3.10.3 Audio 관리 76 __3.10.4 Animation 작업 76 __3.10.5 Shader Editor 활용 77 3.11 플레이 테스트 버튼 사용하기 79 3.12 Inspector, Node, History 탭 활용하기 81 __3.12.1 Inspector 탭 기능 81 __3.12.2 Node 탭 기능 83 __3.12.3 History 탭 기능 84 3.13 Project Settings 다루기 86 __3.13.1 General 설정 86 __3.13.2 Input Map 설정 87 __3.13.3 Localization 설정 87 __3.13.4 Globals 설정 88 __3.13.5 Plugins 설정 89 __3.13.6 Import Defaults 설정 90 3.14 Editor Settings 바꾸기 91 __3.14.1 Interface 설정 91 __3.14.2 Network 설정 92 __3.14.3 FileSystem 설정 92 __3.14.4 Docks 설정 93 __3.14.5 Text Editor 설정 94 __3.14.6 Editors 설정 95 __3.14.7 Run 설정 96 __3.14.8 Input 설정 96 __3.14.9 Export 설정 97 __3.14.10 Shortcuts 설정 98 리플레이 99 / QUIZ 99 LEVEL 4 GDScript 기초 익히기 101 4.1 스크립트 파일 만들기 102 __4.1.1 씬 생성 102 __4.1.2 스크립트 파일 생성 및 노드 연결 104 4.2 Hello world! 출력하기 108 __4.2.1 스크립트 작성 108 __4.2.2 스크립트 노드 부착 109 4.2.3 스크립트 테스트 110 4.3 주석 이해하기 112 __4.3.1 코드 설명 작성 112 __4.3.2 특정 코드 실행 차단 113 4.4 확장 이해하기 114 __4.4.1 확장이란? 114 __4.4.2 사용할 수 있는 확장 기능 탐색 115 4.5 변수 활용하기 117 __4.5.1 변수 선언 117 __4.5.2 변수 타입 118 __4.5.3 변수 사용법 120 __4.5.4 변수 실습 121 4.6 상수 사용하기 123 __4.6.1 상수 선언 123 __4.6.2 상수의 필요성 124 4.7 열거형 활용하기 125 __4.7.1 열거형 선언 125 __4.7.2 열거형 사용법 127 4.8 배열 다루기 128 __4.8.1 배열 생성 128 __4.8.2 배열 사용법 129 4.9 함수 만들기 134 __4.9.1 함수 정의 134 __4.9.2 데이터 전달 135 __4.9.3 반환값 처리 136 __4.9.4 반환 데이터 타입 명시 137 4.10 통과 이해하기 139 __4.10.1 pass 사용법 139 __4.10.2 pass의 필요성 141 4.11 조건문 활용하기 142 __4.11.1 비교 연산자 142 __4.11.2 if 조건문 143 __4.11.3 elif 조건문 144 __4.11.4 else 조건문 145 __4.11.5 match 조건문 146 __4.11.6 조건문 실습 147 4.12 반복문 사용하기 149 __4.12.1 for 반복문 149 __4.12.2 while 반복문 151 __4.12.3 break 제어문 152 __4.12.4 continue 제어문 153 __4.12.5 반복문 실습 154 4.13 클래스 이해하기 156 __4.13.1 클래스의 정의와 구조 156 __4.13.2 클래스 확장 157 __4.13.3 인스턴스 생성 159 __4.13.4 노드와 클래스 관계 160 __4.13.5 클래스의 확장성과 재사용성 160 4.14 객체 지향 프로그래밍 이해하기 162 __4.14.1 클래스와 인스턴스의 관계 162 __4.14.2 상속과 오버라이딩 164 __4.14.3 캡슐화 165 __4.14.4 다형성 166 __4.14.5 상속 구조의 예시 166 __4.14.6 객체 지향 프로그래밍의 장점 168 리플레이 169 / QUIZ 169 PART 2 게임 만들기 LEVEL 5 2D 레이싱 게임 만들기 173 5.1 실습 준비하기 174 __5.1.1 새 프로젝트 생성 175 __5.1.2 자료 다운로드 177 5.2 자동 스크롤이 되는 배경 화면 만들기 181 __5.2.1 폴더 생성 181 __5.2.2 메인 게임 및 배경 화면 씬 생성 182 __5.2.3 배경 씬 노드 구조 생성 186 __5.2.4 렌더링 설정 변경 191 __5.2.5 배경 추가 194 __5.2.6 흐르는배경의 스크립트 작성 197 5.3 자동차 움직이기 201 __5.3.1 자동차 씬 생성 201 __5.3.2 키보드 입력 설정 209 __5.3.3 스크립트로 자동차 이동 처리 211 __5.3.4 도로 밖 이동 제한 213 5.4 컵케이크 획득하기 217 __5.4.1 컵케이크 씬 생성 217 __5.4.2 컵케이크 스크롤 및 충돌 감지 221 __5.4.3 전역변수를 이용한 점수 관리 224 __5.4.4 타이머를 이용한 컵케이크 자동 생성 228 5.5 점수 화면 표시하기 237 __5.5.1 점수 표시 UI 씬 생성 237 __5.5.2 점수 실시간 업데이트 239 __5.5.3 CanvasLayer를 이용한 화면 표시 240 미니 챌린지 244 / 리플레이 245 / QUIZ 245 LEVEL 6 3D 이사 가는 날 만들기 247 6.1 실습 준비하기 248 __6.1.1 새 프로젝트 생성 248 __6.1.2 자료 다운로드 251 6.2 3D 환경 구성하기 252 __6.2.1 게임 해상도 변경 252 __6.2.2 메인 게임 씬 생성 253 __6.2.3 이사할 집 씬 생성 258 6.3 이삿짐 준비하기 269 __6.3.1 가구 씬 생성 269 __6.3.2 그 밖의 가구 씬 생성 274 6.4 게임 플레이 구현하기 277 __6.4.1 키보드 입력 설정 277 __6.4.2 하늘에서 가구 떨어트리기 구현 279 6.5 게임오버 구현하기 284 __6.5.1 점수 저장 284 __6.5.2 게임오버 화면 생성 288 __6.5.3 낙하 감지와 게임오버 화면 표시 301 6.6 게임 시작화면 구현하기 309 __6.6.1 시작화면 구성 309 __6.6.2 게임 시작 버튼 기능 구현 318 미니 챌린지 326 / 리플레이 327 / QUIZ 327 APPENDIX A 웹으로 배포하기 329 A.1 1단계: 프로젝트 빌드하기 330 A.2 2단계: itch.io 프로젝트 생성하기 333 A.3 3단계: 파일 업로드 및 웹 플레이 설정하기 337 A.4 4단계: 테스트 및 공개하기 339 엔딩 342 용어집 343 찾아보기 346 |
|
노드는 고도 엔진에서 특정 기능을 담당하는 레고 블록이라고 생각하면 이해하기 쉽습니다. 하나의 노드는 하나의 역할을 수행하며 이런 노드가 여러 개 모이면 복잡한 동작을 수행하는 오브젝트를 구성할 수 있습니다. / 예를 들어, Sprite2D 노드는 이미지를 화면에 표시하고, RigidBody2D 노드는 물리적인 충돌과 중력을 처리합니다. Camera2D 노드는 화면에서 보이는 영역, 즉 시야(view)를 결정합니다. 이처럼 각각의 노드는 하나의 명확한 목적을 가지고 있으며, 이를 조합함으로써 다양한 게임 요소를 만들 수 있습니다.
--- p.42 [Text Editor(텍스트 에디터)]는 스크립트 작성과 편집에 관련된 다양한 옵션을 제공하는 설정 메뉴입니다. 코드 편집기의 외형과 동작 방식을 세부적으로 조정할 수 있으며, 개발자가 선호하는 작업 환경을 구성하는 데 사용됩니다. GDScript를 작성할 때 사용하는 텍스트 편집기 환경을 설정할 수 있으며 글꼴, 테마 색상, 자동 들여쓰기, 코드 자동 완성, 줄 번호 표시 여부 등을 조절해 개발자 취향에 맞는 코딩 환경을 구성할 수 있습니다. --- p.94 열거형은 초깃값을 별도로 지정하지 않으면 자동으로 0부터 시작해 1씩 증가하는 숫자가 각 항목에 차례대로 할당됩니다. 즉 예시에서 ALLIANCE는 0, ENEMY는 1, UNKNOWN은 2가 됩니다. 만약 특정 항목에 초깃값을 지정하면 그 이후 항목부터는 해당 값을 기준으로 1씩 증가해 자동으로 할당됩니다. 예를 들어, enum {IDLE = 10, RUN, JUMP = 14}라고 작성하면 IDLE은 10, RUN은 11, JUMP는 14가 할당됩니다. 이렇게 초깃값을 지정하면 특정 범위에서 시작하는 숫자를 표현할 때 편리합니다. --- p.126 씬 폴더 내에 게임 씬 파일이 만들어지고 해당 씬이 자동으로 열립니다. 씬을 만들 때 설정했던 것과 같이 2D 게임을 위한 가장 기본적인 'Node2D' 노드를 최상위(root) 노드로 하는 새로운 씬이 만들어집니다. 'Node2D'는 2D 공간의 위치, 회전, 크기 등 기본 정보를 관리하는 만능 노드로 생각하면 편리합니다. --- p.183 scroll_offset.y += 스크롤속도 * delta는 실제 움직임을 만드는 핵심 코드입니다. 여기서 delta는 이전 프레임과 현재 프레임 사이의 시간 간격을 의미하는데, 이 값을 곱해 주는 것이 매우 중요합니다. delta를 곱하면 컴퓨터 성능과 관계없이 모든 환경에서 배경이 항상 일정한 속도로 움직이게 만들 수 있기 때문입니다. 예를 들어, 성능이 느린 컴퓨터에서는 fps(프레임/초)가 느려서 func _process(delta) 함수를 호출하는 빈도가 줄어듭니다. 대신 delta의 값이 더 커지므로 한 프레임당 배경이 움직이는 양을 늘려 속도가 일정하게 보이도록 만들 수 있습니다. --- p.199 그렇다면 점수를 저장할 변수는 어디에 만들어야 할까요? 만약 '컵케이크.gd'에 만들면 컵케이크가 사라질 때 점수도 함께 사라집니다. '자동차.gd'에 만들어도 되지만 점수, 최고 기록, 플레이어 생명 등 게임 전체에서 공유해야 할 데이터가 많아지면 관리가 복잡해집니다. 이때 사용하면 좋은 것이 바로 전역변수(싱글턴)입니다. 프로젝트 어디에서나 단 하나의 이름으로 접근할 수 있는 공용 저장소로 생각하면 편리합니다. --- pp.224-225 |
|
게임 개발의 첫걸음, 고도 엔진으로 첫 게임을 직접 만들어 보세요
이 책은 고도 엔진을 처음 접하는 독자를 위해 설치와 기본 화면부터 GDScript 문법, 2D/3D 게임 제작까지 단계적으로 안내하는 실전 입문서입니다. 기능과 문법을 단순히 나열하는 데 그치지 않고, 배경을 움직이고 자동차를 조작하며 가구를 옮기는 실제 제작 과정을 통해 각 개념이 게임에 어떻게 적용되는지 익힐 수 있도록 구성했습니다. 프로젝트와 씬, 노드의 구조를 이해하고 변수, 함수, 조건문, 반복문 등 프로그래밍의 기초를 익힌 뒤 2D 레이싱 게임과 3D 이사 게임을 완성합니다. 마지막으로, 완성한 게임을 웹에 공개하는 것까지 다루고 있어 게임 개발의 전 과정을 경험할 수 있습니다. 이 책만의 특별한 점 고도 엔진 설치와 프로젝트 생성부터 에디터, 노드, 씬, 파일 시스템 등 게임 제작에 필요한 기본 구조를 익힙니다. 이어서 GDScript 문법을 배우고, 이를 2D와 3D 게임에 직접 적용하며 배운 내용을 실제 기능으로 연결합니다. 1. 게임을 만들며 익히는 GDScript 변수와 상수, 배열, 함수, 조건문, 반복문, 클래스와 객체 지향 프로그래밍까지 게임 개발에 필요한 GDScript 문법을 예제와 함께 배웁니다. 예제를 직접 실행하며 각 문법이 게임에서 어떻게 작동하는지 바로 확인할 수 있습니다. 2. 2D와 3D를 모두 경험하는 프로젝트 실습 2D 레이싱 게임에서는 움직이는 배경과 자동차, 장애물, 충돌, 점수 화면을 구현합니다. 3D 이사 게임에서는 공간과 가구를 구성하고 캐릭터를 움직이며 게임 시작과 종료 화면까지 완성합니다. 서로 다른 두 게임을 제작하며 2D와 3D 개발 방식의 차이를 직접 경험할 수 있습니다. 3. 완성한 게임을 웹으로 공개하는 과정까지 게임을 만드는 데서 끝나지 않습니다. 웹 배포를 위한 프로젝트 설정과 파일 변환, itch.io 프로젝트 생성과 업로드 과정을 따라 하며 직접 만든 게임을 다른 사람과 공유하는 방법까지 익힙니다. 이 책은 누가 읽으면 좋을까요? 게임 개발을 어디서부터 시작해야 할지 막막한 입문자 고도 엔진과 GDScript를 실습으로 익히고 싶은 학습자 2D와 3D 게임 개발을 한 권으로 경험하고 싶은 독자 작더라도 하나의 게임을 끝까지 완성하고 싶은 예비 개발자 유니티나 언리얼 엔진 외의 새로운 게임 엔진을 찾는 개발자 이 책에서 다루는 내용은 무엇인가요? 고도 엔진의 특징을 이해하고 개발 환경 구축하기 인터페이스 조작법과 씬, 노드의 기본 구조 익히기 변수, 함수, 조건문, 반복문 등 GDScript 기초 문법 실습하기 입력, 충돌, 점수 계산 등 게임의 핵심 로직 구현하고 디버깅하기 캐릭터 조작과 충돌, 점수 시스템을 구현해 2D 레이싱 게임 완성하기 3D 공간과 오브젝트를 구성하고 상호작용을 더해 3D 이사 게임 완성하기 |