레벨 에디터 + 게임-> 렌더링 / 게임 특정 코드 복제?


14

게임 코드를 디자인하는 방법에 대해 읽었습니다. 내가 알아낼 수 없었던 한 가지는-게임에서 코드를 '복사'하지 않고 게임 내 에디터 (게임 내 에디터가 아님)를 어떻게 관리합니까? 예를 들어, 가능한 다른 유형의 엔티티에 대한 모든 코드를 복사해야 할 수 있습니다. 게임 렌더링 코드를 추가해야합니다.

내 생각에 이것은 DLL을 게임의 '엔진'부분에서 만들어서 수행 할 수 있습니다. 그런 다음 실제 게임과 레벨 편집기간에 공유하십시오.

아니면 이것을하는 더 좋고 쉬운 방법이 있습니까?

답변:


13

동일한 솔루션에서 코드를 별도의 프로젝트로 분리해야합니다. 일반적으로 다음과 같은 설정이 있습니다.

-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


감사! 좀 더 둘러보고 create.msdn.com/en-US/education/catalog/sample/…을 찾았습니다. WinForms가 WPF보다 더 잘 지원되는 것 같습니다!
Utkarsh Sinha

이건 사실이지만 WPF가 실제로 시작되기 전의 샘플은 2008 년입니다. 나는 1 년 전에 WinForms에서 WPF로 전환했으며 세계로 돌아 가지 않을 것입니다 :). 해당 샘플과의 호환성을 유지하려면 항상 WPF 앱에서 WinFormsControlHost를 사용할 수 있습니다. :).
Roy T.

4

게임 엔진을 설계 할 때 렌더링 게임 로직을 실제 게임 로직과 최대한 분리하십시오. 이를 수행하는 한 가지 방법은 게임 엔진을 빌드 할 때 컴포넌트 패턴 을 사용하는 것입니다 . 예를 들어, XNA는 유연성을 위해 프레임 워크 수준에서이 패턴을 사용합니다. 레벨 편집기로 렌더링 할 때 동일한 코드 기반을 사용하십시오. 필요한 경우 래퍼를 작성하십시오.

마찬가지로, 다소 인기있는 또 다른 패턴은 MVC (Model-View-Controller)이며 도움이 될 수 있습니다. MVC를 사용하여 엔진을 정상적으로 코딩하십시오. 그런 다음 View와 Model에 동일한 코드를 사용할 수 있지만 게임 입력에 따라 업데이트되는 게임 엔진의 Controller 대신 레벨 편집기의 Model을 편집하기 위해 사용자 지정 Controller를 삽입 할 수 있습니다. 게임 모델에 대한 직렬화를 구현하여 편집기 또는 게임에서로드 / 저장합니다.

부품을 별도의 조립품에 보관하면 분리가 권장됩니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.