디자인 패턴/게임 프로그래밍 패턴

[게임 프로그래밍 패턴][18]더티 플래그

우향우@ 2024. 5. 10. 12:57

개요

더티 플래그는 계속 변경되는 기본 값을 통해 파생 값을 만들어야 할때 사용할 수 있는 패턴이다. 이는 계산과 동기화 두가지 경우가 있다. 계산은 지역 변환 행렬을 통해 월드 변환 행렬을 구하는 경우등이 있고 동기화는 로컬의 상태를 서버에 갱신하는 경우등이 있다. 더티 플래그는 파생 값이 기본 값에 동기화되어 있는지를 나타내는 플래그로 기본 값이 수정되면 true가 되고 파생 값을 갱신하면 false가 된다. 이를 통해 현재 파생 값을 그냥 쓰면 될지 기본값을 통해 갱신해야 할지 알 수 있다.

 

사용 예시

계산에 사용하는 경우는 위에서 말한 지역 변환 행렬과 월드 변환 행렬이 있다. 업데이트에서 transform 계층 구조를 가진 오브젝트들의 지역 변환 행렬을 갱신한다고 하자. 이때 갱신된 오브젝트의 더티 플래그를 true로 하고 렌더링 시 더티 플래그가 true인 오브젝트와 그 자식 오브젝트들의 월드 변환 행렬만 갱신하여 사용하면 된다. 변하지 않은 오브젝트들은 마지막으로 계산된 월드 변환 행렬을 계속 사용하면 된다.

동기화의 경우 로컬에서의 변화가 있을때마다 서버에 갱신하는 것이 아닌 로컬에서 변화한 개체의 더티 플래그만 true로 해두고 적절한 갱신 타이밍에 true 개체들을 갱신하고 다시 false로 만들면 된다.

 

 

 

 

참고서적

게임 프로그래밍 패턴