답변:
동일한 솔루션에서 코드를 별도의 프로젝트로 분리해야합니다. 일반적으로 다음과 같은 설정이 있습니다.
-Engine Core (DLL)
-Game + Game Logic (EXE)
-Content Pipeline (DLL)
-Editor (EXE)
더 큰 프로젝트의 경우 Core, Physics, Graphics, Audio, Input 및 Networking과 같은 여러 프로젝트에서 Engine Core를 분리 할 수 있습니다. 이 모든 프로젝트는 서로를 참조 할 수 없지만 공통 기본 유형을 저장할 수있는 코어를 모두 참조합니다.
그들이 서로를 참조한다면 분리는 쓸모가 없을 것이다.
어쨌든 이것은 다른 프로젝트에서 엔진의 일부를 재사용하는 데 도움이됩니다. 예를 들어 편집기의 경우 Core 자체를 참조하는 그래픽 프로젝트를 참조해야합니다.
이 분리는 이제 게임에서 WPF와 같은 Windows 전용 기술을 사용할 수 있으며 게임은 여전히 Windows 및 XBLIG를 대상으로 할 수 있습니다.
WPF 환경에서 XNA를 사용하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오. http://blogs.msdn.com/b/nicgrave/archive/2010/07/25/rendering-with-xna-framework-4-0-inside- of-w-wpf-application.aspx
게임 엔진을 설계 할 때 렌더링 게임 로직을 실제 게임 로직과 최대한 분리하십시오. 이를 수행하는 한 가지 방법은 게임 엔진을 빌드 할 때 컴포넌트 패턴 을 사용하는 것입니다 . 예를 들어, XNA는 유연성을 위해 프레임 워크 수준에서이 패턴을 사용합니다. 레벨 편집기로 렌더링 할 때 동일한 코드 기반을 사용하십시오. 필요한 경우 래퍼를 작성하십시오.
마찬가지로, 다소 인기있는 또 다른 패턴은 MVC (Model-View-Controller)이며 도움이 될 수 있습니다. MVC를 사용하여 엔진을 정상적으로 코딩하십시오. 그런 다음 View와 Model에 동일한 코드를 사용할 수 있지만 게임 입력에 따라 업데이트되는 게임 엔진의 Controller 대신 레벨 편집기의 Model을 편집하기 위해 사용자 지정 Controller를 삽입 할 수 있습니다. 게임 모델에 대한 직렬화를 구현하여 편집기 또는 게임에서로드 / 저장합니다.
부품을 별도의 조립품에 보관하면 분리가 권장됩니다 ...