집필 시작한 지 2년 넘었는데 거의 막바지라 내용 추가할 거 뭐 더 있나 생각하는 중

책 간단히 설명하자면 이 책은 크게 '이론'파트와 '실습 프로젝트'파트로 나뉘어잇슴. 이게 이론 파트 목차임. 지금 집 밖에 있어서 깃헙에 올려뒀던 좀 과거 원고 기준이기는 한데 거의 일치할거임


- 1_Godot 입문

  - 1.1_시작의 말

  - 1.2_Godot 소개 및 다운로드

  - 1.3_Project의 생성, 삭제 그리고 등록

  - 1.4_Godot Editor 훑어보기

  - 1.5_Godot의 핵심, Node와 Scene

  - 1.6_2D Editor 이용하기

  - 1.7_좌표와 Vector

  - 1.8_Scripting 입문

    - 1.8.1_Script 만들기

    - 1.8.2_Script 붙이기/떼기

    - 1.8.3_Method 기초

    - 1.8.4_변수 기초

    - 1.8.5_주석

    - 1.8.6_연산자 기초

    - 1.8.7_Method 기초 2 - 매개변수

    - 1.8.8_Method 기초 3 - 반환

    - 1.8.9_Data Type 1

    - 1.8.10_조건문 if

    - 1.8.11_조건문 match

    - 1.8.12_코드 흐름 추적

    - 1.8.13_반복문 while

    - 1.8.14_Data Type 2 - 배열과 Dictionary

    - 1.8.15_반복문 for

    - 1.8.16_Scope

    - 1.8.17_매 프레임마다 코드 실행하기

    - 1.8.18_다른 Node를 Script로 제어하기

    - 1.8.19_@export

    - 1.8.20_Class 기초

    - 1.8.21_Class의 상속

    - 1.8.22_Data Type 3 - Vector2

    - 1.8.23_Data Type 4 - 값과 참조

    - 1.8.24_Class 객체 생성, 제거하기

    - 1.8.25_Scene 배치하기

    - 1.8.26_Static

    - 1.8.27_Node의 Life Cycle

    - 1.8.28_Callable

    - 1.8.29_Signal

    - 1.8.30_Godot 공식 문서

- 2_Godot 기초

  - 2.1_입력 받기

    - 2.1.1_Input Map 설정하기

    - 2.1.2_`Input`으로 입력받기

    - 2.1.3_`_unhandled_input()`으로 입력받기

  - 2.2_물리 엔진 이용하기

    - 2.2.1_물리 객체들의 모양 설정하기

    - 2.2.2_Body

      - `StaticBody2D`

      - `AnimatableBody2D`

      - `CharacterBody2D`

      - `RigidBody2D`

    - 2.2.3_Area

    - 2.2.4_레이어와 마스크

  - 2.3_애니메이션 만들고 재생하기

    - 2.3.1_Animated Sprite

    - 2.3.2_Animation Player

    - 2.3.3_Animation 탭 인터페이스

    - 2.3.4_Animation Player의 애니메이션 관리

    - 2.3.5_RESET 애니메이션

    - 2.3.6_애니메이션에서 Method 호출하기

    - 2.3.7_그 외 자잘한 애니메이션 기능

  - 2.4_소리 재생하기

    - 2.4.1_Audio Bus

    - 2.4.2_AudioStreamPlayer2D

    - 2.4.3_AudioStream

  - 2.5_화면 이동하기

  - 2.6_Godot의 Class

    - 2.6.1_Object

    - 2.6.2_Node

    - 2.6.3_RefCounted

    - 2.6.4_Resource

  - 2.7_UI요소 이해하기

    - 2.7.1_CanvasLayer

    - 2.7.2_Control

    - 2.7.3_기본 UI 요소

    - 2.7.4_Container

  - 2.8_Scene 사용법

    - 2.8.1_Scene 상속하기

    - 2.8.2_게임 실행 중 Scene 변경하기

  - 2.9_Autoload

  - 2.10_저장 및 불러오기

  - 2.11_배포를 위하여 게임을 실행파일로 내보내기

- 3_Godot 전반

  - 3.1_2D 공간정보

    - 3.1.1_Vector

    - 3.1.2_Transform

    - 3.1.3_Transform을 활용한 좌표 및 Vector 변환

    - 3.1.4_서로 다른 계층 간의 변환

    - 3.1.5_Node2D의 좌표 변환

  - 3.2_개발 상식

    - 3.2.1_Node 경로

      - 3.2.1.1_NodePath의 작성

      - 3.2.1.2_NodePath의 작성 규칙

    - 3.2.2_파일 경로

      - 3.2.2.1_프로젝트 폴더 내부

      - 3.2.2.2_UID를 활용한 접근

      - 3.2.2.3_유저 데이터 경로

    - 3.2.3_리소스 로딩

    - 3.2.4_고도의 메모리 관리

  - 3.3_Scripting

    - 3.3.1_언더바의 의미

    - 3.3.2_코드 줄 바꿈

    - 3.3.3_Scene 내장 Script

    - 3.3.4_null

    - 3.3.5_Enum

    - 3.3.6_랜덤

    - 3.3.7_range()

    - 3.3.8_속성의 Setter와 Getter

    - 3.3.9_String Formatting

    - 3.3.10_생성자

    - 3.3.11_Notification

    - 3.3.12_코루틴

    - 3.3.13_Group

    - 3.3.14_Expression

  - 3.4_입력

    - 3.4.1_입력 제어 구조

    - 3.4.2_Drag and Drop

  - 3.5_물리

    - 3.5.1_Joint

    - 3.5.2_Raycasting

  - 3.6_Tween

  - 3.7_시각 효과

    - 3.7.1_Particle

    - 3.7.2_빛

  - 3.8_UI

    - 3.8.1_RichTextLabel

    - 3.8.2_화면 스트레칭

    - 3.8.3_Theme

  - 3.9_길찾기

    - 3.9.1_Path2D

    - 3.9.2_Navigation

  - 3.10_Viewport

    - 3.10.1_SubViewport

    - 3.10.2_Window

- 4_Godot Editor 확장

  - 4.1_더 편리한 에디터

    - 4.1.1_@tool

    - 4.1.2_더 다양한 @export

    - 4.1.3_이미 노출된 속성들의 설정 변경

  - 4.2_Plugin

    - 4.2.1_Plugin 제작

    - 4.2.2_나만의 UI를 Editor에 추가하기

      - 4.2.2.1_Control 그대로 추가하기

      - 4.2.2.2_Dock으로서 추가하기

      - 4.2.2.3_Main Screen으로서 추가하기

    - 4.2.3_Editor 조작

    - 4.2.4_실행 취소 / 다시 실행




이론 파트라고는 했지만 막 깊게 설명하지는 않음. 고도 Docs에 좀 가까운 구성인데, 입문자 대상으로한 입문서라서 독자가 해당 지식이나 기능의 활용을 시작하기 위한 입문 수준으로만 내용을 작성햇슴. 어차피 자세하고 길게 줄줄 설명해봤자 그런거 다 읽는 것보다 AI한테 한 번 물어보는게 나을테니, AI가 헛소리해서 입문자가 초반에 길 못잡고 헤메는걸 방지하는 정도의 용도라고 보면 됨.


예시로 섹션 3.5.1_Joint의 내용을 보여주자면 이러함



a15714ab041eb360be3335625683746f0253452dd6a7e889d53566f19f13cd6e979ed17d2a0ce7f710660e0ddddc







실습 프로젝트 파트는 그저 "따라하기"에 가까운 파트임. 특정 실습을 진행하는데 필요한 작업 순서랑 코드 정도를 제시해서, 그대로 따라하면 해당 프로젝트를 완성할 수 있게 되어있음. 다만 구현할 때 "왜 이렇게 하는지", 이런 건 설명안함. 말 그대로 따라하기만 진행하는 파트. 그런건 직접 이론 파트의 내용을 찾아보면서 스스로 익히라는 의도임. 마찬가지로 살짝 과거 원고 기준이라 실제 출간시에는 프로젝트 하나정도 더 들어가 있을거임


- 실습 프로젝트

  - A_장애물 피하기(조잡한 버전)

    - A.1_개요

    - A.2_우리가 만들 것

    - A.3_실습 준비

    - A.4_실습

      - A.4.1_Main Scene 만들기

      - A.4.2_주인공 캐릭터 만들기

      - A.4.3_장애물 만들기

      - A.4.4_목표물 만들기

      - A.4.5_완성

  - B_장애물 피하기

    - B.1_개요

    - B.2_우리가 만들 것

    - B.3_실습 준비

    - B.4_실습

      - B.4.1_프로젝트 설정하기

      - B.4.2_게임 상태 값을 들고 있을 Autoload 작성

      - B.4.3_장애물 만들기

      - B.4.4_목표물 만들기

      - B.4.5_주인공 캐릭터 만들기

      - B.4.6_스테이지 기본 구조 만들기

      - B.4.7_여러 스테이지 만들기

      - B.4.8_엔딩씬 만들기

      - B.4.9_스테이지 연결

      - B.4.10_완성

  - C_탑뷰 슈팅

    - C.1_개요

    - C.2_우리가 만들 것

    - C.3_실습 준비

    - C.4_실습

      - C.4.1_프로젝트 설정

      - C.4.2_Event Bus 만들기

      - C.4.3_파괴 이펙트

      - C.4.4_플레이어 파괴 이펙트

      - C.4.5_플레이어 레이저 만들기

      - C.4.6_플레이어 캐릭터 만들기

      - C.4.7_적 UFO 만들기

      - C.4.8_장애물 만들기

      - C.4.9_스테이지 제작 및 장애물 배치

      - C.4.10_스테이지에 카메라 및 빛 배치

      - C.4.11_스테이지에 UFO 무한 생성 구현하기

      - C.4.12_스테이지에 UI 배치 및 게임 로직 구현하기

      - C.4.13_마무리

      - C.4.14_완성

  - D_물고기 수집

    - D.1_개요

    - D.2_우리가 만들 것

    - D.3_실습 준비

    - D.4_실습

      - D.4.1_물고기의 종류를 저장하는 Resource 만들기

      - D.4.2_Event Bus 만들기

      - D.4.3_물고기 Scene 만들기

      - D.4.4_Main Scene 배경 구성하기

      - D.4.5_Main Scene에 물고기 이동 경로 배치하기

      - D.4.6_Main Scene에 UI 구성하기

      - D.4.7_Main Scene에 오디오 추가하기

      - D.4.8_Main Script 작성

      - D.4.9_완성

  - E_사이드뷰 샌드박스

    - E.1_개요

    - E.2_우리가 만들 것

    - E.3_실습 준비

    - E.4_실습

      - E.4.1_프로젝트 설정

      - E.4.2_BlockData 정의하기

      - E.4.3_InventorySlot 정의하기

      - E.4.4_아이템화된 블록 만들기

      - E.4.5_주인공 캐릭터 만들기

      - E.4.6_인벤토리 슬롯 UI 만들기

      - E.4.7_인벤토리 창 UI 만들기

      - E.4.8_TileSet 설정

      - E.4.9_Main Scene 구성

      - E.4.10_Main Script 작성

      - E.4.11_완성

  - F_그림판 Dock

    - F.1_개요

    - F.2_우리가 만들 것

    - F.3_실습 준비

    - F.4_실습

      - F.4.1_플러그인 생성

      - F.4.2_플러그인 UI 구성하기

      - F.4.3_그림판 로직 구현

      - F.4.4_플러그인 Script 작성

      - F.4.5_완성


실습 프로젝트 퀄리티는 이런 수준임. 실습용 그래픽 에셋은 Kenney갓의 것을 사용함.



2caed420abc236a14e81d2b628f1756bbdd803e4


29b9d422abc236a14e81d2b628f1766a6d51601a



그리고 이 책은 2D쪽만 다룸. 3D 쪽은 전혀 포함안함.


책 소개는 여기까지 하고 그래서 이 글의 요지

>>> 위 목차에 포함되어있지 않은 것 중에서 책에 더 넣었으면 하는 내용 혹시 생각나는거 잇스면 추천좀 해주셈....


인터넷에 쓰는 글은 그냥 찍찍 싸지르고 부족하거나 틀린 거 잇스면 그때가서 수정하면 되는데... 책은 수정이 안되니 처음부터 최대한 부족함 없이 내야한다고 작업하고 잇서서 2년 넘게 질질 끌고잇슴... 물론 본인쟝이 글쓰는 속도가 느려서 그렇기도함...



그리고 아래 내용들은 입문서라는 책의 방향성과 안맞아서 쓰다가 말았거나 쓸모 없다 싶어서 의도적으로 제외한 내용들임


- 쉐이더 : 일단 메쉬부터 설명해야하는데 2D만 다루는 책에서 그런 설명까지 들어가기가 쫌 그럼. 그리고 입문자들은 GDS하기도 바쁜데 쉐이딩 언어까지 들이대면 좋아 죽을 것 같아서 뺌

- 컴퓨트 쉐이더 : 입문자가 쓰기에 난이도도 되게 높고 입문자가 쓸 일도 없음

- 디버깅 : 중단점 걸고 Step 버튼 눌러서 한줄씩 진행시키는 가장 기본적인 내용은 포함된 상태임. 근데 프로파일러 등 디버깅의 세세한 부분까지 들어가기에는 입문자 수준에서 쓸까 싶기도 하고 괜히 최적화병 걸리게 할 것 같아서 뺌
- 멀티스레딩 : 입문자들이 좋아 죽을거 같아서 뺌. 그리고 본인쟝부터도 멀티스레딩 잘 안씀. 어차피 고도가 필요한 부분에 열심히 적용시켜 놨으니까
- 애니메이션 트리 : 블렌딩 안할거면 쓸 이유가 없는데, 2D는 스프라이트 교체식 애니메이션 위주라 블렌딩 끼워넣을 여지가 별로 없음.

- 커스텀 2D 그래픽 그리기 : CanvasItem 상속해서 직접 코드로 선이나 원, 사각형 등을 그리는 내용인데, 입문자들이 자주 쓸까 싶어서 뺐음

- 패럴렉스 배경 : 현재로서는 다중 뷰포트랑 호환도 안되고 이거 쓸바에는 3D로 가는게 맞다는게 개인적인 생각임
- 현지화 : 엑셀 등 외부 소프트웨어도 필요하고, 입문 단계에서 이게 필요한가 싶어서 제외함

- Inspector 플러그인 제작 : Dock 플러그인이나 Main Screen 플러그인 만드는 내용은 포함되어 있는데, Inspector 플러그인 만드는 내용은 제외함. 커스텀 Resource 만들어서 배포하는 수준의 작업이 아니면 그닥 필요 없다고 생각해서
- 타일맵 : 정확히는 완전히 제외한건 아니고, 실습 프로젝트 E에서 한번 써보기는 함. 근데 이론 파트에서는 제외햇슴 실습에서 수행하는 내용이랑 그렇게 다른게 없어서. 근데 훨씬 자세하게 이론파트에서 다룰까 말까 고민하는 중임

- CollisionShape의 작동 구조(?) : 입문자가 알 필요 없음

- Server들: 입문자가 굳이 쓸 필요 없음. 입문자들은 걍 Node부터 배우는게 맞다고 봄

- @export 직접 구현: 집필 기간동안 고도가 업데이트 하면서 쓸만한 @export들이 많아져서 직접 구현의 필요성이 많이 줄었다고 봄

- 실습 프로젝트

  - RTS : 길찾기, 씬 인스턴스화 등이 중점인데 다른 프로젝트들이랑 겹침

  - 타워 디펜스 : 위와 같은 이유임. 다른 프로젝트들이랑 활용하는 지식은 겹치는데 게임 형식만 달라지는 느낌

  - 비주얼 노벨 : 그래픽 에셋도 쓸만한게 없고 결과물도 재미없고 솔직히 노가다 위주임

  - 포커 : 엔진 기능 활용보다는 로직 구현의 비중이 높아서 제외함

  - 로컬 AI 구동 및 대화 : 컴퓨터 사양 제약도 심하고, 에셋 갖다 쓰는거라 사실 고도 자체랑은 별 관계도 없음