Godot의 디자인 철학

Now that you've gotten your feet wet, let's talk about Godot's design.

모든 게임 엔진은 다르며 서로 다른 요구사항에 알맞습니다. 다양한 기능을 제공할뿐만 아니라 각 엔진은 디자인도 독특합니다. 이는 게임의 구조를 형성하는 다양한 방법과 다양한 워크플로로 이어집니다. 게임 엔진의 디자인은 모두 각자의 디자인 철학에서 비롯되었습니다.

이 페이지는 Godot의 작동방식을 이해하도록 돕기 위해, 여러 핵심 기둥으로부터 시작합니다. 이 페이지는 사용가능한 기능의 목록이 아닐 뿐더러, 엔진을 비교하는 문서도 아닙니다. 프로젝트에 적합한 엔진이 있는지 확인하려면 여러분 스스로 시도하고 엔진의 디자인과 한계를 이해해야 합니다.

Please watch Godot explained in 5 minutes if you're looking for an overview of the engine's features.

객체 지향 디자인과 구성

Godot는 유연한 씬 시스템과 노드 계층 구조로 이루어진 객체 지향 디자인을 핵심으로 받아들입니다. 이로인해 엄격한 프로그래밍 패턴을 피하고 직관적인 방법으로 게임을 구성하도록 했습니다.

예를 들어 Godot를 사용하면 씬을 **구성하거나 집합**할 수 있습니다. 중첩된 조립식 건물과 같습니다. BrinkingLight 씬과 BrinkingLight를 사용하는 BrokenLantern 씬을 만들 수 있습니다. 그런 다음 BrokenLanterns로 가득 찬 도시를 만드세요. BrinkingLight의 색상을 변경하고 저장하면 도시의 모든 BrokenLanterns가 즉시 업데이트됩니다.

게다가 어떤 씬에서든지 상속할 수 있습니다.

Godot 씬은 무기, 캐릭터, 아이템, 문, 레벨, 레벨의 일부… 원하는 모든 것이 될 수 있습니다. 에디터를 사용하거나, 코드만 사용하거나, 둘을 혼합하여 일치시켜 자유롭게 디자인할 수 있다는 점을 제외하고는 순수 코드의 클래스처럼 작동합니다.

씬은 상속하고 확장할 수 있기 때문에 여러 3D 엔진에서 찾을 수 있는 프리팹(prefab)과는 다릅니다. 여러분은 여러분의 캐릭터를 확장해서 마술사(Magician)로 만들 수 있습니다. 에디터에서 캐릭터를 수정하면 Magician도 업데이트됩니다. 이는 구조가 게임 디자인과 일치하도록 프로젝트를 빌드하는 데 도움이 됩니다.

image0

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature some nodes like collision shapes that a parent physics body will use, most nodes work independently from one another.

In other words, Godot's nodes do not work like components in some other game engines.

image1

Sprite is a Node2D, a CanvasItem and a Node. It has all the properties and features of its three parent classes, like transforms or the ability to draw custom shapes and render with a custom shader.

올인원 패키지

Godot는 가장 일반적인 요구 사항을 위해 자체 툴을 제공하려고 합니다. 전용 스크립팅 작업 공간, 애니메이션 편집기, 타일맵 편집기, 셰이더 편집기, 디버거, 프로파일러, 로컬 및 원격 장치에서 핫 리로드 등의 기능이 있습니다.

image2

저희의 목표는 게임과 지속적인 사용자 경험을 만들기 위한 전체 패키지를 제공하는 것입니다. 가져오기 플러그인이 있는 한 외부 프로그램으로 계속 작업할 수 있습니다. 또는 Tiled Map Importer처럼 여러분이 하나를 만들 수도 있습니다.

That is also partly why Godot offers its own programming languages GDScript and VisualScript, along with C#. They're designed for the needs of game developers and game designers, and they're tightly integrated in the engine and the editor.

GDScript lets you write code using an indentation-based syntax, yet it detects types and offers a static language's quality of auto-completion. It is also optimized for gameplay code with built-in types like Vectors and Colors.

GDNative를 사용하면 엔진을 다시 컴파일하지 않고도 C, C++, Rust 또는 Python(Cython 컴파일러 사용)과 같은 컴파일된 언어를 사용해 고성능 코드를 작성할 수 있습니다.

image3

VisualScript는 편집기에 잘 통합된 노드 기반 프로그래밍 언어입니다. 노드나 리소스를 그래프에 끌어다 놓아서 새 코드 블록을 만들 수 있습니다.

3D 작업 공간에는 2D 작업 공간만큼 많은 툴이 없습니다. 지형을 편집하고 복잡한 캐릭터에 애니메이션을 적용하는 등의 작업을 수행하려면 외부 프로그램이나 추가 기능이 필요합니다. Godot는 게임 코드를 사용해 에디터의 기능을 확장하는 완전한 API를 제공합니다. 아래의 Godot 에디터는 Godot 게임입니다를 참조하세요.

image4

Godot 엔진 2에서 kubecz3k님이 제작해주신 State Machine editor 플러그인입니다. 이것으로 여러분은 시각적으로 상태와 변화를 다룰 수 있습니다.

오픈 소스

Godot는 MIT 라이선스에 따라 완전한 오픈 소스 코드베이스를 제공합니다. 이는 함께 제공되는 모든 기술도 (권리로서의 의미로) 무료여야 함을 의미합니다. 대부분의 경우 기여자에 의해 처음부터 개발되었습니다.

누구나 프로젝트의 요구에 맞게 독점 툴을 연결할 수 있습니다. 여기에는 Google 애드모빌 또는 FMOD가 포함될 수 있습니다. 이들 중 어떤 것들은 대신 서드 파티 플러그인으로 연결할 수 있습니다.

반면에 오픈 코드베이스는 엔진에서 배우고 확장할 수 있다는 것을 의미합니다. 또한 Godot는 오류가 엔진 자체에서 발생하더라도 스택 추적으로 오류를 출력하므로 게임을 쉽게 디버그할 수 있습니다.

참고

이것은 여러분이 Godot로 하는 작업에 어떤 식으로든 영향을 미치지 않습니다: 엔진은 여러분이 엔진으로 만드는 어떤 것과도 연결되어 있지 않습니다.

커뮤니티 중심

Godot는 커뮤니티에 의해, 커뮤니티를 위해, 모든 게임 제작자를 위해 만들어졌습니다. 핵심 업데이트를 주도하는 것은 사용자의 요구와 공개 토론입니다. 핵심 개발자들에 의해 개발되는 새로운 기능은 대부분의 사용자에게 가장 먼저 혜택을 주는 것에 초점을 맞추는 경우가 많습니다.

비록 소수의 핵심 개발자가 하루종일 작업하지만 지금 글을 적고 있는 시점에서 이 프로젝트에는 600명 이상의 기여자가 있습니다. 자비로운 프로그래머는 자신에게 필요할 수 있는 기능에 대해 작업하므로 모든 메이저 릴리스에서 동시에 엔진의 모든 부분에서 개선된 사항을 볼 수 있습니다.

Godot 에디터는 Godot 게임입니다

Godot 에디터는 게임 엔진에서 실행됩니다. 엔진의 자체 UI 시스템을 사용하므로 프로젝트를 테스트하거나 에디터에서 게임 코드를 실행할 때 코드와 씬을 핫 리로드할 수 있습니다. 즉, 게임에 동일한 코드와 씬을 사용하거나 플러그인을 빌드하고 에디터를 확장할 수 있습니다.

이는 에디터 자체에 전원을 공급하기 때문에 안정적이고 유연한 UI 시스템으로 이어집니다. tool 키워드를 사용하면 에디터에서 모든 게임 코드를 실행할 수 있습니다.

image5

RPG in a Box는 Godot 2로 만든 복셀 RPG 편집기입니다. 노드 기반 프로그래밍 시스템과 나머지 인터페이스에 Godot의 UI 툴을 사용합니다.

GDScript 파일의 맨 위에 tool 키워드를 넣으면 에디터에서 실행됩니다. 이를 통해 플러그인을 가져오거나 내보내고, 커스텀 에디터같은 플러그인을 생성하거나, 프로젝트에서 사용하는 것과 동일한 노드 및 API로 스크립트를 생성할 수 있습니다.

참고

The editor is fully written in C++ and is statically compiled into the binary. This means you can't import it as a typical project that would have a project.godot file.

2D 와 3D 엔진을 분리

Godot는 전용 2D 및 3D 렌더링 엔진을 제공합니다. 결과적으로 2D 씬의 기본 단위는 픽셀입니다. 엔진이 분리되어 있어도 2D를 3D로, 3D를 2D로 렌더링하고 2D 스프라이트와 인터페이스를 3D 세계에 오버레이할 수 있습니다.