현생 일이 어느정도 안정되어가는 요즘.
본업(?)인 게임 개발로 돌아오기 위해서 시동걸다가 Godot이라는 개발 툴을 알게 되었다.
좀 훑어보니 너무 무거운 유니티와 너무 가벼운 알만툴 사이 어딘가에 위치한 엔진 같기도 하고,
개발자로서 기분 전환도 해보고 싶어서 이번 기회에 천천히 찍먹해보려고 한다.
그김에 티스토리 오블완 챌린지는 덤.
유튜브 튜토리얼을 볼 수도 있겠지만 일단은 공식 문서를 보면서 진행했다.
1. Godot이란 무엇인가?
Godot은 모든 종류의 프로젝트를 지원하도록 설계된 범용 2D 및 3D 게임 엔진이다.
모바일, 웹, 데스크톱 등 다양한 플랫폼에 출시할 수도 있다.
(개발자가 따로 포팅해야 하지만 콘솔 게임도 가능하다고 한다)
또한, 엔진 자체가 오픈 소스이므로 유니티, 언리얼 등과 달리 게임 출시 시에 따로 지출해야 할 비용이 없다.
모듈과 기능을 직접 추가해서 커스터마이징/업그레이드 할 수도 있다.
프로그래밍 주요 언어는 고도 전용 언어인 GDScript, 혹은 C#.
GDScript는 C# 같은 다용도 언어보다 더 간단하게 설계되었다고 한다. 프로그래밍 초보자에게 권장.
간단히 보니 js와 python을 섞은 느낌같음.
아래 링크에서 GDScript를 간단히 배울 수도 있다.
https://gdquest.github.io/learn-gdscript/?ref=godot-docs
2. 다운로드
홈페이지에서도 다운 받을 수 있지만 참고로 스팀에서도 설치할 수 있다. (!!!)
https://store.steampowered.com/app/404790/Godot_Engine/
3. Godot의 주요 개념
고도는 특정 기능이 담긴 노드를 층계구조로 연결한 다음, 그 정보를 Scene(화면. 장면)에 보여준다.
그리고 그렇게 연결된 노드들은 Signal(신호)를 통해 서로 커뮤니케이션한다.
1) 장면 Scenes
고도에서 만들어진 모든 요소는 재사용이 가능하도록 쪼갤 수 있다. 예를 들어 캐릭터, 무기, UI, 집, 전체 레벨 등등.
즉 유니티에서의 prefab과 scene 두 가지 역할을 수행할 수 있다.
2) 노드 Nodes
하나의 장면(scene)은 노드(Nodes)로 구성된다. 노드는 고도로 제작되는 게임의 가장 작은 구성 요소다.
참고로 2D 게임을 위한 노드와 3D 게임을 위한 노드가 나누어져 있다. (노드 이름 뒤에 2D, 3D가 붙음)
다만 여기서 주의할 점 : 에디터에서 node와 scene이 어떻게 보이는지 확인해줘야 한다.
왜냐하면 하나의 노드 구조를 scene으로 저장하게 되면, 하나의 node로 보이기 때문이다.
3) 장면 트리 Scene tree
게임의 모든 scene은 Scene tree에서 보인다.
4) 신호 Signal
노드는 어떤 이벤트가 발생하면 신호Signal를 내보낼 수 있다. 이걸 통해 노드끼리 굳이 연결하지 않아도 통신이 가능하다.
(이 부분은 예전 유니티 개발 때엔 없어서 따로 만들어주던 기능이라 잘 쓰면 꽤 유용할 거 같다)
이 외에도 UI 등등 설명이 있긴한데 이건 그냥 2D 예제 따라하면서 익혀보는 걸로.