KoreanFoodie's Study

디자인 패턴 (MVC, Dirty Flag) 패턴 본문

Game Dev

디자인 패턴 (MVC, Dirty Flag) 패턴

GoldGiver 2022. 10. 14. 16:06

MVC 패턴 개요

MVC 패턴은 앱을 Model, View, Controller 로 나누어 데이터와 로직을 분리하는 디자인 패턴이다. Model은 데이터를 가진 객체를, View는 사용자가 볼 결과물을 생성하는 컨테이너를, Controller는 사용자가 Model 과 View 를 호출하는 로직이다. 이때, Model 과 View 는 Controller 의 존재를 몰라야 결합도를 줄일 수 있다. Model 에 변경 사항이 생기면 View 는 Controller 를 통해 이벤트가 실행되어 화면이 업데이트 된다.

MVC 패턴은 비즈니스 로직과 UI 로직을 분리하여 유지 보수를 독립적으로 수행할 수 있고, 확장성과 유연성이 뛰어나다는 장점이 있다. 하지만 하나의 컨트롤러에 다수의 View 와 Model 이 복잡하게 연결되는 상황이 발생할 수도 있다. MVC 패턴은 웹 개발에 많이 쓰이는 설계이다.

MVC 패턴 게임 개발에 적용하기

MVC 패턴은 언리얼 개발에 어떤 식으로 적용할 수 있을까? 예를 들어, 남은 총알 갯수를 보여주는 HUD 를 만든다고 하자. MVC 패턴으로 설계를 하면 AHUD(Controller), Character(Model), 그리고 UMG(View) 로 나누어, AHUD 가 매 Tick 마다 Character 의 정보를 통해 UMG(UUserWidget) 를 업데이트하는 식으로 만들 수 있을 것이다(참고). 

 

 

DirtyFlag 패턴 개요

더티 플래그 패턴은 실제 연산이 필요할 때까지 해당 작업을 미루는 방식이다. 더티 플래그는 파생 값이 참조하는 기본 값 변경 여부를 추적한다. 예를 들어 오브젝트들의 위치가 계층형 구조를 갖고 있는 경우, 월드 좌표를 얻기 위해서는 최상위 노드로부터 변환 행렬을 곱하면 된다. 그런데 하위 객체의 위치 값이 바뀐다고 해서 상위 객체의 위치 값을 다시 갱신할 필요는 없다. 각 객체의 변환 행렬을 캐시해 놓고, 이 값이 바뀔 때만 파생 값을 변경된 기본 값을 이용해 다시 계산하면 된다.

더 자세한 내용은 이 링크를 참고하자.

 

Comments