Moblility 설정

개요

Mobility 옵션은 월드에 배치되는 인스턴스를 StaticMovable으로 구분하여 성능 최적화를 지원합니다.

각 인스턴스의 변화 가능 여부에 따라 렌더링 및 업데이트 방식이 달라지며, 불필요한 연산을 줄여 안정적인 퍼포먼스를 제공합니다.

옵션 비교

Static

  • 위치, 회전, 크기가 변하지 않는 오브젝트에 적합

  • 라이트맵 등 사전 계산된 데이터를 활용하여 최소한의 연산으로 처리

  • 런타임 중 이동, 회전, 크기 변경 불가

Movable

  • 이동, 회전, 애니메이션, 플레이어 상호작용이 필요한 오브젝트에 적합

  • 매 프레임 상태 변화를 계산하여 동적인 연출과 상호작용성을 제공

  • 성능 비용이 수반되므로, 주요 게임플레이 요소나 표현이 중요한 오브젝트에 사용 권장

사용 방법

Workspace에 인스턴스 배치 후, Property > Mobility 옵션에서 Static 또는 Movable을 선택합니다.

Mobility는 Workspace의 최상위(직접 자식) 인스턴스에서만 변경할 수 있습니다.

Static 권장 대상

  • 대상 예시: 건물, 지형, 내부 구조물, 바위, 나무, 배경 소품 등

  • 권장 이유:

    • 게임 중 위치나 크기 변화가 전혀 없으므로 Static으로 설정하면 조명과 연산을 사전에 계산하여 불필요한 리소스 사용을 최소화할 수 있습니다.

    • Static 오브젝트는 GPU/CPU 부담이 적어, 대규모 맵이나 많은 수의 오브젝트를 배치할 때도 안정적인 퍼포먼스를 유지할 수 있습니다.

  • 주의 사항:

    • Static으로 설정된 오브젝트는 런타임에서 이동하거나 조작할 수 없으므로, 게임플레이와 직접적으로 연관되지 않는 배경 요소에만 사용해야 합니다.

Movable 권장 대상

  • 대상 예시: 캐릭터, 장착 아이템, 차량, 움직이는 바닥, 이동 가능한 물체, 플레이어가 직접 상호작용하는 기믹 오브젝트 등

  • 권장 이유:

    • Movable은 이동·회전·애니메이션과 자연스럽게 연동되므로, 게임플레이의 핵심 동적 요소를 표현할 때 적합합니다.

    • 플레이어가 직접 조작하거나 물리적으로 반응해야 하는 오브젝트는 반드시 Movable이어야 동적인 변화를 표현 할 수 있습니다.

  • 주의 사항:

    • Movable은 매 프레임 변화를 계산하기 때문에 Static보다 성능 부담이 크며, 특히 다수의 오브젝트를 동시에 Movable로 설정할 경우 성능 저하가 발생할 수 있습니다.

    • 따라서 Movable은 핵심 상호작용 오브젝트에 한정하여 사용하는 것이 권장되며, 불필요한 요소까지 Movable로 두는 것은 피해야 합니다.

사용 시 주의 사항

Static 인스턴스의 계층 구조 제한

  • Static은 움직이지 않는 인스턴스로 정의되어 있으므로, Movable 인스턴스의 자식으로 배치할 수 없습니다.

  • 오버데어 스튜디오에서는 부모 인스턴스가 이동하면 자식 인스턴스도 함께 이동하는 구조이므로, Static이 부모의 이동을 따라가면 정의에 위배되어 문제가 발생합니다.

  • 이를 방지하기 위해, 편집기에서는 Movable 하위에 Static을 넣을 수 없도록 제한되어 있습니다.

  • 런타임 중에도 Movable 인스턴스 하위에 Static을 넣으려고 하면 에러가 발생하도록 설계되었습니다.

변경 및 생성 제한

  • Workspace 외부에 있는 인스턴스는 Mobility를 변경할 수 없습니다.

  • 런타임 중에는 Mobility 옵션을 변경할 수 없습니다.

  • Static 인스턴스는 런타임에서 동적으로 생성하거나 복제할 수 없습니다.

  • Static 인스턴스는 CFrame을 변경하거나 Anchored 속성을 해제하는 등 위치를 직간접적으로 변경하는 것을 지원하지 않습니다.

Last updated