Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Godot의 주요 개념 개요
모든 게임 엔진은 애플리케이션을 구축하는 데 사용하는 추상화 개념을 중심으로 동작합니다. Godot에서는 게임이 노드의 트리로 구성되며, 이러한 노드들을 씬으로 그룹화합니다. 그런 다음 이러한 노드들을 시그널을 사용하여 서로 통신할 수 있도록 연결할 수 있습니다.
엔진의 작동 방식에 대해 감을 잡기 위해 이 네 가지 개념을 간략히 살펴보겠습니다. 이 시리즈에서는 이러한 개념들을 실제로 활용할 수 있을 것입니다.
씬
Godot에서는 게임을 재사용 가능한 씬으로 구성합니다. 씬은 캐릭터, 무기, 사용자 인터페이스의 메뉴, 하나의 집, 전체 레벨 또는 상상할 수 있는 모든 것이 될 수 있습니다. Godot의 씬은 유연하며, 다른 일부 게임 엔진에서의 프리팹과 씬의 역할을 모두 수행합니다.
또한 씬을 중첩할 수도 있습니다. 예를 들어 캐릭터를 레벨에 배치하고, 씬을 해당 캐릭터의 자식으로 끌어다 놓을 수 있습니다.
노드
씬은 하나 이상의 노드로 구성됩니다. 노드는 게임의 가장 작은 구성 요소로, 이를 트리로 배열합니다. 다음은 캐릭터의 노드 예시입니다.
이것은 "Player"라는 이름의 CharacterBody2D 노드와 Camera2D, Sprite2D, 그리고 CollisionShape2D로 구성되어 있습니다.
참고
노드 이름은 2D 씬이기 때문에 "2D"로 끝납니다. 해당하는 3D 노드들은 이름이 "3D"로 끝납니다. Godot 4부터 "Spatial" 노드가 "Node3D"로 불린다는 점에 유의하세요.
노드와 씬이 편집기에서 동일하게 보인다는 점에 주목하세요. 노드 트리를 씬으로 저장하면, 편집기에서는 내부 구조가 숨겨진 단일 노드로 표시됩니다.
Godot는 결합하고 확장하여 보다 강력한 노드를 구축할 수 있는 광범위한 기본 노드 유형 라이브러리를 제공합니다. 2D, 3D 또는 사용자 인터페이스를 사용하면 대부분의 작업을 이 노드에서 수행할 수 있습니다.
씬 트리
게임의 모든 씬은 씬 트리에서 함께 구성됩니다. 씬은 노드 트리로 구성되기 때문에, 씬 트리도 노드 트리의 형태를 가지게 됩니다. 그러나 캐릭터, 무기, 문 또는 사용자 인터페이스와 같은 요소를 나타낼 수 있는 씬으로 게임을 생각하는 것이 더 쉬울 것입니다.
시그널
노드는 어떤 이벤트가 발생할 때 신호를 방출합니다. 이 기능을 통해 노드 간에 코드에서 직접 연결하지 않고도 통신할 수 있습니다. 이는 씬을 구성하는 방식에 대한 유연성을 제공합니다.
참고
시그널은 관찰자 패턴의 Godot 버전입니다. 자세한 내용은 여기에서 읽을 수 있습니다: http://gameprogrammingpatterns.com/observer.html
예를 들어, 버튼을 누를 때 시그널이 방출됩니다. 코드의 일부를 이 시그널에 연결하여 게임 시작이나 메뉴 열기와 같은 이 이벤트에 반응하여 실행할 수 있습니다.
다른 내장 시그널은 두 오브젝트가 충돌했을 때, 캐릭터나 몬스터가 주어진 영역에 들어왔을 때 등 다양한 상황을 알려줄 수 있습니다. 또한 게임에 맞게 새로운 시그널을 정의할 수 있습니다.
요약
노드, 씬, 씬 트리, 그리고 시그널은 Godot에서 항상 다루게 되는 네 가지 핵심 개념입니다.
노드는 게임의 가장 작은 구성 요소입니다. 이러한 노드들을 결합하여 씬을 만들고, 이를 결합하고 중첩하여 씬 트리를 구성합니다. 그런 다음 신호를 사용하여 노드를 다른 노드나 씬 트리의 다른 가지에서 발생하는 이벤트에 반응하도록 할 수 있습니다.
이 간략한 설명 이후에 여러분이 궁금증을 가질 수도 있습니다. 이 시리즈를 통해 많은 질문에 대한 답을 얻게 될 것이니 조금만 참고 계시기 바랍니다.