개발 스냅샷: Godot 4.7 beta 1
요약
Godot 4.7의 첫 번째 베타 스냅샷이 공개되었습니다. 현재 기능 동결(feature-freeze) 상태로, 새로운 기능 추가 대신 버그 수정 및 회귀 수정(regression fixes)에 집중하고 있습니다.
핵심 포인트
- Godot 4.7 릴리스 사이클이 첫 번째 베타 단계에 진입함
- 현재 기능 동결 상태로, 새로운 기능 개발 대신 버그 사냥(bug-hunting)에 집중 권장
- Animation, Audio, Core 등 다양한 분야에서 파괴적 변경 사항(Breaking changes) 발생
- 웹, XR, Android 에디터 등 프리릴리스 빌드 테스트 가능
4.7 릴리스 사이클이 마침내 매우 중요한 이정표에 도달했습니다. 바로 첫 번째 베타 스냅샷입니다! 지난주 기능 동결 (feature-freeze)가 시작된 이후, 우리 사용자들은 매우 이른 시점에 버그를 잡는 놀라운 일을 해냈습니다. 아직 참여하지 않은 분들에게는 이제 회귀 수정 (regression fixes)에만 전적으로 집중해 주실 것을 더욱 권장합니다. 이 기간 동안 발생하는 모든 버그를 잡으려는 우리의 여정을 돕는 데 관심이 있는 분들을 위해, 다시 한번 버그 사냥 스프린트 (bug-hunting sprints)에 참여해 주시기를 권장합니다. 관심 있는 분은 더 자세한 정보를 위해 버그 분류 입문 (Bug Triage Introduction)을 읽어보시고, 개발자용 RocketChat의 #bugsquad 및 #bugsquad-sprints 채널에 참여하여 참여해 주세요. 가능하다면 프로젝트를 재정적으로 지원하는 것을 고려해 주세요. Godot는 자원봉사자들과 소수의 유급 기여자 팀의 노력으로 유지됩니다. 여러분의 기부금은 그들의 작업을 후원하고, 그들이 프로젝트의 요구 사항에 온전히 집중할 수 있도록 보장하는 데 사용됩니다. 다운로드 (Downloads) 섹션으로 이동하여 지금 바로 사용해 보거나, 이번 릴리스의 개선 사항에 대해 더 자세히 알아보려면 계속 읽어주세요. 이번 릴리스의 웹 에디터 (Web editor), XR 에디터 (XR editor), 또는 Android 에디터 (Android editor)를 시도해 볼 수도 있습니다. 후자에 관심이 있다면, 프리릴리스 빌드 (pre-release builds)에 접근할 수 있도록 테스트 그룹 가입을 요청해 주세요. 커버 일러스트는 어둡고 고대의 장소로 수천 미터 아래를 파고드는 공포 클라이밍 게임인 Idols of Ash의 것입니다. 당신의 존재는 알려져 있으며, 당신은 환영받지 못합니다. Steam 또는 itch.io에서 게임을 구매할 수 있으며, Bluesky, YouTube 또는 itch.io에서 개발자들을 팔로우할 수 있습니다.
주요 사항
우리의 개발 스냅샷을 면밀히 따라오신 분들이라면, 이전 기사들 (dev 1, dev 2, dev 3, dev 4, dev 5)에서 이미 다루었던 이 게시물의 여러 주요 사항에 익숙하실 것입니다. 현재 기능 동결 (feature freeze) 상태이므로, dev 5와 비교하여 다룰 새로운 기능은 없습니다.
대신, Godot 4.7 전체에서 기대할 수 있는 사항들을 전반적으로 정리하고, 이전 스냅샷에서 미처 강조하지 못했던 몇 가지 추가 사항들을 확장하여 다루도록 하겠습니다.
파괴적 변경 사항 (Breaking changes)
Animation
Core
buildsystem
Editor
GDExtension
GDScript
GUI
Input
Physics
Platforms
Rendering and shaders
파괴적 변경 사항 (Breaking changes)
우리는 파괴적 변경 사항을 최소화하려고 노력하지만, 때로는 우선순위가 높은 문제를 해결하기 위해 변경이 불가피할 때가 있습니다. 호환성을 깨뜨리는 경우에는 변경 사항을 최소화하고 사용자 프로젝트에서 수정해야 할 부분을 줄이기 위해 최선을 다하고 있습니다. breaks compat 라벨이 붙은 4.7 마일스톤(milestone) 내 병합된 PR(Pull Request)들을 필터링하여 해당 문제 목록을 확인할 수 있습니다.
- Animation: BlendSpace 포인트의 이름/인덱스를 표시하고 설정할 수 있는 기능 추가 (GH-110369).
- Audio: Spectrum Analyzer 이펙트가 지터링(jittered)된 값을 반환하는 문제 수정 (GH-114355).
- Audio: 3D에서 여러 뷰포트(viewport)를 사용할 때의 볼륨 계산 문제 수정 (GH-114080).
- Core: 새로운 오버로드(overloads)가 포인터 대신 태그를 사용하도록 변경 (GH-112035). 비전형적인 초기화 방식에 의존하는 모듈에만 해당됩니다.
- GDExtension: Object::ConnectFlags를 enum 대신 비트필드(bitfield)로 바인딩 (GH-109892).
- GDScript: 배열/딕셔너리를 포함한 상수 표현식(constant expressions)의 평가 방식 개선 (GH-113228).
- GUI: RichTextLabel에서 폰트 크기에 비례하여 이미지를 스케일링하는 옵션 추가 (GH-112617).
- Input: 키보드 및 마우스 입력 이벤트에 장치 ID(device IDs) 추가 (GH-116274).
- Jolt Physics: Area3D가 SoftBody3D를 감지하거나 영향을 줄 수 있는 기능 추가 (GH-114198). Jolt Physics를 사용할 때 Area3D가 SoftBody3D와의 중첩(overlaps)을 보고하게 되므로, 원치 않는 경우 충돌 레이어/마스크(collision layers/masks)를 재조정해야 할 수도 있습니다.
- Jolt Physics: SoftBody3D의 기본 질량을 1kg으로 설정하고 강성(stiffness) 변환 수정 (GH-116041). 여러 문제를 해결하고 Godot Physics와 일관성을 높여주지만, 모든 SoftBody3D 인스턴스의 파라미터를 재조정해야 합니다.
- Particles: 각속도(angular velocity) 수정 (GH-117861).
기능을 기존에 문서화되어 있던 방식과 일치하도록 조정합니다.
플랫폼 (Platforms):
- Android: 지원이 중단된 (deprecated) Google Play OBB 지원을 제거합니다 (GH-118283).
셰이더 (Shaders):
- 셰이더 전처리기 (shader preprocessor) 내의 조건 파싱 (condition parsing)을 제한합니다 (GH-117173).
애니메이션 (Animation):
Tomasz Chabora는 dev 2 블로그 포스트에서 실제로 언급하는 것을 놓쳤던 기능인 AwaitTweener를 소개하며 쇼케이스를 시작합니다. GH-79712에서 유래하여 거의 3년 동안 작업이 진행된 PR(Pull Request)을 통해, 이제 트위너 (tweeners)는 원하는 동작을 수행하기 위해 특정 시그널 (signal)이 방출되기를 기다릴 (await) 수 있습니다:
extends RigidBody2D
func _ready () -> void :
var tween : = create_tween ()
tween . set_process_mode ( Tween . TWEEN_PROCESS_PHYSICS )
tween . tween_property ( self , ^ "modulate" , Color . RED , 1.0 )
tween . tween_property ( self , ^ "freeze" , false , 0 )
tween . tween_await ( $ "../Area2D" . body_entered )
tween . tween_callback ( queue_free )
Malcolm Anderson은 GH-113479를 통해 애니메이션 트랙 에디터 (animation track editor)를 개선하여 사용자가 그룹을 접을 수 있도록(collapse) 했습니다. 이 간단한 변화는 애니메이션 트리 (animation trees)가 도달할 수 있는 터무니없는 크기를 다루는 사용자들에게 즉각적인 공감을 불러일으킬 것이며, 그 혜택은 모든 크기에서 체감될 수 있습니다.
기타 사항:
- 애니메이션: 애니메이션 리소스 (Animation Resource), 라이브러리 (Library), 믹서 (Mixer) 및 플레이어 (Player) 최적화 (GH-116394).
- 애니메이션: 애니메이션 트리 (AnimationTree) 최적화, 내부 구조 및 에디터 개선, Node::process_thread_group 안정성 향상 (GH-117277).
코어 및 빌드 시스템 (Core and buildsystem):
코드베이스 전반에 걸쳐 컴파일 시간 (compilation times)을 단축하기 위한 공동의 노력이 이루어졌습니다. 이 트래커에서 Lukas Tenbrink가 주도한 결과, 빌드가 완료되는 속도가 극적으로 향상되었습니다! 이 대의에 기여했을 뿐만 아니라 우리의 툴링 (tooling)과 탐지 방법 개선을 도와준 Rémi Verschelde, Thaddeus Crews, Enzo Novoselic에게 특별히 감사드립니다. 이러한 종류의 변화는 블로그 포스트에서 보여주기 어렵지만, 엔진을 직접 컴파일하는 분들이라면 이러한 혜택을 직접 경험하셨기를 바랍니다.
기타 사항:
-
빌드 시스템 (Buildsystem): SCons: 웹 빌드에서 wasm64 지원 활성화 (GH-102378).
-
Object 시그널 (signals)의 스레드 안전성 (thread-safety) 개선 (GH-117511).
-
PCKPacker: 버퍼 (buffer)에서 파일을 추가하는 메서드 추가 (GH-108830). Tracy 통합을 위해 기본적으로 TRACY_ON_DEMAND 사용 (GH-117583).
-
오디오 (Audio): 오디오 버스 (audio bus) UI 개편 (GH-118266).
-
에디터 (Editor) 개발자 Gustavo Jaruga Cruz는 GH-102085를 통해 3D 에디터에 Path3D 콜라이더 스냅 (collider snapping) 기능을 추가하는 등 많은 개선을 이루어냈습니다. 이제 경로 (paths)를 생성하고 편집할 때, 단순히 공간에 임의로 점을 찍는 대신 마우스가 올려져 있는 콜라이더에 경로를 스냅할 수 있는 옵션이 제공됩니다. 아래 클립에서 보여지듯, 이 동작은 Path3D 옵션 메뉴에서 토글 (toggle)할 수 있습니다.
-
Robert Yevdokimov는 GH-117235를 통해 정점 스냅 (vertex snapping) 지원을 추가하며 3D 에디터 개선을 이어갔습니다. 이를 통해 선택 항목을 근처 노드 (nodes)의 정점에 스냅할 수 있으며, 이는 레벨 디자인 (level design) 시 모든 요소가 인접한 노드와 시각적으로 연결되도록 보장하는 데 유용합니다. 정점 스냅을 사용하려면 B 키를 누른 상태에서 마우스를 선택 항목의 정점 근처로 이동하세요. 노란색 원이 나타나면 마우스 버튼을 누른 채 원하는 위치로 마우스를 이동하면 됩니다 (이 시점에서 B 키를 떼어도 됩니다). 마우스 커서 근처에서 스냅할 정점이 감지되면 원이 초록색으로 변합니다. 더 나은 깊이 인지 (depth perception)를 위해, 노란색/초록색 원이 다른 표면에 의해 가려질 경우 불투명도가 낮아진 상태로 나타납니다. 정점 스냅은 선택된 노드가 메시 기반 표현 (mesh-based representation)을 갖는지 여부에 따라 다르게 작동합니다. 예를 들어, MeshInstance3D 및 CSG 노드는 메시 기반 표현을 갖지만, Label3D 및 Marker3D와 같은 다른 노드들은 그렇지 않습니다. 메시 기반 표현이 없는 노드는 B 키를 누른 상태에서 다른 노드의 정점을 클릭하면 강조된 정점으로 순간 이동 (teleport)합니다. 후속 기여인 GH-117380 덕분에, 메시 기반 표현을 가진 노드에 대해서도 이 동작을 선택적으로 적용할 수 있습니다.
-
Raphaël Daubelcour의 GH-111469 작업은 에디터의 매우 요청이 많았던 기능인 전체 섹션 및 카테고리에서 데이터를 복사하고 붙여넣을 수 있는 기능을 구현해냈습니다.
이제 특정 속성(property)의 개별 세그먼트에서 데이터를 복사하여 하나씩 붙여넣는 대신, 이 프로세스를 단일 작업으로 처리할 수 있습니다. Malcolm은 고정폭 코드 이름(monospaced code names) 형태의 또 다른 요청이 많았던 기능(GH-112219)을 구현했습니다. 코드와 유사한 데이터(메서드(methods), 시그널(signals), 속성(properties) 등)가 그 맥락을 나타내는 폰트로 표현될 때, 특히 다른 모든 정보에 표준 폰트를 함께 사용할 경우 UI의 가독성이 얼마나 향상되는지 보시면 놀라실 것입니다. 이전 동작은 에디터 설정의 Interface > Theme > Use Monospace Font for Editor Symbols 옵션을 토글하여 복구할 수 있습니다. Jayden Sipe는 GH-115738을 통해 클래스 이름(class names)을 추가함으로써 원격 씬 트리 뷰(remote scene tree view)를 개선했습니다. 이는 사용자가 익명처럼 보이는 오브젝트 ID(Object IDs) 대신 오브젝트를 직접 확인할 수 있음을 의미합니다. Michael Alexsander는 GH-112992를 통해 에셋 스토어(asset store)의 업데이트된 비주얼과 API를 도입하기 위해 열심히 작업해 왔습니다. 에셋 항목 자체를 파싱하기가 더 쉬워질 뿐만 아니라, 더 많은 메타데이터(metadata)와 현재 평점을 즉시 확인할 수 있습니다. 에셋을 개별적으로 접근할 때, 현재 설명과 모든 기존 변경 로그(changelogs)에 즉시 접근할 수 있습니다. 게다가 에셋의 버전을 변경하는 기능도 이제 클릭 한 번으로 가능합니다. Michael의 작업은 여기서 멈추지 않았습니다. MeshLibrary 또한 GH-117376을 통해 완전히 새로운 하단 에디터(bottom editor) 형태의 유사한 QOL(Quality of Life) 업데이트를 받았습니다. 이제 항목들은 검색 및 확대/축소 기능이 포함된 그리드(grid)에 표시되며, 개별 항목의 커스터마이징을 가능하게 하는 별도의 인스펙터(inspector)가 함께 제공됩니다. 모든 작업에 대한 완전한 실행 취소/다시 실행(undo/redo) 지원과, 별도로 지정된 것이 없을 경우 항목의 메시(mesh)로 대체되는 미리보기 기능 덕분에 출시와 동시에 완성된 패키지를 갖추게 되었습니다. 오랫동안 Godot에는 2D 씬(scenes)에 오브젝트를 쉽게 배치할 수 있는 방법이 부족했습니다. TileMap에 씬 타일(scene tiles)이 존재하기는 하지만, 배치된 씬의 속성(properties)을 변경할 방법이 없다는 점이 가장 두드러진 수많은 제한 사항 중 하나였습니다.
GH-109360을 통해 Dexter가 도입한 새로운 Scene Paint 도구는 씬을 쉽게 페인팅할 수 있게 해줍니다. 그리드 스냅(grid snapping)을 지원하여 씬 인스턴스(scene instances)를 빠르게 그리거나 지울 수 있습니다. 또한 인스턴스를 인스펙터(inspector)에서 미리 설정할 수 있어, 회전된 인스턴스나 이와 유사한 복잡한 구성을 배치하기가 용이합니다. Tomasz는 두 가지 마지막 QOL(Quality of Life, 편의성) 개선 사항과 함께 이 방대한 섹션을 마무리합니다. 첫 번째는 GH-118008을 통해 인스펙터에서 배열(arrays)이 표시되는 방식에 적용된 단순하지만 명백한 개선 사항으로, 공백이 낭비되지 않도록 보장합니다. 두 번째는 에디터에서 내보내기 템플릿(export templates)을 받는 방식의 개선입니다. 그동안 템플릿을 일괄(bulk)로 다운로드해야 했던 점은 오랫동안 골칫거리였습니다. Alex2782는 일괄 패키지 자체에서 슬라이스(slices)를 가져오는 영리한 해결 방법을 발견했으며, 이는 Tomasz에 의해 GH-117072에서 C++로 포팅되었습니다. 이를 통해 개발자가 명시적으로 요청하는 내보내기 템플릿만 다운로드하게 됩니다.
기타 사항:
2D: 씬 페인터(scene painter) 도구 추가 (GH-109360).
2D: TileSet 에디터 프록시 객체(proxy objects) 재작업 (GH-117574).
3D: Center Selection을 두 번 사용하여 3D 에디터에 “Follow Selection” 기능 추가 (GH-99499).
3D: CSG 노드에 자동 스무딩(automatic smoothing) 추가 (GH-116749).
3D: 3D 자(ruler) 도구에 벡터 구성 요소(vector components) 추가 (GH-106785).
에디터 3D 뷰 조작을 위한 View3DController 추가 (GH-115957).
3D 정점 스냅(vertex snap) 기본 설정(Vertex/Origin) 추가 (GH-117380).
커서가 위치한 단어에 대한 문서 툴팁(documentation tooltip)을 표시하는 스크립트 에디터 단축키 추가 (GH-115767).
Visual Profiler 트리에 폴딩(folding) 기능 추가 (GH-118120).
생성 대화 상자에 타입 필터(type filters) 추가 (GH-111518).
서브기즈모(subgizmo) 포인트에 정점 스냅(vertex snap) 지원 추가 (GH-117922).
프로젝트 매니저(Project Manager)에서 버전 불일치 표시 (GH-111528).
PropertyListHelper에 의해 생성된 속성(properties)에 대한 문서 생성 및 표시 (GH-115253).
메인 에디터 창에서 렌더러 선택기(renderer selector)를 숨기고 에디터 설정 추가 (GH-117754).
내장 도움말(built-in help)의 외관 개선 (GH-107597).
Remote/Local SceneTreeDock 버튼의 외관 개선 (GH-118192). 포커스가 맞지 않은 씬 탭(scene tabs)에서 우클릭이 가능하도록 수정 (GH-112919). 트리 크기 계산 및 씬 트리 독(scene tree dock) 필터 최적화 (GH-110759). 출력(Output) 독 재구성 (GH-112690). 오토로드(autoload) 생성 방식 개편 (GH-91124). 원격 인스펙터(remote inspector)에서 커스텀 클래스 이름 표시 (GH-108208). 자동 완성(autocomplete)이 기본적으로 단어를 삼켜버리는 현상 방지 (GH-117464). 원격 씬 인스펙터(remote scene inspector)에서 폴딩(folding), 그룹(groups) 및 하위 그룹(subgroups) 지원 (GH-117357). 리스트에서 스크립트로 이동하는 기능 지원 (GH-112796). onready 변수를 드롭할 때 부모 스크립트의 커스텀 타입을 고려하도록 수정 (GH-115158). GDExtension: 이제 GDExtension을 에디터에서 직접 확인할 수 있습니다. GH-118063의 Aaron Franke 덕분에, 사용자들은
AI 자동 생성 콘텐츠
본 콘텐츠는 Godot Engine News의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기