2012-08-15 62 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上有一些活動調用幀的插件。我會建議避免卸載舊插件...