Godot 느낌

open.note·2024년 2월 20일

2022.8.8 티스토리 글 복사

무료 오픈소스 게임 엔진으로 눈에 띈 고도를 며칠간 만져보았다.
홈페이지에 있는 2D, 3D 튜토리얼을 따라 만들어보면서 느낀점과 큰 특징들을 간략히 써놓으려고 한다.

노드

일단 한눈에 모든 작업창이 보이고 심플하다.

유니티에서 오브젝트+컴포넌트+스크립트 로 구성되는 방식과 유사하다.

고도에선 씬 + 부모노드 + 자식노드 + 스크립트라고 보면 비슷한거 같다.

새 프로젝트를 만들고

새 씬을 만들어서 메인이될 부모노드를 가지고 거기에 추가로 구현 할 여러 자식노드들을 붙인다.

KinematicBody + CollisionShape + MeshInstance + 3DMesh

이런느낌으로 충돌체 구현과 메쉬를 연결하고 스크립트를 통해서 상호 규칙성을 만들어나간다.

시그널

유니티에서 이벤트, 트리거들은

고도에서 시그널이라는 이름으로 구현된다.

어떤 공간에 들어갔을때 반응이 일어나도록 한다는 규칙을 만들때 유용하게 쓰인다.

시그널의 연결방식이 노드에서 메인노드로 연결하면 스크립트에 자동으로 함수가 생성되고 에디터 앞쪽에도 연결됨 표시가 있어서 직관적이란 느낌이 들어서 좋았다.

애니메이션

애니메이션의 경우는 유니티와 거의 유사하게 애니메이션을 위한 컨트롤러가 있고...

애니메이션트리라는 노드를 통해서 동작애니메이션 간의 연결을 할수 있도록 되어있다.

UI

점수 표시, 사운드, 재시작 등 Control Node 로 만듬

메인씬에 플레이어나 몹, UI 을 인스턴스화 해서 연결함, AudioStreamPlayer노드 등을 추가해서 하나의 씬 구성을 마친다.

씬과 씬은 씬트렌스퍼노드가 있다.

HUD 에서 Main 으로 연결 ( 인스턴스화 )

start game 버튼을 클릭시 --- 시그널 발생 ---> Main 에 new_game() 함수의 실행 -----> 플레이어의 위치, 타이머의 시작, HUD의 스코어의 업데이트 동기화 등이 일어나도록 함
( 데이터의 흐름 )

그룹 기능

유니티의 태그 기능 처럼 오브젝트들을 그룹핑을 통해서 좀 더 쉽게 구분하는 방식을 사용하도록 함

3D 오브젝트

3d 파일은 블렌더 등에서 gltf(glb) export 를 통해서 고도에서 불러와짐.

다른엔진에선 fbx 가 보통인데 고도는 플러그인을 통해서 fbx도 임포트 되는것으로 보임.

키보드 입력

유티니의 인풋시스템 처럼 고도에도 인풋맵이라는 시스템이 똑같이 있음

스크립트

GDscript 를 쓰는데 파이썬과 유사함 블록도 없고 인덴트로 대신함

mono 버전을 쓰면 C#도 지원함

인터프리터 방식이라서 컴파일이 없어서 편함

유니티 => start 와 update 는

고도 => _ready 와 _process 로 표현 됨

앞으로 게임을 만든데 들어가는 시스템별로 구현 해본 내용들을 올려보도록 하자

0개의 댓글