개발 스냅샷: Godot 4.7 dev 3
요약
Godot 4.7의 세 번째 개발 스냅샷이 출시되었습니다. 이번 업데이트에서는 GUI 설계 방식을 개선할 수 있는 Control 노드의 변형 오프셋(transform offset) 기능과 PopupMenu의 검색 바 기능이 핵심적으로 추가되었습니다.
핵심 포인트
- Control 노드에 변형 오프셋(transform offset) 속성이 추가되어 컨테이너의 레이아웃에 영향을 주지 않고 시각적 변형(이동, 회전, 크기 조절)이 가능해졌습니다.
- 변형 오프셋은 기본적으로 시각적 효과로만 작동하여 마우스 입력(hover 등)에 영향을 주지 않도록 설정할 수 있습니다.
- PopupMenu에 검색 바가 구현되어 긴 목록에서도 특정 항목을 쉽고 빠르게 찾을 수 있는 사용성 개선이 이루어졌습니다.
- 웹, XR, 안드로이드 에디터에 대한 지원 및 테스트가 지속적으로 진행 중입니다.
지난 스냅샷에 이어, Godot 4.7이 될 버전의 세 번째 개발 스냅샷(development snapshot)이 출시되었습니다! 이번 스냅샷에는 오랫동안 기다려온 몇 가지 기능들이 포함되어 있으며, 그중 일부는 Godot에서 GUI를 설계하는 방식을 변화시킬 수도 있습니다. 언제나 그렇듯, 모든 것이 안정화될 수 있도록 가능한 한 많은 테스트가 필요합니다. 가능하다면 프로젝트를 재정적으로 지원하는 것을 고려해 주세요. Godot는 자원봉사자들과 소수의 유료 기여자 팀의 노력으로 유지됩니다. 여러분의 기부금은 그들의 작업을 후원하고, 그들이 프로젝트의 요구 사항에 온전히 집중할 수 있도록 보장하는 데 사용됩니다. 다운로드(Downloads) 섹션으로 이동하여 지금 바로 사용해 보거나, 이번 릴리스의 개선 사항에 대해 더 자세히 알아보려면 계속 읽어주세요. 이번 릴리스에서는 웹 에디터(Web editor), XR 에디터(XR editor), 또는 안드로이드 에디터(Android editor)를 시도해 볼 수도 있습니다. 후자(안드로이드 에디터)에 관심이 있다면, 프리릴리스 빌드(pre-release builds)에 접근할 수 있도록 저희 테스트 그룹에 가입을 요청해 주세요. 커버 일러스트는 Lucid Blocks의 작품으로, 꿈 같은 기이함과 난해한 생명체들이 넘쳐나는 신비로운 공간에서 탐험하고, 건설하며, 생존하는 게임입니다. Steam에서 게임을 구매할 수 있으며, Bluesky, YouTube 또는 Discord에서 개발자들을 팔로우할 수 있습니다.
하이라이트
GUI: Control 노드에 변형 오프셋(transform offset) 추가
Godot의 GUI 시스템에서 가장 오랫동안 기다려온 기능 중 하나는 컨테이너(container)의 나머지 부분에 영향을 주지 않고 Control 노드를 이동(translate), 회전(rotate) 또는 크기 조절(scale)할 수 있는 기능입니다. 이는 주로 애니메이션 목적으로 사용되며, 버튼이 뷰 안으로 부드럽게 슬라이드되어 들어오거나 크기 변화와 함께 서서히 사라지게 할 수 있습니다. 하지만 Godot의 다양한 컨테이너(Container) 노드들은 자식 노드들에 위치(position), 회전(rotation), 크기(scale)를 적용하므로, 자식의 변형(transform)에 가해진 모든 변경 사항은 컨테이너가 다시 정렬될 때(씬 트리(scene tree)에서 자식이 추가, 제거 또는 이동될 때 발생) 손실됩니다.
Timo Schwarzer가 GH-87081에서 구현한 새로운 변형 오프셋 (transform offset) 속성은 CSS의 변형 (transform) 속성과 유사하게, 이러한 제한 사항을 자체적으로 해결하는 것을 목표로 합니다. 변형 오프셋이 마우스 입력에 영향을 줄지 여부를 선택할 수 있습니다. 기본적으로 변형 오프셋은 순수하게 시각적이며, 이는 버튼이 변형된 후 호버 (hover) 상태를 잃을 위험이 없음을 의미합니다. 변형 오프셋이 적용된 컨트롤은 회색 점선 사각형으로 원래의 경계 상자 (bounding box)를 표시합니다.
GUI: PopupMenu에 검색 바 구현
복잡한 프로젝트를 제작하는 도구로서, Godot는 수십 개의 옵션(혹은 그 이상)을 선택해야 하는 팝업 (popup)에 익숙합니다. 증분 검색 (incremental search)을 사용하면 (해당 문자를 눌러) 특정 문자로 시작하는 첫 번째 항목에 초점을 맞출 수 있지만, 증분 검색은 실행 후 가시적인 피드백이 부족하여 사용하기 어려울 수 있습니다. 이 오래된 사용성 문제를 해결하기 위해, Alexander Streng는 GH-114236에서 PopupMenu에 검색 바를 추가했습니다. 이는 애니메이션, 스켈레톤 본 (skeleton bones), Resource 속성을 위한 인스펙터 (inspector) 드롭다운 등 긴 목록에서 특히 유용합니다. 가시적인 검색 바는 검색 기능을 더 쉽게 발견할 수 있게 하여 사용성 측면에서 이점을 제공합니다. 이 기능은 모든 PopupMenu 노드에서 사용할 수 있으므로, 게임이 아닌 애플리케이션과 같은 프로젝트에서도 사용할 수 있습니다.
에디터: 3D 에디터에 정점 스냅 (vertex snapping) 추가
3D 에디터의 사용성을 개선하기 위해 가장 간절히 기다려온 기능 중 하나가 마침 출시되었습니다! Robert Yevdokimov는 GH-117235에서 3D 에디터에 정점 스냅 (vertex snapping)을 구현했습니다. 이를 통해 선택 항목을 근처 노드의 정점 (vertex)에 스냅할 수 있으며, 이는 레벨 디자인을 수행하거나 모든 요소가 인접한 노드와 시각적으로 연결되도록 보장할 때 유용합니다. 정점 스냅을 사용하려면 B 키를 누른 상태에서 마우스를 선택 항목의 정점 근처로 이동하세요. 노란색 원이 나타나면 마우스 버튼을 누른 채 원하는 위치로 마우스를 이동하면 됩니다 (이 시점에서는 B 키를 떼어도 됩니다).
마우스 커서 근처에서 스냅(snap)할 정점(vertex)이 감지되면 원이 초록색으로 변합니다. 더 나은 깊이감을 위해, 노란색/초록색 원이 다른 표면에 의해 가려질 경우 불투명도가 낮아진 상태로 나타납니다. 정점 스냅(Vertex snapping)은 선택된 노드가 메시 기반 표현(mesh-based representation)을 갖는지 여부에 따라 다르게 작동합니다. 예를 들어, MeshInstance3D 및 CSG 노드는 메시 기반 표현을 갖지만, Label3D 및 Marker3D와 같은 다른 노드들은 그렇지 않습니다. 메시 기반 표현이 없는 노드는 B 키를 누른 상태에서 다른 노드의 정점을 클릭하면 강조된 정점으로 순간 이동(teleport)합니다. 후속 기여인 GH-117380 덕분에, 메시 기반 표현을 가진 노드에 대해서도 이 동작을 선택적으로 적용할 수 있습니다.
에디터: 원격 씬 뷰(remote scene view)에서 Object ID 대신 클래스 이름 사용
원격 씬 트리(remote scene tree)는 실행 중인 프로젝트에서 어떤 일이 일어나고 있는지 진단하는 데 매우 유용합니다. 하지만 지금까지는 모든 것이 익명처럼 보이는 일련의 Object ID로 표시되었습니다. Jayden Sipe는 GH-115738을 통해 클래스 이름을 추가함으로써 이 뷰를 개선하였고, 이 도구를 훨씬 더 유용하게 만들었습니다.
이전
이후
에디터: MeshLibrary를 위한 적절한 에디터 생성
GridMap 사용자들에게 기쁜 소식입니다! Michael Alexsander의 GH-117376 작업 덕분에, 이제 MeshLibrary 리소스(GridMap 노드에서 사용할 수 있는 타일을 저장함)를 훨씬 더 쉽게 편집할 수 있습니다. 이 새로운 하단 에디터에는 다음과 같은 기능이 포함됩니다:
- 검색 및 확대/축소가 가능한 그리드 형태의 아이템 표시
- 별도의 인스펙터(inspector)에서 개별 아이템 편집
- 모든 작업에 대한 완전한 실행 취소/다시 실행(undo/redo) 지원
- 특정 메시가 설정되지 않은 경우 해당 아이템의 메시를 대체 미리보기로 제공
다음은 그 모습의 예시입니다:
Android: Picture-in-picture 지원 추가
Fredia Huya-Kouadio의 GH-114505 작업 덕분에, 이제 Godot은 프로젝트를 실행하고 이를 화면 모서리 중 하나에 고정된 작은 창으로 이동시킬 수 있는 기능을 갖추게 되었습니다. 이는 Android의 네이티브 Picture-in-picture (PiP) 디스플레이 지원을 활용합니다.
예를 들어, Android의 YouTube는 이 기능을 사용하여 현재 재생 중인 비디오를 화면 구석에 표시합니다. 단, Picture-in-picture (PiP) 모드에서는 해당 모드 상태인 동안 애플리케이션과 상호작용할 수 없으므로, 이 기능은 실시간 입력이 필요하지 않은 섹션이 있는 애플리케이션이나 게임(방치형 게임 (idle games), 오토배틀러 (autobattlers) 등)에 가장 유용합니다. Picture-in-picture 기능은 두 가지 방식으로 활성화할 수 있습니다: DisplayServer.pip_mode_enter()를 호출하여 명시적으로 활성화하거나, DisplayServer.pip_mode_set_auto_enter_on_background()를 호출하여 자동으로 발생하도록 설정할 수 있습니다. 이 경우 사용자가 기기에서 홈 버튼을 누르거나 홈 제스처를 사용할 때 앱이 자동으로 Picture-in-picture 모드로 전환됩니다. 이 기능은 런타임 (runtime) 중에 토글할 수 있으므로, 컷신 (cutscene)이 시작될 때 Picture-in-picture 모드가 작동하도록 허용하고 상호작용 가능한 콘텐츠로 돌아올 때 비활성화하도록 설정할 수 있습니다. 게임 Rift Riff에서 이 기능이 실제로 작동하는 예시를 보면, PiP 모드는 게임의 웨이브 (wave) 중 하나에서만 활성화됩니다.
Android: 스크립트 에디터에서 화면 방향 전환 활성화
Android를 위한 개선 사항은 여기서 끝이 아닙니다. GH-117109에서 Anish Kumar의 작업 덕분에, 이제 Android 기기의 스크립트 에디터 (script editor)에서 세로 모드 (portrait mode)로 전환할 수 있습니다. 이를 통해 가상 키보드로 타이핑하는 동안 코드를 더 쉽게 볼 수 있습니다. 단, 이를 위해서는 방해 금지 모드 (distraction-free mode)가 활성화되어 있어야 합니다 (토글 가능). 사이드 독 (side docks)이 많은 가로 공간을 차지하기 때문에, 사이드 독이 보이는 상태에서 세로 모드의 스크립트 에디터를 사용하는 것은 실용적이지 않으므로 이 제한 사항이 적용되어야 합니다.
Linux/*BSD: HDR 출력 지원
Windows 및 Apple 플랫폼에서 HDR 출력 지원을 추가했던 이전 개발 스냅샷에 이어, Wayland 디스플레이 서버를 사용하는 Linux에서도 HDR 출력 지원을 추가했습니다 (GH-102987).
Windows 및 Apple PR과 더불어 1년 넘게 Wayland 지원을 개발하고 유지 관리하는 데 헌신해 준 ArchercatNEO에게 찬사를 보냅니다! 또한, HDR 출력에 관한 문서도 이제 확인할 수 있습니다. 확인해 보세요! HDR 출력을 테스트하기 위한 데모 프로젝트도 곧 추가될 예정입니다. 그리고 더 많은 것들이 있습니다! 여기에 모두 나열하기에는 너무나 흥미로운 변경 사항이 많지만, 엄선된 목록은 다음과 같습니다:
3D: CSG 노드에 자동 스무딩 (Automatic smoothing) 추가 (GH-116749).
애니메이션 (Animation): Animation Resource, Library, Mixer 및 Player 최적화 (GH-116394).
애니메이션 (Animation): AnimationTree 최적화, 내부 구조 및 Editor & Node::process_thread_group 안전성 개선 (GH-117277).
코어 (Core): Object 시그널 (Signals)의 스레드 안전성 (Thread-safety) 개선 (GH-117511).
코어 (Core): Tracy 통합을 위해 기본적으로 TRACY_ON_DEMAND 사용 (GH-117583).
에디터 (Editor): 에디터 3D 뷰 조작을 위한 View3DController 추가 (GH-115957).
에디터 (Editor): 3D 정점 스냅 (Vertex snap) 기준 설정 (Vertex/Origin) 추가 (GH-117380).
에디터 (Editor): 프로젝트 매니저 (Project Manager)에서 버전 불일치 표시 (GH-111528).
에디터 (Editor): PropertyListHelper에 의해 생성된 속성(Properties)에 대한 문서 생성 및 표시 (GH-115253).
에디터 (Editor): 출력 (Output) 도크 재구성 (GH-112690).
에디터 (Editor): 오토로드 (Autoload) 생성 방식 개편 (GH-91124).
에디터 (Editor): 기본적으로 자동 완성 (Autocomplete)이 단어를 삼키는 현상 방지 (GH-117464).
에디터 (Editor): 원격 씬 인스펙터 (Remote scene inspector)에서 폴딩 (Folding), 그룹 및 서브그룹 지원 (GH-117357).
GUI: RichTextLabel에 세 번 클릭하여 문단 선택 기능 추가 (GH-116868).
입력 (Input): 앱이 포커스를 잃었을 때 조이패드 (Joypad) 이벤트를 무시하는 프로젝트 설정 추가 (GH-115119).
플랫폼 (Platforms): 에디터에서 오른쪽 클릭을 길게 누를 때 햅틱 피드백 (Haptic feedback) 추가 (GH-117198).
플랫폼 (Platforms): Magnet이 실행 중인 경우 이벤트를 위한 웨이크 (Wake) 활성화 (GH-116524).
렌더링 (Rendering): Polygon2D에 패스트 패스 (Fast path) 추가 (GH-117334).
렌더링 (Rendering): 파티클 프로세스 (Particle process)에 3D 스케일 및 3D 회전 추가 (GH-112447).
변경 로그 (Changelog): 113명의 기여자가 이번 릴리스를 위해 297개의 수정 사항을 제출했습니다. 4.7-dev2 이후의 모든 변경 사항 목록은 대화형 변경 로그 (Interactive changelog)를 확인하세요.
또한 이전 4.6 기능 릴리스 (feature release)와 비교하여 4.7에 포함된 모든 변경 사항을 검토할 수 있습니다. 이 릴리스는 커밋(commit) 60fff00a6를 기반으로 빌드되었습니다.
다운로드
Godot 4.7 dev3
Linux Standard .NET
macOS Standard .NET
Windows Standard .NET
내보내기 템플릿 (Export templates) 및 기타 다운로드
기부하기
Godot는 여러분과 같은 분들의 기부 덕분에 존재합니다. 저희가 작업을 계속할 수 있도록 도와주세요: 기부하기
Standard 빌드는 GDScript 및 GDExtension 지원을 포함합니다. .NET 빌드 (mono로 표시됨)는 C#뿐만 아니라 GDScript 및 GDExtension 지원을 포함합니다.
엔진 유지 관리자(maintainers)들이 각 프리뷰 스냅샷(preview snapshot)과 릴리스 후보(release candidate)가 안정적이도록 최선을 다하고 있지만, 이는 정의상 프리릴리스 (pre-release) 소프트웨어입니다. 데이터 손상이나 손실이 발생할 경우를 대비하여 프로젝트를 보존할 수 있도록 자주 백업을 생성하거나 Git과 같은 버전 관리 시스템 (version control system)을 사용하십시오.
알려진 문제
모든 릴리스에는 이미 보고되었지만 아직 수정되지 않은 다양한 문제들이 있을 수 있음을 인지하고 있습니다. 알려진 버그의 전체 목록은 GitHub 이슈 트래커 (issue tracker)를 확인하세요. 현재 이 릴리스로 인해 발생한 알려진 문제는 없습니다.
버그 보고
테스터로서, 이 릴리스에서 문제를 경험하신다면 버그 보고를 해주실 것을 권장합니다. 먼저 GitHub에서 관련 키워드로 검색 기능을 사용하여, 경험하신 버그가 이미 알려진 것인지 확인해 주세요. 특히, 프로젝트에 회귀 (regression)를 일으키는 모든 변경 사항은 보고하는 것이 매우 중요합니다 (예: 이전 4.x 릴리스에서는 잘 작동했지만, 이 스냅샷에서는 더 이상 작동하지 않는 경우).
지원
Godot는 Godot 커뮤니티의 관대한 기부 덕분에 고용된 소수의 파트타임 및 풀타임 개발자뿐만 아니라, 수백 명의 기여자들이 여가 시간에 개발하는 비영리 오픈 소스 (open source) 게임 엔진입니다. 프로젝트에 시간이나 재정적 지원을 아끼지 않은 모든 분께 깊은 감사를 드립니다!
프로젝트를 재정적으로 지원하고 향후 채용을 확보하는 데 도움을 주고 싶다면, Godot Foundation에서 관리하는 Godot Development Fund 플랫폼을 통해 지원하실 수 있습니다. 또한 귀하에게 더 적합할 수 있는 몇 가지 다른 기부 방법들도 있습니다. 지금 기부하기
AI 자동 생성 콘텐츠
본 콘텐츠는 Godot Engine News의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기