2012-07-16 78 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