2015-07-01 31 views
0

所以最近,我在我的C++引擎中實現了lua腳本,並且爲我所有的類(Window,InputHandler,Mesh,Shader,等等...)。但是現在我想到了,將所有C++類包裝到lua類中是否好呢?我不應該使用lua腳本來處理更具體的事情,並且使用C++編寫窗口管理代碼?這是一個盧阿樣本:當你應該使用lua腳本,並且不應該使用

local input = alpha.InputHandler() 
local window = alpha.Window(100, 100, 1000, 900, "Hello Gangnam Style !", false, false) 

function main() 

    repeat 
     window:Clear(0.5, 0.5, 0.5, 1) 
     window:SwapBuffers() 
     input:Update() 
    until input:CloseRequested() == true 
end 

main() 
+0

這是一個恥辱,這個問題確實太廣泛了,而且基於觀點,所以它不適合SO。然而,這裏有一個觀點:是的,我認爲你對Lua的評價太過分了:p //當你整合一種腳本語言時,最初的平衡是「C++中的引擎,剩下的就是Lua」。例如,你的主循環,你的物理引擎等應該是C++,而在你的平臺遊戲中的一個槓桿行爲是一個很好的腳本候選人。如果您完全可以表達您的腳本而不關心引擎的外觀,那麼您已經完美實現了它。 – Quentin

+0

將類X暴露給Lua是否有利/有必要?如果是的話,包裝它,如果沒有,那麼不要。它應該是一個沙箱,具有明確的範圍。 –

+0

所以,你想讓我們解釋你,你爲什麼要這樣做? =)實際上,它取決於你(你正在處理的任務),你是否應該用Lua包裝任何東西,以及如何使用腳本。如果您將更新整個用戶界面結構,並且不希望在每次發生應用程序時重新編譯應用程序 - 您的決定將會執行。 –

回答

2

這真的取決於您的需求和上下文。

您是否銷售發動機? 您是否希望購買者訪問Lua腳本,還是僅用於調試/原型設計?

我發現把Lua中的所有東西都綁定起來非常方便,因爲我可以快速創建新功能。雖然它可能是一個非常規的解決方案,但對於低級特性,我可以切換回C++。

如果您打算讓最終用戶使用Lua腳本,您還可以對其進行沙盒處理,爲用戶提供白名單功能的子集。 http://lua-users.org/wiki/SandBoxes

+0

1)不,它會成爲一個開源的遊戲引擎;是的,我實際上希望他們將遊戲邏輯分離成腳本。經過反思之後,我認爲我會把渲染的東西留給C++,並且把遊戲邏輯交給lua(比如遊戲循環,輸入處理......)這是一個好主意嗎? – MattMatt

+0

這是個好主意!雖然我覺得它非常方便,能夠在盧阿原型渲染的東西原型:) –

+0

好吧!我同意 !如果您感興趣,我會發布鏈接到github項目! – MattMatt

相關問題