[유니티 TIPS] 어디에서나 사용하는 DirtyFlag 패턴 | 프로그래밍 디자인패턴
1. 🏁 더티 플래그 패턴의 개념과 필요성

-
더티 플래그 패턴은 널리 사용되며 디자인 패턴에 포함된 개념이다.
-
이 패턴은 이름만으로는 의미가 명확하지 않아 다소 생소하게 느껴질 수 있다.
-
더티 플래그는 주로 동적 객체의 상태 변경을 최소화하고 효율성을 높이는 데 사용된다.
2. 🚀 오픈 월드에서의 더티 플래그 활용

-
오픈 월드를 구현할 때, 캐릭터 주변의 환경만 로딩하고, 벗어나면 그것을 언로딩하는 방식이 필요하다.
-
메모리를 관리하기 위해서는 월드를 청크 단위로 나누어 캐릭터의 이동에 따라 필요한 지역만 메모리에 활성화해야 한다.
-
더티 플래그 시스템은 메모리를 효과적으로 관리하기 위한 필수적인 방법이며, 활성화와 비활성화를 주목적으로 한다.
-
이 시스템은 다양한 분야에서 폭넓게 사용되며, 거의 모든 시스템에서 필수 요소로 자리잡고 있다.
-
특히, 라키 템과 같은 복잡한 구조에서도 더티 플래그가 적용되며, 다양한 부품의 상태를 관리하는 데 유용하다.
3. 🛠️ 더티 플래그 패턴의 활용과 필요성

-
더티 플래그 패턴은 복잡하고 비용이 많이 드는 환경에서 주로 사용되어야 하며, 이는 장면에서 많은 계산과 업데이트가 빈번히 발생하는 경우에 적합하다.
-
이 패턴은 일반적으로 단순한 불리언 플래그로 구현되며, 필요에 따라 확장하여 사용할 수 있는 구조로 되어 있다.
-
개층 구조에서는 부모의 트랜스폼이 변경될 때 하위 객체 모두가 함께 이동해야 하며, 이로 인해 발생하는 중복 계산을 줄이기 위해 더티 플래그가 필요하다.
-
따라서, 상태가 변경될 경우에는 플래그를 켜고 한 프레임이 끝난 후에 모든 업데이트를 한 번에 수행함으로써 불필요한 계산을 최소화하는 것이 중요하다.
-
궁극적으로, 더티 플래그는 동적 객체의 상태 변경에 따른 계산 비용을 줄이는 데 주 목적이 있으며, 이러한 원리는 모든 게임 엔진에서 적용된다.
4. 🖥️ UI 시스템에서의 더티 플래그 활용

-
UI 시스템은 레이아웃과 그래픽 요소로 구성된 개층 구조로 되어 있으며, 각 요소의 상태 변화에 따라 더티 플래그가 활성화된다.
-
여러 개의 더티 플래그가 동시에 존재할 수 있으며, UI 변경 시 레이아웃 처리와 그래픽 처리를 위한 플래그가 따로 구분되어 사용된다.
-
성능 최적화를 위해 변경 시에는 단순히 더티 플래그를 처리하고, 실제 재생성은 나중에 수행하도록 설계되어 있다.
-
UI 시스템은 사용자의 입력에 따라 매 프레임마다 재생성을 시도하기보다는 더티 플래그를 통해 효율적으로 처리하도록 되어 있다.
-
이와 같은 플래그 시스템을 통해 UI의 효율적인 처리가 가능하다는 점에서, 실제 개발 코드에서도 구현되어 있음을 확인할 수 있다.
5. 🕹️ 더티 플래그 패턴의 게임 환경 실시간 로딩

-
대규모 오픈 월드 게임은 실시간 로딩을 통해 리소스를 효율적으로 관리해야 하며, 전체 게임 환경을 한 번에 로드하는 것은 어렵기 때문에 플레이어가 볼 수 있는 환경만 로드하는 전략이 필요하다.
-
이때 게임 레벨은 여러 청크 단위로 나뉘어 있으며, 플레이어가 특정 영역으로 이동할 때 더티 플래그를 활성화하여 필요한 환경만 로드하거나 언로드한다.
-
또한, 플레이어의 위치에 따라 조건을 체크해 더티 플래그를 조정하며 가까이 있는 경우 로드하고 멀리 있는 경우 언로드하는 방식으로 메모리 관리가 이루어진다.
-
이과정에서 플레이어와 섹터 간의 거리를 체크하고, 섹터가 로드된 상태인지 전략적으로 판단하여 메모리 리소스를 최적화하는 데 중점을 둔다.
6. 🗺️ 더티 플래그의 범용성

-
그래서 더티 플래그는 하이킹 시스템을 포함한 다양한 시스템에서 사용될 수 있다.
-
그리고 더티 플래그의 개념은 여러 시스템에서 기본적으로 활용될 수밖에 없는 중요한 개념이다.
-
따라서 이 내용으로 더티 플래그 시스템에 대한 설명을 마무리할 수 있다.