Godot's design philosophy

이제 당신은 손에 땀이 날 지경이니, Godot의 디자인 철학에 대해 얘기해 보겠습니다.

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games' structures. This all stems from their respective design philosophies.

이 페이지가 Godot의 작동방식을 이해하도록 돕기 위해, 여러 핵심 기둥들로 시작합니다. 이것은 사용가능한 기능의 목록이 아닐 뿐더러, 엔진을 비교하는 것도 아닙니다. 어떤 엔진이라도 당신의 프로젝트에 잘 맞들어지는지 알기 위해선, 당신이 스스로 시도하고 그것의 디자인과 한계를 이해해야합니다.

엔진의 기능에 관한 개요를 보고 싶다면 Discover Godot 3, the Free game engine 를 봐주세요.

객체 지향 디자인과 구성

Godot는 유연한 씬 시스템과 노드 계층 구조를 갖춘 객체 지향 디자인을 핵심으로 갖고 있습니다. 이것으로 엄격한 프로그래밍 패턴을 피하고 직관적인 방법으로 게임을 구성하도록 만들었습니다.

이를 위해 Godot는 당신이 씬을 조립하거나 집합하도록 만들었습니다. 이건 마치 중첩 물체같습니다: 당신이 깜박이는 빛 씬을 만들고 이 씬이 사용된 고장난 전봇대 씬을 만들었습니다. 그리고, 고장난 전봇대가 들어간 도시를 만듭니다. 깜박이는 빛의 색을 바꾸고, 저장해서, 도시의 모든 고장난 전봇대가 즉각적으로 업데이트될 것입니다.

무엇보다도, 당신이 어떤 씬에서든지 상속하는 것 이 가능합니다.

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you'd like. It works like a class in pure code, except you're free to design it by using the editor, using only the code, or mixing and matching the two.

It's different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game's design.

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 components like collision shapes, they're the exception, not the norm.

image1

Node2D의 Sprite, CanvasItem과 Node. 이 세 개의 부모 클래스는 모든 속성과 기능을 가지고 있습니다, 예를들면 변환이나 사용자 지정 모양을 그리고 쉐이더로 렌더하는 것이 있습니다.

모든 것이 들어있는 패키지

Godot는 가장 보편적인 요구들의 해답을 제공하고자 노력했습니다. 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는 Python과 유사한 문법을 사용하여 쉬운 코드를 사용하지만, 타입을 인지하고 정적 언어의 자동 완성 품질을 제공합니다. 또한 Vectors와 Colors 같은 내장 함수를 가지고 있어 게임플레이 코드에 최적화되어 있습니다.

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

image3

VisualScript는 노드 기반 프로그래밍 언어로 편집기에 잘 통합되어 있습니다. 노드나 리소스를 그래프로 드래그 앤 드롭하여 새 노드 블럭을 생성할 수 있습니다.

Note that the 3D workspace doesn't feature as many tools as the 2D workspace. You'll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor's functionality using game code. See The Godot editor is a Godot game below.

image4

Godot 엔진 2에서 kubecz3k님이 만드신 State Machine editor 플러그인입니다. 이걸로 당신은 시각적으로 상태와 변화를 다룰 수 있습니다.

오픈 소스

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they're developed from the ground up by contributors.

Anyone can plug in proprietary tools for the needs of their projects — they just won't ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

On the other hand, an open codebase means you can learn from and extend the engine to your heart's content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

주석

This does not affect the work you do with Godot in any way: there's no strings attached to the engine or anything you make with it.

커뮤니티 중심

Godot is made by its community, for the community, and for all game creators out there. It's the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you'll see improvements in all corners of the engine at the same time in every major release.

Godot 편집기는 Godot 게임입니다

The Godot editor runs on the game engine. It uses the engine's own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the editor.

이것은 편집기 자체에 권한을 부여하기 때문에 안정적이고 유연한 UI 시스템을 만듭니다. tool 키워드로 당신은 편집기에서 어떤 게임 코드도 실행시킬 수 있습니다.

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot's UI tools for its node-based programming system and for the rest of the interface.

tool 키워드를 GDscript 파일의 맨 위에 놓으면 편집기에서 파일이 실행될 것입니다. 이걸로 당신은 프로젝트에 쓰이는 것과 똑같은 노드와 API를 가지고 플러그인을 내보내거나 가져올 수 있고, 사용자 지정 레벨 편집기 같은 플러그인을 제작하거나, 스크립트를 만들 수 있습니다.

2D 와 3D 엔진을 분리함

Godot는 전용 2D 와 3D 렌더링 엔진을 제공합니다. 그 결과 2D 씬의 기본 단위는 픽셀입니다. 비록 엔진이 분리되더라도, 당신은 3D에서 2D를, 2D에서 3D를 렌더할 수 있고, 3D 월드에 2D 스프라이트와 인터페이스를 씌울 수 있습니다.