2012-07-16 37 views
2

假设我已经用C++编写了游戏引擎。它是adPlayer(Vec3f位置,Model playerModel),addExplosion(Vec3f位置,Size explosionSize)等函数。为C++游戏引擎设置增量开发环境

现在,可以在某种测试类中调用这些函数,然后可以编译和运行projcet。这需要永远。

什么是理想的是有一些基本的文本编辑器,我可以键入这些功能,按ctrl + u然后这somehows调用游戏引擎的预编译功能。例如,它不会重新编译游戏引擎。

这将如何完成?

回答

2

通常您会将您的引擎编译为.dll并将其链接到您的项目。然后,您可以链接该功能,而不必编译它,如果你只是想使用这些功能。

+0

听起来不错。但每次我想改变一些东西时,我都必须重新运行应用程序?我将如何去做,以便游戏窗口始终开放,当我例如交换玩家模型时,它只是即时切换? – user1501445 2012-07-16 14:37:53

+0

Afaik没有工具可以使用C++中的热代码更改(Java中使用eclipse和C#使用VS)。 但你可以做的是集成一个脚本语言,如lua或Python,并重新加载脚本后,你改变它们。隐含地说,这是对脚本代码的重新编译,但比重新编译项目要快得多。但是你必须写一些逻辑作为脚本,但对于游戏来说并不是那么不寻常。 – drakon 2012-07-16 14:44:14

2

如果您在询问设计迭代,您将创建一个读入并转换为场景图中实体的数据格式。您需要使用工厂模式。您可以使用序列化库,其中每个对象都知道如何读取/写入/保留自己。

通过具有表示游戏状态“快照”的数据格式,您可以从游戏和编辑器读取/保存它。稍后,您可以通过在运行时重新读取数据的功能对正在运行的游戏实例进行设计更改。

您似乎可能已经使用引擎代码对硬编码/混合客户端代码进行了编码,这可能很难分开。

如果您询问编译,那么您将需要编译为库(.dll或静态.lib/.so)。然后根据你的引擎库(s)编译你的客户/特定代码。他们应该在独立的项目。

+0

我想我问的是后者:) – user1501445 2012-07-16 14:38:53