Będziesz musiał rozdzielić swój kod na osobne projekty (w tym samym rozwiązaniu). Zwykle masz następującą konfigurację:
-Engine Core (DLL)
-Game + Game Logic (EXE)
-Content Pipeline (DLL)
-Editor (EXE)
W przypadku jeszcze większych projektów może być konieczne rozdzielenie silnika Core na wiele projektów, takich jak Core, Fizyka, Grafika, Audio, Wejście i Sieć. Wszystkie te projekty nie mogą się nawzajem odnosić, ale wszystkie odnoszą się do Core, w którym można przechowywać niektóre typowe typy podstawowe.
Gdyby się nawzajem odnosili, rozdzielenie byłoby bezużyteczne.
W każdym razie powinno to pomóc w ponownym użyciu części silnika w innych projektach. Na przykład w przypadku edytora należy odwołać się do projektu Graphics, który odwołuje się do samego Core.
Ta separacja oznacza również, że możesz teraz korzystać z technologii Tylko Windows, takich jak WPF, w swoim edytorze, podczas gdy Twoja gra może nadal być ukierunkowana na Windows i XBLIG.
Aby uzyskać więcej informacji na temat używania XNA w środowisku WPF, zobacz ten link: http://blogs.msdn.com/b/nicgrave/archive/2010/07/25/rendering-with-xna-framework-4-0-inside- of-a-wpf-application.aspx
Podczas projektowania silnika gry najlepiej odseparuj logikę renderowania najlepiej od logiki gry. Jednym ze sposobów jest użycie wzorca komponentu podczas budowania silnika gry. Na przykład XNA używa tego wzorca na poziomie ramowym dla zapewnienia elastyczności. Użyj tej samej bazy kodu do renderowania w edytorze poziomów; napisz opakowania, jeśli musisz.
Podobnie, innym dość popularnym wzorcem jest MVC (Model-View-Controller), który również może pomóc. Koduj swój silnik normalnie za pomocą MVC. Następnie możesz użyć tego samego kodu dla widoku i modelu, ale wstrzyknąć niestandardowy kontroler do edycji modelu edytora poziomów zamiast kontrolera silnika gry, który aktualizuje się zgodnie z danymi wejściowymi gry. Zaimplementuj serializację modeli gier, aby załadować / zapisać je z edytora lub gry.
Trzymanie komponentów w oddzielnych zespołach oczywiście zachęci do separacji ...
źródło