當前位置:首頁 » 網頁前端 » 一體化腳本和lua
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

一體化腳本和lua

發布時間: 2023-05-14 11:20:20

1. 為什麼用 lua 替換 luajit

1、新建一個名為1.lua的文件春笑或,裡面只有一句話print("Hello Lua"),新建一個空的out.lua腳本文件
2、開始--運行--cmd
3、luac -o out.lua 1.lua
註: luac -o [編譯後腳本名] [腳本名],必要時帶上腳本路徑,如:回車之後,再打開out.lua就可以看到編譯好的位元組碼瞭然後實驗一下,執行這個位元組碼腳本,可以看到lua原生的解釋器可以直接解析luac編譯出來的bytecode腳本,很方便!重點:
做完了以上的一系列之後,我照著這個方法編譯項目中的腳本,然後在cocos2dx環境下使用,發現不行!於是又查了一下資料,發現2dx使用的是luajit,lua原生編譯出來的bytecode和luajit是不兼容的,所以照著上面方法編譯出來的bytecode腳本無法在2dx中使用。
解決這個問題其實很簡單,就是用2dx自帶的luajit編譯lua腳本,下面附上luajit編譯bytecode的方法:
1、在cocos2d-x-2.2.3\scripting\扒伍lua\luajit\LuaJIT-2.0.1\src目錄下有個msvcbuild.bat批處理文件,需要先把luajit.exe這個東西給編譯出來。
2、打開visual studio的命令行工具,這個只要裝了vs都會有,在安裝目錄裡面可以找到。
3、用vs的命令行工具cd到luajit的src目錄
4、執行msvcbuild.bat批處理文件,編譯出luajit.exe編譯完成之後,會在src目錄下生成一系列文件,其中有一個luajit.exe接下來就可以使用luajit.exe編譯lua腳本的bytecode了:luajit -b [腳本名] [編譯後的腳本名],執行完後會在src目錄下生成一個已經編譯成bytecode的jit.lua文件
下面把編譯之後的jit.lua放在2dx中試一下,以HelloLua工程為基礎,把jit.lua放到\samples\Lua\HelloLua\Resources下升早,修改AppDelegate.cpp中的lua調用為std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");

2. javascript和LUA這兩個腳本語言哪個強一些

lua運行更快。
lua經常和c/c++一冊盯滲掘起用,而js主要用州喊和於web編程。至於強大,其實都差不多的,只是用途不同而已。

3. lua語言和易語言哪個做游戲輔助好,哪個更容易學 大夥給點建議

當者瞎態然是lua語言了。易首源語言不開放,怎麼嵌入到你的游戲神純中都是個問題。所以覺得很多學易語言的真心沒思考清楚。

4. 淺談游戲腳本策劃的職能

腳本,是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件,又稱作宏或批處理文件。下面我們就來談談游戲腳本策劃究竟是干什麼的。想了解更多相關資訊請持續關注我們應屆畢業生培訓網。

游戲腳本策劃主要干什麼?

腳本策劃近幾年逐漸被重視。越來越多的引擎,越來越多的游戲,對游戲腳本的定義和開發的支持,讓腳本的功能越來越強大,也成為游戲策劃開發游戲的利器之一。 在介紹腳本策劃之前,我有必要先解釋一下什麼叫腳本。

通俗點說,腳本就是利用程序實現一個簡單的循環。放在游戲中的具體例子就是:大家都知道,網路游戲中的練級場所會定時、定點刷新怪物。但這怪物是怎麼刷新出來的?當然不是由GM上線刷新,而是利用事先設計好的腳本,系統將自動按時間和地點刷新怪物。 而腳本策劃所要做的,就是製作游戲中不同的腳本,比如上面提到的怪物刷新腳本、任務腳本等等。

游戲腳本策劃是策劃團隊中的“程序員”

腳本策劃一般需要有一定的編程基礎,因為腳本本身其實就是一種程序。

腳本策劃的工作內容比較單一,屬於偏執行方面的策劃,是策劃團隊中的“程序員”,主要負責游戲中腳本程序的編寫。

腳本策劃類同於程序員但又不同於程序員,因為會負責游戲概念上的一些設計工作。通常是游戲設計的執行者。因此游戲腳本策劃必須要有編程功底,他的工作是任務等的腳本編寫,以及管理程序提供的各種需要策劃維護的腳本介面。

腳本語言就是游戲世界得以運行的基石

如果說開發語言是游戲程序得以運行的基石,那麼腳本語言就是游戲世界得以運行的基石。一切劇本、圖片、音樂、動畫等皆是由腳本語言整合在一起並由程序解釋執行的。所以可以說腳本是程序與劇本之間的橋梁,所以也是主程序與劇情負責必須共同掌握的部分。

腳本是如何形成的?程序設計的本身拓展和設計越來越復雜,而且分劃出不同的類型,同時在繼承發揚中丟失著,底層的構架被越來越多的人所拋棄,程序的東西,讓人望而卻步,無法駕馭,而腳本就如程序管理員一樣抓住程序設計本身一些最基本的構成思路和運行機理,是一種總結概括,把重點提煉,把相關歸類,把過程簡化,保留一般的`規則。 腳本簡單地說就是一條條的文字命令,這些文字命令是我們可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。

各個游戲公司常用的腳本有:LUA和PYTHON

有些游戲公司的腳本,是由公司程序員自己編寫的一種開發工具。

常用游戲腳本中,目前應用比較廣泛的有幾種,一個是LUA,一個是PYTHON。

LUA腳本,在魔獸世界中發揚光大(後來的征途中好像也採用LUA腳本),好多游戲都開始接受並且學習這種腳本知識,以期能應用到自己游戲中,游戲腳本的好處就是,能夠快速的調動一些游戲資源,利用自己手上的關鍵欄位進行指揮,統領,運營部門最適用。

lua腳本與python腳本對比分析

1、兩者的定位不同。python的定位在於自身的獨立開發,即是說python定位於自己能解決所有的問題。lua定位在與其它的代碼,尤其是C++代碼進行相互配合的編譯,單獨的Lua本身沒有任何的意義。

2、站在解決問題的角度上看。python依靠自身越來越強大的庫,讓編程者能實現越來越多,越來越復雜的問題。lua本身則必須與其它的編譯語言結合,才能解決問題。以C+++lua來舉例。單獨的C++,因為C++的復雜性,在其解決問題提供方便的同時,也給程序員帶來了很大的麻煩,這些麻煩主要有兩個方面:1,C++本身,特別是能用好C++,對程序員就來說就是一個很高的要求。2,在解決復雜問題時,C++程序結構的復雜性和邏輯實現的復雜性,給程序員對程序的改進和維護帶來了很大的麻煩。而C++與Lua的結合,讓C++可以只負責為lua提供各種基本的功能函數庫,而Lua調用這些庫來實現各種邏輯功能。這種分工可以讓程序員將程序中的基本代碼庫和邏輯實現代碼進行分離,使程序的效率和可維護有了很大的提高。所以,如果真的要站在解決問題的角度來對python和lua進行對比的話。實際上,是C++與python進行對比,而與lua無關。

3、python與C++對比,我覺得python與C++對比的優勢就在於其所提供的基本庫,大大的降低了程序復雜度與可維護性對程序員本身的要求。比如,同樣的功能,如果是C++來做的話,可能其程序員必須具備三年的經驗,如果是python來做,而python又有解決問題所需要的庫的話,一個具有一年程序經驗的程序員可能就能完成了。但是,同樣的,如果是C++與Lua結合來解決問題的話,可能就只需要半個高級程序員和一個只有c語言一年經驗的程序員就可以了。半個高級程序員負責提供lua的函數庫,另一個程序員,只需要用這些代碼庫實現邏輯就行了。

綜上所述,C+++lua的開發模式,和python源代碼庫開發+python腳本開發模式其實是一樣的。但是站在程序員的角度上來說,C+++lua就更為簡單一些,因為除去基本的lua解釋代碼外,C++可以為lua動態提供各種函數庫。而python程序員則必須受制於python所提供的各種功能庫。所以,如果解決一些具有普遍性和重復性的問題時,python是有優勢的,因為有很多的代碼可以不用重寫,而C+++lua則必須重構。如果是解決一些非普遍的問題,如果python本身沒有提供解決這些問題的庫的話,python程序員,就必須走回C++的老路。

5. 游戲開發中常用哪種腳本語言

隨著《魔獸世界》(以下簡稱wow)在世界范圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這一腳本語言一舉成名。x0dx0ax0dx0a其實早在Lua腳本語言被大眾所熟知以前,游戲業內人士就已經開始使用腳本來開發游戲了。我們熟悉的很多國內的網路游戲大都運用了腳本開發,比如網游的長青樹「夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本游戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同一起跑線上的,並不存在什麼差距,這也為國內游戲產業趕超國外游戲產業提供了強有力的技術保證。x0dx0ax0dx0a在單機游戲時代,腳本這個詞幾乎很少出現,那麼,為什麼在網路游戲時代它卻成了業界的寵兒呢?原因是多方面的。x0dx0ax0dx0a單機游戲時代,無論游戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行「壓榨」。隨著科技發展和硬體性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於游戲市場有這方面的需求。x0dx0ax0dx0a網路游戲時代的市場競爭激烈、變化莫測,如果延用單機時代一年半載才出一個新版本的開發方式,必然會被游戲行業激烈的市場競爭所淘汰。正是這種游戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯吵碰型語言(asngC/C )的性能優勢在硬體功效大幅攀升的今天已經不復存在。x0dx0ax0dx0a除了市場和硬體這兩個因素之外,還有一點我們不能忽略。那就是用C/C 進行游戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網路游戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力僱傭大量C/C 程序員的公司,在開發游戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,游戲公司開始在游戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。x0dx0ax0dx0a二.腳本的現狀x0dx0ax0dx0a腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在游戲業內蓬勃發展起來,乎槐並且已經成為游戲業中不可或缺的一環。縱觀當前腳本技術現狀,形勢一片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在游戲業界開花結果,在web等其它應用領域也大放異彩。x0dx0ax0dx0a首先,我們來看看目前比較流行的腳本:Python、Lua、ruby和Erlang。Python和Lua是網路游戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在游戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網游伺服器的開發人員的目光。x0dx0ax0dx0a其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著升頃談RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網路應用的需求,Erlang有著光明的發展前景,現在<>等書也已經在策劃出版了;反觀Lua,雖然目前越來越流行,但由於它晦澀的介面設計和缺乏大型應用的支持,使得相關書籍寥寥無幾。x0dx0ax0dx0a最後,我們把焦點重新聚集到游戲開發行業中,其實不難發現,除了前文提到的《魔獸世界》和網易經典「西遊系列」使用了腳本外,現在大多數比較流行的程序也都使用了腳本,如騰訊的QQgame))和搜狐的《天龍八部》等。不僅如此,現今的游戲引擎也都提供了腳本介面,無論是商業的unreal引擎還是開源的 OGRE,無一例外。x0dx0ax0dx0a三.腳本的優勢x0dx0ax0dx0a腳本之所以能夠在游戲業中找到自己的一席之地,是因為網路游戲市場需要一個快速開發方案來避免C/C 開發帶來的項目高成本和高風險。那麼,腳本相對於C/C 這類編譯型語言到底有什麼優勢呢?x0dx0ax0dx0aI易於學習,代碼可維護性強x0dx0ax0dx0a腳本的語法通常都非常簡單,也沒有太多高階的特性,學習的門檻較C/C 低得多,比如Python可能只需要花一個下午即可學會。這使得游戲開發公司可以招聘完全沒有腳本、編程經驗的新手,通過低成本的培訓,他們便能迅速地走上工作崗位。除易於學習外,腳本代碼也有較強的可維護陛(盡管寫出沒有人看得懂的Lua代碼也非難事)。因為腳本沒有很多高階特性(如c 里的模板元編程就是高階特性),所以腳本程序員就有更多的精力去架構、模式、重用和測試等工作,從而提高了代碼的可維護性。相應地,正因為沒有那麼多讓人困惑的高階特性,也使得腳本代碼「簡潔」不少。x0dx0ax0dx0a2.降低開發成本x0dx0ax0dx0a如上所言,由於腳本易於學習,游戲開發公司可以大量起用新手,這正是降低成本的有效手段。那麼如何來確保新手所寫代碼的質量呢?眾所周知,新手無論用什麼語言寫程序肯定會出現bug,但用C/C 和Python做比較,可以看出,一個新手用C/c 編寫出的程序所出現的bug肯定會比用Python編寫出現的bug要多。由於c程序需要編譯,而腳本程序(大部分)都可以直接解釋執行,所以在排除 bug方面腳本也佔有一定的優勢,這也使腳本在降低成本的同時能夠更好地保證代碼質量。x0dx0ax0dx0a3.形成人才壁壘x0dx0ax0dx0a軟體開發行業是一個頗為動盪的行業,無數的程序員都在跳槽和謀劃跳槽的狀態中生活,使用腳本開發形成人才壁壘是游戲業減少人才流動的有效手段。因為現在腳本除了在游戲業中非常流行外,並沒有在其它行業形成廣泛應用(雖然在web開發方面也有燎原之勢,但終究不如在游戲業中的地位高)。這就使得游戲程序員很少會考慮非游戲行業的職位,但其它行業的程序員卻可能會因為腳本的易學習性而轉投游戲業。腳本除了能有效形成行業間的人才壁壘外,也能有效地形成企業間的人才壁壘。由於現有的腳本種類繁多,不同公司往往有不同的選擇,甚至有些公司使用自己開發的腳本語言,所以程序員從公司A跳槽到公司B可能要學習使用另一種腳本,這就提高了跳槽的成本,從而減少了人才的流動。x0dx0ax0dx0a四.腳本的發展趨勢x0dx0ax0dx0a依照目前趨勢來看,腳本語言一定會更加的普及,而且會逐漸滲透到其它行業中。隨著網路游戲從業人員數量的增長,腳本程序員也一直增加,而且Web2、0熱潮引起的網路需求,也促成了一批批新腳本程序員的誕生。網路游戲市場就像一個正在滾動的雪球,推動著腳本的普及。x0dx0ax0dx0a隨著腳本在游戲業中越來越流行,市場對生產效率的需要也會相應提高。腳本雖然在一定程度上緩解了生產效率與生產工具之間的矛盾,但仍然不夠完善。由於市場競爭日趨激烈,而網路游戲在很多功能上的實現又都相差無幾,如網路、資料庫、圖形甚至部分邏輯,這必然會引起網路游戲生產的組裝化一一大量中間件相互組合形成新的網路游戲。從目前來看,Bigwofld、PhysX和Unreal等都是比較流行的網路游戲中間件。腳本語言則是粘合各個中間件的良好膠水語言,所以隨著網路游戲的生產組裝化,腳本將有更大的發展空間。x0dx0ax0dx0a那麼,當腳本發展到如日中天的時候,可能取代C/C 這些編譯型語言嗎?筆者認為不會。腳本語言和編譯型語言在生產效率和執行效率上各擅勝場,網路游戲既需要能快速應變的腳本,也需要能快速執行以提供更絢麗游戲效果的編譯型語言。未來,它們之間一定會保持長久的和諧互補關系,相輔相成。x0dx0ax0dx0a五.結語x0dx0ax0dx0a綜上所述,網路游戲時代是上帝賜予腳本語言發展的絕好時機,腳本語言很快將迎來光芒四射的時代。腳本語言擁有編譯型語言無可比擬的生產效率優勢,所以它們將互補互助並肩奮戰在游戲的最前線。

6. 什麼是Lua

Lua是一種 簡單橡緩、可擴展、可移植及高效的腳本滑仔語言

是一種面向 C 的 API 存在一個特別的 虛擬棧 ,通過這個棧與lua交換數據
棧大大簡化了C API 的設計與使用,還能保證 其他語言與lua 有效的隔離開

從設計目的來講:
1.就是梁讓模某一個功能模塊,通過lua進行擴展
2.想只靠lua開發程序,是不太現實的

7. 請問自己的軟體如何運行Lua腳本

programming in lua 有相關的例子,一般腳本語言和c/c++之類的互相調用分兩類,一類是擴展,就是將c/c++模塊封裝起來給腳本語言用,用swig做封裝很方便的,一類是嵌入,就是在c/c++等應用中嵌入lua引擎,一般是用來分離經常變化的邏輯部分,比如WOW就是用lua語言作為擴展,用戶可以編寫lua腳本來完成一些特定功能的機器人。你要做的就是使用lua c api來在你的程序中執行lua。類似這種:

int iErr = 0;
lua_State *lua = lua_open (); // Open Lua
luaopen_io (lua); // Load io library
if ((iErr = luaL_loadfile (lua, "test.lua")) == 0)
{
// Call main...
if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
{
// Push the function name onto the stack
lua_pushstring (lua, "helloWorld");
// Function is located in the Global Table
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pcall (lua, 0, 0, 0);
}
}
lua_close (lua);

8. 游戲腳本語言,是不是lua超越python了

哪個語言好 哪個語言不好 都是不客觀的,片面的
但是在實際應用上lua確實比python更加普遍,只是因為更適合
lua本身的定位 就是嵌入其他程序,完成一部分的邏輯的功能 而本身不提供強大的機制,因此lua本身就只有200K左右
而python的定位則完全相反,python需要能獨立完成所有工作,因此它的定位是大而全,不同於小而精的lua,它的大小 有好幾十M,這樣的大小,對於大部分的游戲而言,不能被接受,所以lua使用的更多