我一直在阅读有关如何设计游戏代码的信息。我无法弄清的一件事是-如何在不从游戏中“复制”代码的情况下编写游戏外的关卡编辑器(而不是“游戏中的关卡编辑器”)?例如,您可能必须复制有关可以拥有的不同类型实体的所有代码。您必须添加游戏渲染代码。
我的猜测是,可以通过在游戏的“引擎”部分中制作一个DLL来完成此操作。然后,在实际游戏和关卡编辑器之间共享它。
还是有更好/更简便的方法来做到这一点?
我一直在阅读有关如何设计游戏代码的信息。我无法弄清的一件事是-如何在不从游戏中“复制”代码的情况下编写游戏外的关卡编辑器(而不是“游戏中的关卡编辑器”)?例如,您可能必须复制有关可以拥有的不同类型实体的所有代码。您必须添加游戏渲染代码。
我的猜测是,可以通过在游戏的“引擎”部分中制作一个DLL来完成此操作。然后,在实际游戏和关卡编辑器之间共享它。
还是有更好/更简便的方法来做到这一点?
Answers:
您将不得不将您的代码分成单独的项目(在同一解决方案中)。通常,您将具有以下设置:
-Engine Core (DLL)
-Game + Game Logic (EXE)
-Content Pipeline (DLL)
-Editor (EXE)
对于更大的项目,您可能需要将Engine Core与多个项目分开,例如Core,Physics,Graphics,Audio,Input和Networking。所有这些项目都不能互相引用,但是它们都引用Core,您可以在其中存储一些常见的基本类型。
如果他们互相参照,这种分隔将毫无用处。
无论如何,这应该有助于您在其他项目中重用引擎的某些部分。例如,对于编辑器,您需要引用Graphics项目,该项目引用Core本身。
这种分离还意味着您现在可以在编辑器中使用Windows Only技术(例如WPF),而游戏仍然可以针对Windows和XBLIG。
有关在WPF环境中使用XNA的更多信息,请参见以下链接:http : //blogs.msdn.com/b/nicgrave/archive/2010/07/25/rendering-with-xna-framework-4-0-inside- wpf-application.aspx的