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.

다양한 해상도

전환(transition) 유형

개발자는 게임에서 다양한 해상도를 가장 효과적으로 지원하는 방법을 이해하는 데 어려움을 겪는 경우가 많습니다. 데스크톱 및 콘솔 게임의 경우 대부분의 화면 종횡비가 16:9이고 해상도가 표준(720p, 1080p, 1440p, 4K 등)이므로 이는 다소 간단합니다.

모바일 게임은 처음에는 쉬웠어요. 수년 동안 iPhone과 iPad는 동일한 해상도를 사용했습니다. *Retina*가 구현되었을 때 픽셀 밀도는 두 배로 늘어났습니다. 대부분의 개발자는 기본 및 이중 해상도로 자산을 제공해야 했습니다.

요즘에는 화면 크기, 밀도, 종횡비가 다양하기 때문에 더 이상 그렇지 않습니다. 울트라와이드 디스플레이와 같이 기존에 없던 크기도 점차 인기를 얻고 있습니다.

3D 렌더링의 경우 여러 해상도를 지원할 필요가 별로 없습니다. 벡터 기반 특성 덕분에 3D 형상은 뷰포트 크기에 따라 화면을 채웁니다. 2D 및 게임 UI의 경우 Photoshop, GIMP 또는 Krita와 같은 소프트웨어에서 특정 픽셀 크기를 사용하여 아트를 만들어야 하기 때문에 이는 다른 문제입니다.

레이아웃, 종횡비, 해상도, 픽셀 밀도가 너무 많이 변경될 수 있으므로 더 이상 모든 특정 화면에 대한 UI를 디자인하는 것은 불가능합니다. 다른 방법을 사용해야 합니다.

하나의 사이즈로 모든 용도에 적합

가장 일반적인 접근 방식은 단일 기본 해상도를 사용한 다음 이를 다른 모든 것에 맞추는 것입니다. 이 해상도는 하드웨어를 고려하여 대부분의 플레이어가 게임을 플레이하는 방식입니다. 모바일의 경우 Google은 온라인에서 유용한 `통계 <https://developer.android.com/about/dashboards>`_를 제공하고 데스크톱의 경우 Steam `도 <https://store.steampowered.com/hwsurvey/>`_을 제공합니다.

예를 들어 Steam에서는 가장 일반적인 *기본 디스플레이 해상도*가 1920×1080임을 보여 주므로 이 해상도에 맞는 게임을 개발한 다음 다양한 크기와 종횡비에 대한 크기 조정을 처리하는 것이 현명한 접근 방식입니다.

Godot는 이를 쉽게 수행할 수 있는 몇 가지 유용한 도구를 제공합니다.

더 보기

이 문서 외에 여러가지 Godot 데모 프로젝트들도 살펴보면 좋습니다.

기본 크기

창의 기본 크기는 표시 → 창 아래의 프로젝트 설정에서 지정할 수 있습니다.

../../_images/screenres.webp

그러나 그것이 무엇을 하는지는 완전히 명확하지 않습니다. 엔진은 모니터를 이 해상도로 전환하려고 시도하지 않습니다. 오히려 이 설정을 "디자인 크기", 즉 편집기에서 작업하는 영역의 크기로 생각하십시오. 이 설정은 2D 편집기의 파란색 직사각형 크기에 직접적으로 해당합니다.

이 기본 크기와 다른 화면 및 창 크기를 가진 장치를 지원해야 하는 경우가 종종 있습니다. Godot는 뷰포트의 크기를 조정하고 다양한 화면 크기로 늘리는 방법을 제어하는 다양한 방법을 제공합니다.

참고

이 페이지에서 창*은 시스템에서 게임에 할당한 화면 영역을 나타내고, *뷰포트*는 이 화면 영역을 채우기 위해 게임이 제어하는 루트 개체(``get_tree().root``에서 액세스 가능)를 나타냅니다. 이 뷰포트는 :ref:`Window <class_Window>` 인스턴스입니다. :ref:`introduction <doc_viewports>`에서 *모든 Window 개체가 뷰포트라는 점을 상기해 보세요.

스크립트에서 런타임 시 스트레치 기본 크기를 구성하려면 get_tree().root.content_scale_size 속성을 사용합니다(Window.content_scale_size 참조). 이 값을 변경하면 2D 요소의 크기가 간접적으로 변경될 수 있습니다. 그러나 사용자가 접근할 수 있는 스케일링 옵션을 제공하려면 :ref:`doc_multiple_resolutions_stretch_scale`를 사용하는 것이 조정하기 더 쉽기 때문에 권장됩니다.

참고

Godot는 다양한 해결 방법에 대한 현대적인 접근 방식을 따릅니다. 엔진은 모니터의 해상도를 자체적으로 변경하지 않습니다. 모니터 해상도를 변경하는 것이 가장 효율적인 접근 방식이기는 하지만, 게임이 충돌할 경우 모니터가 낮은 해상도에 머물게 될 수 있으므로 신뢰성이 가장 낮은 접근 방식이기도 합니다. 이는 Windows뿐만 아니라 해상도 변경을 처리하지 않는 macOS 또는 Linux에서 특히 일반적입니다.

모니터 해상도를 변경하면 필터링 및 종횡비 확장에 대한 게임 개발자의 제어권도 없어집니다. 이는 픽셀 아트 게임의 올바른 표시를 보장하는 데 중요할 수 있습니다.

게다가 모니터 해상도를 변경하면 Alt 키를 누른 채 게임에 들어가고 나가는 속도가 훨씬 느려집니다. 이 작업이 수행될 때마다 모니터의 해상도가 변경되어야 하기 때문입니다.

크기 조정

여러 유형의 화면이 있는 여러 유형의 장치가 있으며, 각 유형의 화면은 서로 다른 픽셀 밀도와 해상도를 갖습니다. 이들 모두를 처리하는 것은 많은 작업이 될 수 있으므로 Godot는 개발자의 삶을 조금 더 쉽게 만들려고 노력합니다. 뷰포트 노드에는 크기 조정을 처리하는 여러 기능이 있으며 씬 트리의 루트 노드는 항상 뷰포트입니다(로드된 장면은 해당 장면의 하위로 인스턴스화되며 호출을 통해 항상 액세스할 수 있습니다). get_tree().root 또는 get_node("/root")).

어쨌든 루트 뷰포트 매개변수를 변경하는 것이 문제를 처리하는 가장 유연한 방법일 수 있지만 많은 작업, 코드 및 추측이 필요할 수 있으므로 Godot는 여러 해상도를 처리하기 위해 프로젝트 설정에서 매개변수 세트를 제공합니다.

(별도의 뷰포트 없이) 2D 요소보다 낮은 해상도로 3D를 렌더링하려면 Godot의 solution scanning 지원을 사용할 수 있습니다. 이는 GPU 병목 현상이 발생하는 시나리오에서 성능을 크게 향상시킬 수 있는 좋은 방법입니다. 이는 모든 스트레치 모드 및 스트레치 측면 조합에서 작동합니다.

늘이기 설정

참고

When testing different stretch modes and stretch aspect settings, make sure game embedding is configured to use the Stretch to Fit scaling option:

../../_images/multiple_resolutions_game_embedding_size_dropdown.webp

This ensures the viewport size always matches the window size, like when game embedding is disabled.

늘이기 설정은 프로젝트 설정에 있으며 다음과 같은 여러 옵션을 제공합니다.

../../_images/stretchsettings.webp

늘이기 모드

늘이기 모드 설정은 창이나 화면의 해상도에 맞게 기본 크기를 늘리는 방법을 정의합니다. 아래 애니메이션은 다양한 늘이기 모드의 효과를 보여주기 위해 16×9 픽셀의 "기본 크기"를 사용합니다. 역시 16×9 픽셀 크기의 단일 스프라이트는 전체 뷰포트를 덮고 대각선 :ref:`Line2D <class_Line2D>`이 그 위에 추가됩니다.

../../_images/stretch_demo_scene.png
  • 스트레치 모드 = 비활성화됨**(기본값): 스트레칭이 발생하지 않습니다. 씬의 한 단위는 화면의 한 픽셀에 해당합니다. 이 모드에서는 **Stretch Aspect 설정이 적용되지 않습니다.

    ../../_images/stretch_disabled_expand.gif
  • 늘이기 모드 = 캔버스 항목: 이 모드에서는 프로젝트 설정에서 너비와 높이에 지정된 기본 크기가 전체 화면을 덮도록 늘어납니다(Stretch Aspect 설정을 고려). 이는 모든 것이 대상 해상도에서 직접 렌더링된다는 것을 의미합니다. 3D는 영향을 받지 않지만 2D에서는 더 이상 스프라이트 픽셀과 화면 픽셀 간의 1:1 대응이 없으므로 크기 조정 아티팩트가 발생할 수 있습니다.

    ../../_images/stretch_2d_expand.gif
  • 늘이기 모드 = 뷰포트: 뷰포트 크기 조정은 루트 :ref:`뷰포트 <class_Viewport>`의 크기가 프로젝트 설정' Display 섹션에 지정된 기본 크기로 정확하게 설정됨을 의미합니다. 씬는 이 뷰포트에 먼저 렌더링됩니다. 마지막으로 이 뷰포트는 화면에 맞게 크기가 조정됩니다(Stretch Aspect 설정을 고려).

    ../../_images/stretch_viewport_expand.gif

스크립트에서 런타임 시 확장 모드를 구성하려면 get_tree().root.content_scale_mode 속성을 사용합니다(Window.content_scale_modeContentScaleMode 열거형 참조).

스트레치 측면

두 번째 설정은 스트레치 측면입니다. 이는 늘이기 모드**가 **비활성화 이외의 것으로 설정된 경우에만 적용됩니다.

아래 애니메이션에서는 회색과 검은색 영역을 볼 수 있습니다. 검은색 영역은 엔진에 의해 추가되며 그릴 수 없습니다. 회색 영역은 씬의 일부이며 그릴 수 있습니다. 회색 영역은 2D 편집기에 표시되는 파란색 프레임 외부 영역에 해당합니다.

  • Stretch Aspect = Ignore: 화면을 늘일 때 가로 세로 비율을 무시합니다. 즉, 화면이 더 넓거나 좁아도 원래 해상도가 화면을 정확히 채울 수 있도록 늘어납니다. 이로 인해 균일하지 않은 늘어남이 발생할 수 있습니다. 사물이 설계된 것보다 더 넓거나 더 높게 보일 수 있습니다.

    ../../_images/stretch_viewport_ignore.gif
  • Stretch Aspect = Keep: 화면을 늘일 때 가로 세로 비율을 유지합니다. 즉, 뷰포트는 화면 해상도에 관계없이 원래 크기를 유지하며 화면 상단/하단("레터박스") 또는 측면("필러박스")에 검은색 막대가 추가됩니다.

    이는 대상 장치의 화면 비율을 미리 알고 있거나 다른 화면 비율을 처리하고 싶지 않은 경우 좋은 옵션입니다.

    ../../_images/stretch_viewport_keep.gif
  • Stretch Aspect = Keep Width: 화면을 늘릴 때 가로 세로 비율을 유지합니다. 화면이 기본 사이즈보다 넓을 경우, 좌우에 검은색 막대가 추가됩니다(필러박스). 그러나 화면이 기본 해상도보다 높을 경우 뷰포트는 수직 방향으로 커집니다(하단에 더 많은 콘텐츠가 표시됩니다). 이것을 "수직 확장"이라고 생각할 수도 있습니다.

    이는 일반적으로 확장 가능한 GUI 또는 HUD를 생성하는 데 가장 적합한 옵션이므로 일부 컨트롤은 하단(크기 및 앵커)에 고정될 수 있습니다.

    ../../_images/stretch_viewport_keep_width.gif
  • Stretch Aspect = Keep Height: 화면을 늘릴 때 가로 세로 비율을 유지합니다. 화면이 기본 크기보다 크면 상단과 하단에 검은색 막대가 추가됩니다(레터박스). 그러나 화면이 기본 해상도보다 넓은 경우 뷰포트는 가로 방향으로 커집니다(오른쪽에 더 많은 콘텐츠가 표시됩니다). 이것을 "수평 확장"이라고 생각할 수도 있습니다.

    이는 일반적으로 가로로 스크롤되는 2D 게임(예: 러너 또는 플랫포머)에 가장 적합한 옵션입니다.

    ../../_images/stretch_viewport_keep_height.gif
  • Stretch Aspect = Expand: 화면을 늘릴 때 가로세로 비율을 유지하지만 기본 너비와 높이는 유지하지 않습니다. 화면 종횡비에 따라 뷰포트는 가로 방향(화면이 기본 크기보다 넓은 경우) 또는 세로 방향(화면이 원래 크기보다 큰 경우)으로 더 커집니다.

    ../../_images/stretch_viewport_expand.gif

유사한 자동 결정 배율 인수로 세로 모드와 가로 모드를 모두 지원하려면 프로젝트의 기본 해상도를 직사각형 대신 *정사각형*(1:1 가로 세로 비율)으로 설정하세요. 예를 들어 기본 해상도로 1280×720을 디자인하고 세로 및 가로 모드를 모두 지원하려는 경우 프로젝트 설정에서 프로젝트의 기본 창 크기로 720×720을 사용합니다.

사용자가 런타임 시 선호하는 화면 방향을 선택할 수 있도록 하려면 **디스플레이 > 창 > 휴대용 > 방향**을 ``sensor``로 설정해야 합니다.

스크립트에서 런타임 시 확장 측면을 구성하려면 get_tree().root.content_scale_aspect 속성을 사용합니다(Window.content_scale_aspectContentScaleAspect 참조). 열거).

늘이기 스케일

Scale 설정을 사용하면 위의 Stretch 옵션이 이미 제공하는 것 외에 추가 배율 인수를 추가할 수 있습니다. ``1.0``의 기본값은 추가 스케일링이 발생하지 않음을 의미합니다.

예를 들어 **Scale**을 ``2.0``로 설정하고 **Stretch Mode**를 **Disabled**로 두면 씬의 각 단위는 화면의 2×2 픽셀에 해당합니다. 이는 게임이 아닌 응용 프로그램에 크기 조정 옵션을 제공하는 좋은 방법입니다.

Stretch Mode**가 **canvas_items**로 설정된 경우 2D 요소는 기본 창 크기를 기준으로 크기가 조정된 다음 **Scale 설정을 곱합니다. 더 나은 접근성을 위해 자동으로 결정된 규모를 원하는 대로 조정할 수 있도록 플레이어에게 노출될 수 있습니다.

**Stretch Mode**가 **뷰포트**로 설정된 경우 뷰포트의 해상도는 **Scale**로 나뉩니다. 이렇게 하면 픽셀이 더 크게 보이고 렌더링 해상도(주어진 창 크기)가 줄어들어 성능이 향상될 수 있습니다.

스크립트에서 런타임 시 확장 배율을 구성하려면 get_tree().root.content_scale_factor 속성을 사용합니다(Window.content_scale_factor 참조).

GUI > 테마 > 기본 테마 배율 프로젝트 설정을 사용하여 기본 프로젝트 테마가 생성되는 배율을 조정할 수도 있습니다. 이는 기본값보다 훨씬 높거나 낮은 기본 해상도에서 보다 논리적인 크기의 UI를 만드는 데 사용할 수 있습니다. 그러나 이 프로젝트 설정은 프로젝트가 시작될 때 해당 값을 한 번만 읽으므로 런타임 시 변경할 수 없습니다.

늘이기 스케일 모드

Godot 4.2부터 Stretch Scale Mode 설정을 사용하면 자동으로 결정된 배율 인수(수동으로 지정한 Stretch Scale 설정도 포함)를 정수 값으로 제한할 수 있습니다. 기본적으로 이 설정은 ``fractional``로 설정되어 있으며, 이를 통해 모든 축척 비율을 적용할 수 있습니다(``2.5``와 같은 분수 값 포함). ``integer``로 설정하면 값이 가장 가까운 정수로 반내림됩니다. 예를 들어, ``2.5``의 배율 인수를 사용하는 대신 ``2.0``로 반내림됩니다. 이는 픽셀 아트를 표시할 때 왜곡을 방지하는 데 유용합니다.

viewport 스트레치 모드와 함께 표시되는 이 픽셀 아트를 비교해 보세요. 스트레치 스케일 모드는 ``fractional``로 설정되어 있습니다.

분수 크기 조정 예(잘못된 픽셀 아트 모양)

체커보드는 "균등"해 보이지 않습니다. 로고와 텍스트의 선 너비는 매우 다양합니다.

이 픽셀 아트는 viewport 스트레치 모드로도 표시되지만 이번에는 스트레치 스케일 모드가 ``integer``로 설정됩니다.

정수 스케일링 예(올바른 픽셀 아트 모양)

체커보드는 완벽하게 균일해 보입니다. 선 너비가 일정합니다.

예를 들어, 뷰포트 기본 크기가 640×360이고 창 크기가 1366×768인 경우:

  • ``fractional``를 사용하는 경우 뷰포트는 1366×768의 해상도로 표시됩니다(배율은 대략 2.133×). 전체 창 공간이 사용됩니다. 뷰포트의 각 픽셀은 표시 영역의 2.133×2.133 픽셀에 해당합니다. 그러나 디스플레이는 "전체" 픽셀만 표시할 수 있으므로 픽셀 크기 조정이 고르지 않아 픽셀 아트가 부정확하게 표시됩니다.

  • ``integer``를 사용하는 경우 뷰포트는 1280×720(배율은 2×)의 해상도로 표시됩니다. 나머지 공간은 네 면 모두 검은색 막대로 채워져 뷰포트의 각 픽셀은 표시 영역의 2×2 픽셀에 해당합니다.

이 설정은 모든 스트레치 모드에서 유효합니다. 그러나 disabled 늘이기 모드를 사용하는 경우 가장 가까운 정수 값으로 내림*하여 **늘이기 배율* 설정에만 영향을 미칩니다. 이는 픽셀 아트 UI가 있는 3D 게임에 사용할 수 있으므로 3D 뷰포트의 가시 영역 크기가 줄어들지 않습니다(canvas_items 또는 viewport 스트레치 모드를 integer 스케일 모드와 함께 사용할 때 발생함).

게임은 Windows가 창을 독점 전체 화면인 것처럼 자동으로 처리하지 못하도록 설계된 전체 화면**과 달리 **독점 전체 화면 창 모드를 사용해야 합니다.

**전체 화면**은 OS에 의해 비활성화될 위험 없이 픽셀당 투명도를 사용하려는 GUI 애플리케이션에서 사용하도록 고안되었습니다. 화면 하단에 1픽셀 선을 남겨두어 이를 달성합니다. 대조적으로 **독점 전체 화면**은 실제 화면 크기를 사용하며 Windows에서 전체 화면 게임의 지터와 입력 지연을 줄일 수 있습니다.

정수 스케일링을 사용할 때 전체 화면 모드에서 1픽셀 높이 감소로 인해 정수 스케일링이 예상보다 작은 스케일링 인자를 사용할 수 있으므로 이는 특히 중요합니다.

일반적인 사용 사례 시나리오

여러 해상도와 화면 비율을 잘 지원하려면 다음 설정이 권장됩니다.

데스크탑 게임

픽셀 아트가 아닌 아트:

  • 기본 창 너비를 ``1920``로 설정하고 창 높이를 ``1080``로 설정합니다. 1920×1080보다 작은 디스플레이가 있는 경우 창 너비 재정의**창 높이 재정의**를 더 낮은 값으로 설정하여 프로젝트가 시작될 때 창이 더 작아지도록 합니다.

  • 또는 주로 고급형 장치를 대상으로 하는 경우 기본 창 너비를 3840``로 설정하고 높이를 ``2160``로 설정합니다. 이를 통해 높은 해상도의 2D 자산을 제공할 있으므로 메모리 사용량과 파일 크기가 높아지는 대신 선명한 시각적 결과를 얻을 있습니다. 또한 UI 요소를 계속 읽을 있도록 하려면 **GUI > 테마 > 기본 테마 배율**을 ``2.0``에서 ``3.0 사이의 값으로 늘리는 것이 좋습니다.

    • 이렇게 하면 저해상도 장치에서 밉맵되지 않은 텍스처가 거칠어지므로 :ref:`doc_multiple_resolutions_reducing_aliasing_on_downsampling`에 설명된 지침을 따르십시오.

  • 스트레치 모드를 ``canvas_items``로 설정합니다.

  • 스트레치 측면을 ``expand``로 설정합니다. 이를 통해 다양한 화면 비율을 지원할 수 있으며 키가 큰 스마트폰 디스플레이(예: 18:9 또는 19:9 화면 비율)를 더 효과적으로 활용할 수 있습니다.

  • 레이아웃 메뉴를 사용하여 올바른 모서리에 스냅되도록 Control 노드' 앵커를 구성합니다.

  • 3D 게임의 경우 게임 옵션 메뉴에 :ref:`doc_resolution_scaling`를 노출하여 플레이어가 UI 요소와 별도로 3D 렌더링 해상도를 조정할 수 있도록 하는 것이 좋습니다. 이는 특히 저사양 하드웨어의 성능 조정에 유용합니다.

형식

  • 기본 창 크기를 사용하려는 뷰포트 크기로 설정합니다. 대부분의 픽셀 아트 게임은 256×224에서 640×480 사이의 뷰포트 크기를 사용합니다. 640×360은 정수 크기 조정을 사용할 때 검은색 막대 없이 1280×720, 1920×1080, 2560×1440 및 3840×2160으로 크기가 조정되므로 좋은 기준선입니다. 주어진 시간에 더 많은 게임 세계를 표시하려는 의도가 아니라면 뷰포트 크기가 클수록 더 높은 해상도의 아트워크를 사용해야 합니다.

  • 스트레치 모드를 ``viewport``로 설정합니다.

  • 단일 종횡비(검은색 막대 포함)를 적용하려면 늘이기 종횡비를 ``keep``로 설정합니다. 대안으로, 다양한 종횡비를 지원하기 위해 스트레치 종횡비를 ``expand``로 설정할 수 있습니다.

  • expand 스트레치 측면을 사용하는 경우 레이아웃 메뉴를 사용하여 올바른 모서리에 스냅되도록 컨트롤 노드' 앵커를 구성합니다.

  • 스트레치 스케일 모드를 ``integer``로 설정합니다. 이렇게 하면 고르지 않은 픽셀 스케일링이 발생하여 픽셀 아트가 의도한 대로 표시되지 않는 것을 방지할 수 있습니다.

참고

viewport 확장 모드는 저해상도 렌더링을 제공한 다음 최종 창 크기로 확장합니다. 스프라이트가 "하위 픽셀" 위치에서 이동하거나 회전할 수 있거나 고해상도 3D 뷰포트를 원하는 경우 viewport 스트레치 모드 대신 canvas_items 스트레치 모드를 사용해야 합니다.

가로 모드의 모바일 게임

Godot는 기본적으로 가로 모드를 사용하도록 구성되어 있습니다. 즉, 디스플레이 방향 프로젝트 설정을 변경할 필요가 없습니다.

  • 기본 창 너비를 ``1280``로 설정하고 창 높이를 ``720``로 설정합니다.

  • 또는 주로 고급형 장치를 대상으로 하는 경우 기본 창 너비를 1920``로 설정하고 높이를 ``1080``로 설정합니다. 이를 통해 높은 해상도의 2D 자산을 제공할 있으므로 메모리 사용량과 파일 크기가 높아지는 대신 선명한 시각적 결과를 얻을 있습니다. 많은 장치에는 높은 해상도의 디스플레이(1440p)가 있지만 스마트폰 디스플레이의 작은 크기를 고려하면 1080p와의 차이는 거의 눈에 띄지 않습니다. 또한 UI 요소를 계속 읽을 있도록 하려면 **GUI > 테마 > 기본 테마 배율**을 ``1.5``에서 ``2.0 사이의 값으로 늘리는 것이 좋습니다.

    • 이렇게 하면 저해상도 장치에서 밉맵되지 않은 텍스처가 거칠어지므로 :ref:`doc_multiple_resolutions_reducing_aliasing_on_downsampling`에 설명된 지침을 따르십시오.

  • 스트레치 모드를 ``canvas_items``로 설정합니다.

  • 스트레치 측면을 ``expand``로 설정합니다. 이를 통해 다양한 화면 비율을 지원할 수 있으며 키가 큰 스마트폰 디스플레이(예: 18:9 또는 19:9 화면 비율)를 더 효과적으로 활용할 수 있습니다.

  • 레이아웃 메뉴를 사용하여 올바른 모서리에 스냅되도록 Control 노드' 앵커를 구성합니다.

태블릿 및 폴더블 휴대폰(가로세로 비율이 4:3에 가까운 디스플레이를 자주 사용하는 경우)을 더 잘 지원하려면 여기의 나머지 지침을 따르는 동안 가로세로 비율이 4:3인 기본 해상도를 사용하는 것이 좋습니다. 예를 들어 기본 창 너비를 ``1280``로 설정하고 기본 창 높이를 ``960``로 설정할 수 있습니다.

세로 모드의 모바일 게임

  • 기본 창 너비를 ``720``로 설정하고 창 높이를 ``1280``로 설정합니다.

  • 또는 주로 고급형 장치를 대상으로 하는 경우 기본 창 너비를 1080``로 설정하고 높이를 ``1920``로 설정합니다. 이를 통해 높은 해상도의 2D 자산을 제공할 있으므로 메모리 사용량과 파일 크기가 높아지는 대신 선명한 시각적 결과를 얻을 있습니다. 많은 장치에는 높은 해상도의 디스플레이(1440p)가 있지만 스마트폰 디스플레이의 작은 크기를 고려하면 1080p와의 차이는 거의 눈에 띄지 않습니다. 또한 UI 요소를 계속 읽을 있도록 하려면 **GUI > 테마 > 기본 테마 배율**을 ``1.5``에서 ``2.0 사이의 값으로 늘리는 것이 좋습니다.

    • 이렇게 하면 저해상도 장치에서 밉맵되지 않은 텍스처가 거칠어지므로 :ref:`doc_multiple_resolutions_reducing_aliasing_on_downsampling`에 설명된 지침을 따르십시오.

  • **디스플레이 > 창 > 휴대용 > 방향**을 ``portrait``로 설정합니다.

  • 스트레치 모드를 ``canvas_items``로 설정합니다.

  • 스트레치 측면을 ``expand``로 설정합니다. 이를 통해 다양한 화면 비율을 지원할 수 있으며 키가 큰 스마트폰 디스플레이(예: 18:9 또는 19:9 화면 비율)를 더 효과적으로 활용할 수 있습니다.

  • 레이아웃 메뉴를 사용하여 올바른 모서리에 스냅되도록 Control 노드' 앵커를 구성합니다.

태블릿과 폴더블 휴대폰(가로세로 비율이 4:3에 가까운 디스플레이를 자주 사용하는 경우)을 더 잘 지원하려면 여기의 나머지 지침을 따르는 동안 가로세로 비율이 3:4인 기본 해상도를 사용하는 것이 좋습니다. 예를 들어 기본 창 너비를 ``960``로 설정하고 기본 창 높이를 ``1280``로 설정할 수 있습니다.

표준화

  • 기본 창 너비와 높이를 대상으로 삼으려는 가장 작은 창 크기로 설정하세요. 필수는 아니지만 이렇게 하면 작은 창 크기를 염두에 두고 UI를 디자인할 수 있습니다.

  • 스트레치 모드를 기본값인 ``disabled``로 유지합니다.

  • 스트레치 측면을 기본값인 ``keep``로 유지합니다(스트레치 모드가 ``disabled``이므로 해당 값은 사용되지 않음).

  • 스크립트의 _ready() 함수에서 ``get_window().min_size``를 설정하여 최소 창 크기를 정의할 수 있습니다. 이렇게 하면 사용자가 애플리케이션의 크기를 특정 크기 이하로 조정하여 UI 레이아웃이 손상될 수 없습니다.

  • HiDPI 디스플레이를 고려하여 UI를 더 크게 만들 수 있도록 루트 뷰포트의 :ref:`stretch scale <doc_multiple_solutions_stretch_scale>`을 변경하는 설정을 애플리케이션 설정에 추가합니다. 아래의 hiDPI 지원 섹션도 참조하세요.

모드 지원 제공

기본적으로 Godot 프로젝트는 운영 체제에서 DPI를 인식하는 것으로 간주됩니다. 이는 디스플레이 > 창 > DPI > HiDPI 허용 프로젝트 설정에 의해 제어되며 가능할 때마다 활성화된 상태로 두어야 합니다. DPI 인식을 비활성화하면 Windows에서 전체 화면 동작이 중단될 수 있습니다.

Godot 프로젝트는 DPI를 인식하므로 hiDPI 디스플레이에서 시작할 때(화면 해상도에 비례하여) 매우 작은 창 크기로 나타날 수 있습니다. 게임의 경우 이 문제를 해결하는 가장 일반적인 방법은 기본적으로 게임을 전체 화면으로 설정하는 것입니다. 또는 화면 크기에 따라 autoload <doc_singletons_autoload>`의 ``_ready()` 함수에서 창 크기를 설정할 수 있습니다.

hiDPI 디스플레이에서 2D 요소가 너무 작게 표시되지 않도록 하려면:

  • 게임의 경우 canvas_items 또는 viewport 확장 모드를 사용하면 2D 요소의 크기가 현재 창 크기에 따라 자동으로 조정됩니다.

  • 게임이 아닌 애플리케이션의 경우 disabled 스트레치 모드를 사용하고 autoload <doc_singletons_autoload>`의 ``_ready()` 함수에서 디스플레이 배율 인수에 해당하는 값으로 스트레치 배율을 설정합니다. 디스플레이 배율 인수는 운영 체제 설정에서 설정되며 :ref:`screen_get_scale <class_DisplayServer_method_screen_get_scale>`을 사용하여 쿼리할 수 있습니다. 이 방법은 현재 Android, iOS, Linux(Wayland만 해당), macOS 및 웹에서 구현됩니다. 다른 플랫폼에서는 화면 해상도를 기반으로 디스플레이 배율 인수를 추측하는 방법을 구현해야 합니다(필요한 경우 사용자가 이를 재정의할 수 있도록 설정). 이것은 현재 Godot 편집기에서 사용되는 접근 방식입니다.

hiDPI 허용 설정은 Windows 및 macOS에서만 유효합니다. 다른 모든 플랫폼에서는 무시됩니다.

참고

Godot 편집기 자체는 항상 DPI 인식으로 표시됩니다. 프로젝트 설정에서 **hiDPI 허용**이 활성화된 경우에만 편집기에서 프로젝트를 실행하면 DPI를 인식합니다.

Font and image oversampling

Godot supports a process called oversampling, which refers to automatically re-rendering textures from their original vector source when the viewport scale factor changes. This ensures font and image textures remain crisp at any resolution.

Font oversampling is enabled by default, but it can be disabled by unchecking GUI > Fonts > Dynamic Fonts > Use Oversampling in the Project Settings.

Image oversampling is disabled by default, and can be enabled for specific images in SVG format by changing their import type to DPITexture in the Import dock. Other image formats do not support oversampling, as they store bitmap data instead of vectors.

The editor automatically performs oversampling when zooming in the 2D editor, which allows you to preview how oversampling will look at specific scale factors. This can be disabled by unchecking View > Auto Resample CanvasItems at the top of the 2D editor viewport.

Oversampling can also be applied according to the Node2D or Control's Scale property. This scale-based oversampling behavior is disabled by default, but it can be enabled by setting Oversampling with Scale in the inspector to Enabled on the desired node. This is useful for nodes that may have their scale changed at runtime, such as custom scale factors for certain UI elements like crosshairs. However, keep in mind this can be demanding on the CPU if the scale changes frequently, as the texture has to be re-rendered each time.

For best results, the node should use uniform scaling. Non-uniform scaling will work, but may result in aliasing on the shorter axis as oversampling is always applied uniformly.

참고

Control's offset_transform_enabled property is taken into account by scale-based oversampling, but only if offset_transform_visual_only is disabled. When offset_transform_visual_only is enabled, it does not affect the node's actual scale (as used for input coordinates), but only its visual representation. Therefore, it is ignored by oversampling.

다운샘플링 시 앨리어싱 줄이기

게임의 기본 해상도가 매우 높은 경우(예: 3840×2160) 1280×720과 같이 상당히 낮은 해상도로 다운샘플링할 때 앨리어싱이 나타날 수 있습니다.

이 문제를 해결하려면 모든 2D 텍스처에 대해 :ref:`mipmaps 활성화 <doc_importing_images_mipmaps>`를 수행할 수 있습니다. 그러나 밉맵을 활성화하면 메모리 사용량이 늘어나 저사양 모바일 장치에서 문제가 될 수 있습니다.

For SVG images, you can also change their import type to DPITexture in the Import dock to benefit from automatic oversampling as described above. This avoids aliasing by re-rasterizing the texture when the scale factor changes.

종횡비 다루기

다양한 해상도에 대한 크기 조정이 고려되면 *사용자 인터페이스*도 다양한 종횡비에 맞게 크기가 조정되는지 확인하세요. 이는 anchors 및/또는 :ref:`containers <doc_gui_containers>`를 사용하여 수행할 수 있습니다.

시야각 스케일링

3D 카메라 노드의 가로세 유지 속성은 기본적으로 높이 유지 배율 조정 모드(*Hor+*라고도 함)로 설정됩니다. 와이드스크린 디스플레이는 자동으로 더 넓은 시야를 사용하므로 이는 일반적으로 가로 모드의 데스크톱 게임 및 모바일 게임에 가장 적합한 값입니다.

그러나 3D 게임을 세로 모드로 플레이하려는 경우 대신 **Keep Width**(Vert-*라고도 함)를 사용하는 것이 더 합리적일 수 있습니다. 이렇게 하면 화면비가 16:9보다 큰(예: 19:9) 스마트폰은 *더 큰 시야를 사용하게 되는데, 이는 여기서 더 논리적입니다.

2D 및 3D 요소의 크기를 다르게 조정

2D 요소(예: UI)와 다른 해상도로 3D를 렌더링하려면 Godot의 solution scanning 기능을 사용하세요. 이를 통해 별도의 뷰포트 노드를 사용할 필요 없이 3D에 사용되는 해상도 배율을 제어할 수 있습니다. 이는 낮은 해상도에서 3D를 렌더링하여 성능을 향상시키거나 슈퍼샘플링을 통해 품질을 향상시키는 데 사용될 수 있습니다.