关卡编辑器+游戏->复制渲染/游戏特定代码?


14

我一直在阅读有关如何设计游戏代码的信息。我无法弄清的一件事是-如何在不从游戏中“复制”代码的情况下编写游戏外的关卡编辑器(而不是“游戏中的关卡编辑器”)?例如,您可能必须复制有关可以拥有的不同类型实体的所有代码。您必须添加游戏渲染代码。

我的猜测是,可以通过在游戏的“引擎”部分中制作一个DLL来完成此操作。然后,在实际游戏和关卡编辑器之间共享它。

还是有更好/更简便的方法来做到这一点?

Answers:


13

您将不得不将您的代码分成单独的项目(在同一解决方案中)。通常,您将具有以下设置:

-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的


谢谢!环顾四周,我发现了这一点-create.msdn.com/en-US/education/catalog/sample / ...-看来WinForms比WPF更受支持!
Utkarsh Sinha

嘿,是的,但是该示例来自WPF真正起步之前的2008年。一年前,我已经从WinForms切换到WPF,并且我不会为了世界而切换:)。如果要与该示例保持兼容,则可以始终在WPF应用程序中使用WinFormsControlHost :)。
罗伊·T。

4

设计游戏引擎时,请尽可能将渲染逻辑与实际游戏逻辑分开。一种方法是在构建游戏引擎时使用组件模式。例如,XNA在框架级别使用此模式以提高灵活性。使用相同的代码库通过关卡编辑器进行渲染;如果需要,可以写包装纸。

同样,另一种比较流行的模式是MVC(模型-视图-控制器)也可以提供帮助。通常使用MVC对引擎进行编码。然后,您可以对“视图”和“模型”使用相同的代码,但可以注入自定义控制器来为关卡编辑器编辑模型,而不是根据游戏输入更新游戏引擎的“控制器”。实现游戏模型的序列化,以从编辑器或游戏中加载/保存它们。

将组件放在单独的组件中当然会鼓励分离...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.