我一直在使用C++編寫的平臺遊戲幾個月。遊戲目前完全是用C++編寫的,雖然我對使用Lua作爲敵人AI和其他邏輯的可能性感到好奇。然而,這個項目的設計並不考慮Lua,而且我已經爲大部分AI編寫了工作C++代碼。我希望Lua可以提高遊戲的可擴展性,但不知道將現有的C++代碼轉換爲Lua是否有意義。
問題:
時,如果有的話,是不是適當採取功能齊全的C++代碼,並將其重構爲一個腳本語言Lua的一樣?
這個問題是故意含糊不清,所以隨意給出與給定背景無關的答案。
我一直在使用C++編寫的平臺遊戲幾個月。遊戲目前完全是用C++編寫的,雖然我對使用Lua作爲敵人AI和其他邏輯的可能性感到好奇。然而,這個項目的設計並不考慮Lua,而且我已經爲大部分AI編寫了工作C++代碼。我希望Lua可以提高遊戲的可擴展性,但不知道將現有的C++代碼轉換爲Lua是否有意義。
問題:
時,如果有的話,是不是適當採取功能齊全的C++代碼,並將其重構爲一個腳本語言Lua的一樣?
這個問題是故意含糊不清,所以隨意給出與給定背景無關的答案。
腳本語言對於可能頻繁更改或擴展的事物非常有用,並且可以提高交易速度。
在覈心庫中使用腳本語言是沒有意義的,因爲它們是相對靜態的(他們所做的只是一次又一次地處理東西),並且需要很快。但對於像AI這樣的東西,這是一個完美的主意。您可以在不重新編譯的情況下調整AI,並且可以很好地進行未來的更改。一旦你發佈,你可以預編譯腳本語言,並稱它爲好。
這對擴展性也是最好的。爲你的遊戲提供一個Lua接口,任何人都可以使用簡單的語言編寫插件,而無需編譯。 Lua界面越豐富,這些插件就越具有表現力和強大功能。
如果你已經有了一切工作,除非你打算試圖改進它或允許擴展,我真的不認爲有理由將其剝離;你完成了。這將是你的下一個遊戲引擎記住的事情。這就是說,如果你沒有完全完成,這是一種業餘愛好/實踐,我會建議你這樣做。這將是您向遊戲引擎添加腳本功能的介紹。當你開發更大更復雜的引擎時,你不需要擔心新的事情。
什麼時候可以採用全功能的C++代碼並將其重構爲像Lua這樣的腳本語言?
很少。這裏的時候我已經做到了:
我想改變設計或在需要我反正重溫C++代碼的方式添加功能。
我找到了C++代碼的一部分,我一遍又一遍地進行了更改。
我相信通過從C++遷移到Lua,我可以讓代碼縮小五到十倍。
前兩個子彈是任何人都可以做的事情。第三個需要一些經驗。
因此,如果我確信AI代碼的某些部分永遠不會改變,那麼您是否建議我將該代碼保留在C++中或將其移植到Lua中以保持一致性? 感謝您的有用答案。 – 2010-06-13 19:58:09
@Justin:這取決於你的目標。如果它確實已經完成,並且最終需要儘快完成,請離開它並繼續其他事情。但是,如果這是一個學習的東西,移植它來實踐。 – GManNickG 2010-06-13 20:15:59
您可以使用混合方法。一些AI可以使用的部分AI可以使用,並且速度要求很高,可以留在C中.Lua腳本只會是協調器,或多或少。 – 2010-06-13 20:30:34