2012-08-15 61 views
4

我正在寻找一个C++ IDE,我可以在其中积极地玩游戏并测试更新而不是测试它,重做代码,编译它并再次运行它。我正在运行Windows 7 x86专业版。C++视频游戏编程IDE

+0

'测试更新而不是测试它编译'不可能。 – 2012-08-15 17:02:38

+0

不是每个说的编程问题。但日食确实有背景编译作为一个功能.. – iKlsR 2012-08-15 17:03:02

+0

真的导致其他语言可以,所以我只是希望它可能与C++ ... – Brandon 2012-08-15 17:03:29

回答

3

有在http://runtimecompiledcplusplus.blogspot.co.uk/一个有趣的项目,正在设法解决这个问题,看起来它可能会为你工作;我自己并没有使用它,但它看起来活跃,如果仍然有点生。它使用Visual Studio 2010编译器。

+0

看起来很吓人,但我可能需要尝试一下。不幸的是,它看起来不像允许编辑现有代码,只是添加“插件” – 2012-08-15 17:26:04

+0

事实并非如此。 RCC++确实允许编辑现有代码,但需要进行一些初始更改。 – 2015-02-13 09:46:12

1

您无法运行C++代码而无需编译。语言之间的小语法差异不应该成为问题,所以你不应该把自己限制在一种语言中。

我建议你给Unity一个机会;有一个相当强大的免费版本可用。您可以使用C#(类似于C++的语言)或UnityScript(与JavaScript类似)或Boo(类似于Python)编写脚本,您可以立即测试结果,而无需编译。

+0

C++必须编译yes,但不一定要汇编,也不一定需要重新启动。 – 2012-08-15 17:24:04

+0

因为即时通讯发现视觉工作室已经可以做到了,我有团结,有时我会用它,但我从来没有真正受过训练,我不会限制自己一种语言即时通讯15,这是我的第一语言,我只是希望有可能 – Brandon 2012-08-15 17:33:52

4

这是不是一个真正的答案,所以可能不应该得到upvotes,但信息。

我不知道任何C++ IDE可以执行代码的运行时更新,但这绝对不是不可能的。有很多已经有JIT代码的C++汇编程序,实时更新仅仅是我知道的还没有IDE采用的下一步。
asmjit可以JIT C++
Visual Studio可以JIT C++/CLI(这是不太C++)(RMartinho纠正了Visual Studio中编译的C++/CLI到IL,然后即时编译的IL。Tehcnically不同。)
cling用途clang fruntend和 LLVM后端,它有一个JIT代码生成系统。

R.Martinho也提醒我,微软的Visual Studio已经有这个功能。 http://msdn.microsoft.com/en-us/library/esaeyddf(v=vs.100).aspx如果您“停止”了代码,则可以进行更改,并将应用这些更改并恢复执行。

+0

编辑并继续存在重大问题,我发现它在大多数游戏开发项目中都不起作用。 – 2015-02-13 09:51:33

+0

@DougBinks:我遇到过的唯一问题是您无法编辑调用堆栈中不在顶层的函数。或者我没有在编译选项中启用编辑和继续选项 – 2015-02-13 23:34:54

+1

MS站点上列出了不支持情况的完整列表:https://msdn.microsoft.com/en-us/library/0dbey757(v = vs.120).aspx。缺少对优化代码的支持是游戏的一大问题,您无法更改对象的布局,从而无法进行严重的更改。 – 2015-02-15 11:14:41

1

如何在Visual Studio中编辑并继续?为了使用它,你必须暂停执行(通过断点或暂停按钮),重新编译并继续。请注意,您可以在程序运行时编辑代码。我知道你不能直接测试游戏,但你不需要重新加载资源等。它的IDE集成使它非常简单易用。

但是,如果您希望更改在现场可见,请考虑使用脚本语言(如Lua)。他们的目标之一就是你想要达到的目标。

+0

你需要视觉工作室还是将视觉C++表达为我工作? – Brandon 2012-08-15 17:55:50

+0

我认为它也包含在Express中。您还可以免费下载2012 Ultimate RC。 – 2012-08-15 18:26:10

+0

好的,谢谢。 – Brandon 2012-08-21 14:24:45

0

组织您的C++游戏以使用插件,并添加一个功能以在游戏过程中加载新的(二进制版本)插件。

然后,你可以玩你的游戏,重新编译一个插件,重新加载它(所以调用你dynamic linker在运行时),并继续播放。

这不是失败,但它可能通常工作。

当然,你不能卸载一个在(或某些线程)call stack上有一些活动调用帧的插件。我会建议避免卸载旧插件...