2009-10-21 71 views
3

我正在開發一個項目,我希望用戶能夠儘可能地修改和定製。Lua是遊戲服務器的最佳/最快選擇?

開源可能​​是一個不錯的選擇,但不是因爲我想保留一些內部類的事實。

我想過的其他兩個選項是插件作爲外部庫和Lua腳本。

庫(DLL)的問題在於跨平臺兼容性是必須具備的,因爲它是某種遊戲服務器,主要用於專用服務器(通常是Linux),但許多人也會在他們的本地機器(主要是Windows)上使用它。

由於它是一個遊戲服務器應用程序,應該能夠處理大量的連接,並且與遊戲性能相關的操作非常重要,所以我對Lua腳本有所懷疑。

我的懷疑是否合理或者Lua會是一個很好的解決方案? 你也可以考慮我關心的任何更好的/其他的選擇嗎?

綜上所述重要方面:

  • 跨平臺兼容性
  • 良好的性能( - >在線遊戲)
  • 插件/任何人都可以,只要建立在他/她的腳本知道的語言,可以說,它是Lua中,C或閉源的插件/腳本(不是那麼重要了什麼
  • 選項,但會被罰款:)

回答

5

恐怕唯一能回答的人就是Lua對你來說足夠快就是......你。我們不知道你到底在做什麼以及你如何實施它。我的建議是原型和測量。在Lua和C/C++中編寫一個小而相關的系統部分,測量兩者的性能,並確定Lua是否足夠快。將WoW作爲案例研究,Lua似乎對遊戲的客戶端/用戶界面部分來說足夠快,但我無法對服務器進行任何說明。但無論如何,我懷疑那裏的語言比Lua更快,更易於嵌入(免責聲明:我本人沒有測量過Lua的性能,尤其是沒有反對其他類似的語言,所以請帶上一粒鹽

您提到了一些關於不是跨平臺的DLL,所以僅供參考:如果您想將DLL用於插件並動態加載它們,則Linux上也存在相同的功能。 「DLL」被稱爲「共享庫」或「共享對象」,通常以.so的擴展名爲前綴。而不是窗口LoadLibrary,GetProcAddressFreeLibrary,有dlopen,dlsymdlclose

+0

對不起,以前很忙。 感謝您的幫助,我會盡快嘗試LUA。 我的服務器應用程序將瞄準的遊戲是魔獸爭霸III。 很多人在某些地圖上的響應時間非常短,例如50-100毫秒,這就是爲什麼我擔心性能。 我對動態庫的問題是我想提供某種像Linux那樣的存儲庫的數據包管理。 但我懷疑是否有任何可能提供任何種類的仍然是跨平臺的預編譯的東西。 也許應該早些提到這一點,但..謝謝:) – Spoofy 2009-10-31 20:57:23

2

沒有什麼可以阻止您爲應用程序中的不同模塊提供不同的許可,顯然這排除了使用GPL 3,因爲這會立即覆蓋所有內容。

+0

根據模塊如何耦合,GPL 2可能無法正常工作。通常情況下,動態鏈接不是防火牆,可以防止GPL許可證應用到其他模塊。將模塊作爲單獨的進程調用通常足以阻止GPL許可證在整個流程邊界上應用。 – 2009-10-21 19:24:59

+0

LGPL呢? – Lazarus 2009-10-21 22:07:05

+0

非常感謝快速回復。 也許我的描述有點誤導,但我的擔心並不是使用什麼許可證,但是如果LUA對於速度非常高的遊戲服務器應用程序足夠快地執行。 或萬一它不會,如果任何人都可以想到一個很好的選擇;) – Spoofy 2009-10-22 21:52:42

1

你有沒有想過AngelScript?我也不太瞭解它,但它似乎具有類似C++的語法,並且非常靈活並且極其跨平臺。

+0

而不像Lua那樣使用C API來嵌入C/C++,它使用完全的OOP C++ API,如果你感覺更舒服。 – 2009-12-06 23:10:15