어형 변화표
이 답변이 작성된 시점에서 여기에 게시 된 다른 답변은 모두 잘못되었습니다.
도메인 기반 디자인이 게임에 적합한 지 묻지 않고 "도메인 모델링"이 게임에 적합한 지 묻습니다.
도메인 모델링은 게임에 적합합니까?
그 답은 : 때로는 정말 훌륭합니다. 그러나 플랫 포머 또는 FPS와 같은 실시간 게임을 만들거나 다른 많은 종류의 게임을 만드는 경우에는 아닙니다. 해당 시스템에 반드시 적합하지는 않습니다. 그러나 도메인 모델 패턴을 구현하는 게임 내에 시스템이있을 수 있습니다.
다른 사람들이 여기서 언급했듯이 구성 요소 엔터티 프레임 워크는 매우 인기가 있고 좋은 이유가 있습니다. 그러나 게임 개발 문화에서는 계층화 된 아키텍처가 뚜렷하게 부족한 것으로 보입니다. 다시 말하지만, 사람들이 개발하려고하는 대부분의 게임은 엔티티에 대한 상태를 변경하고 출현 한 결과를 게임으로 만들기 때문에 좋은 이유입니다.
모든 소프트웨어는 귀하가 작성하는 소프트웨어가 아닙니다. 일부는 다른 것과는 상당히 다릅니다.
도메인 모델링이 잘 작동하는 도메인의 예로는 카드 게임, 보드 게임 및 기타 이벤트 중심 시스템이 있습니다.
핵심 도메인 개념으로 타임 델타에 의해 결정되는 움직임 등으로 X 프레임 속도로 실행되는 게임은 아마도 적합하지 않습니다. 이 경우 "도메인"은 종종 너무 단순하여 도메인 모델링이 필요하지 않습니다. 충돌 감지, 새로운 개체의 생성, 기존 개체에 대한 힘의 영향 등은 대부분의 게임 플레이를 다루는 경향이 있습니다.
그러나 상황이 복잡 해짐에 따라 개발자가 특정 유형의 동작 및 계산을 처리하기 위해 엔터티 내에 도메인 모델을 구현하는 것을 보게됩니다.
게임 아키텍처의 도메인 모델 패턴
게임 엔진 (예 : Unity3D)은 종종 구성 요소 엔터티를 지향합니다. 플랫 포머에서는 캐릭터를위한 엔티티가있을 수 있으며 상태 등은 위치 등을 업데이트하기 위해 지속적으로 변경됩니다.
그러나 이벤트 중심의 게임에서는 구성 요소 엔터티 프레임 워크의 역할이 사용자 인터페이스로 존재할 가능성이 높습니다. 계층 구조로 끝납니다.
UI는 게임 상태를 사용자에게 렌더링합니다. 사용자는 UI와 상호 작용하여 서비스 계층에서 명령을 트리거합니다. 서비스 계층은 도메인 개체와 상호 작용합니다. 도메인 객체는 도메인 이벤트를 일으켰습니다. 이벤트 리스너는 이벤트를 듣고 UI에서 변경을 트리거합니다.
UI> 서비스 계층> 도메인 모델
요컨대, 서비스 계층 구현을 갖춘 모델 뷰 컨트롤러로 끝납니다.
이 아키텍처를 사용하면 이벤트 중심 인터페이스를 통해 완전히 단위 테스트 가능한 게임 코어 (게임 개발 문화의 희소성 및 보여짐)가 있습니다.
이제 DDD 란 무엇입니까?
Domain-Driven Design은 구체적으로 도메인에 대해 배우는 데 사용되는 분석 패턴에 중점을 둔 문화 / 운동입니다. 실제로 올바른 것을 구축 한 다음 구현 패턴을 나타내는 모델 레이어를 구현할 수있는 구현 패턴 언어 관용구를 사용하여 도메인 모델의 개념. DDD는 복잡한 도메인에서 작동하는 커뮤니티에서 나오며 항상 도메인 모델링에 중점을 두어 애플리케이션에서 높은 복잡성을 관리 할 수있는 방법을 찾고 있습니다.
DDD는 코딩을 시작하고 시스템을 가지고 놀면서 나중에 만들고 싶은 것을 알아내는 것이라면 목표가 좋지 않습니다. 도메인이 더 많거나 적다고 가정합니다. 따라서, 당신의 게임이 어떻게 될지 모른다면, 그것은 작동하지 않을 것입니다.