Вам придется разделить ваш код на отдельные проекты (в том же решении). Обычно у вас есть следующие настройки:
-Engine Core (DLL)
-Game + Game Logic (EXE)
-Content Pipeline (DLL)
-Editor (EXE)
Для еще больших проектов вы можете разделить ядро ядра на несколько проектов, таких как ядро, физика, графика, аудио, ввод и работа в сети. Все эти проекты не могут ссылаться друг на друга, но все они ссылаются на Core, где вы можете хранить некоторые общие базовые типы.
Если бы они ссылались друг на друга, разделение было бы бесполезным.
В любом случае это должно помочь вам повторно использовать части вашего движка в других проектах. Например, для редактора вам нужно будет ссылаться на проект Graphics, который ссылается на само ядро.
Это разделение также означает, что теперь вы можете использовать технологии Windows Only, такие как WPF, в своем редакторе, в то время как ваша игра может по-прежнему ориентироваться на Windows и XBLIG.
Для получения дополнительной информации об использовании XNA в среде WPF перейдите по этой ссылке: http://blogs.msdn.com/b/nicgrave/archive/2010/07/25/rendering-with-xna-framework-4-0-inside- из-а-МОФ-application.aspx
Отделите логику рендеринга как можно лучше от реальной игровой логики при разработке игрового движка. Один из способов сделать это - использовать шаблон компонентов при создании игрового движка. Например, XNA использует этот шаблон на уровне структуры для гибкости. Используйте ту же базу кода для рендеринга с вашим редактором уровней; напишите обертки, если вам нужно.
Точно так же другой популярный шаблон - MVC (Model-View-Controller), который также может помочь. Кодируйте свой двигатель, используя MVC как обычно. Затем вы можете использовать один и тот же код для View и Model, но добавить собственный контроллер для редактирования модели для редактора вашего уровня вместо контроллера игрового движка, который обновляется в соответствии с входными данными игры. Реализация сериализации для игровых моделей для загрузки / сохранения их из редактора или игры.
Хранение компонентов в отдельных сборках, конечно, будет способствовать разделению ...
источник