首頁>Club>
21
回覆列表
  • 1 # innernine

    首先,是為什麼指令碼語言在遊戲開發中應用普遍。指令碼語言在遊戲開發中不是必備的,但是用C/C++這樣的語言寫遊戲邏輯真的非常繁瑣複雜。現在的遊戲開發,往往選擇引擎/指令碼分隔的方式,即底層引擎是高效能的語言寫的,而上層邏輯使用更加程式設計友好的指令碼語言,這種方式在機器學習領域也很流行。

    再說為什麼是lua而不是其他指令碼語言更流行。lua的一大特點是小巧,體現在語言本身簡單沒有過多複雜的特性,以及整個庫的體積小、執行佔據資源也小兩方面,再加上天生和C/C++的友好對接,使得其在遊戲開發領域快速流行起來了。

  • 2 # yungs

    Lua是什麼

    Lua是一款輕量小巧的指令碼語言,這就使得Lua不能作為開發獨立應用程式的語言,Lua是由標準C開發的,這就使得他很容易被C/C++呼叫,也很容易呼叫C/C ++。Lua可以在所有平臺上執行,而且速度很快。

    Lua很簡潔

    Lua不像其他高階語言一樣有很多功能和庫,Lua透過呼叫C去實現功能,所以自身沒有太多複雜的功能,上手很簡單。Lua 中有 8 個基本型別分別為:nil、boolean、number、string、userdata、function、thread 和 table。

    Lua特性

    輕量:lua只有一個精簡的核心和基本庫,核心不到120kb,這使得lua體積小,很容易嵌入到其它語言中

    易擴充套件:由於可以直接呼叫c,使得lua很容易擴充套件。功能由宿主語言編寫,lua只負責呼叫。

    無需編譯:lua檔案就是一個文字檔案,不需要編譯成二進位制,這就使得lua可以隨意更改。這為熱更新奠定了基礎。

    Lua應用場景

    電腦應用指令碼,遊戲熱更新指令碼,web應用開發基本,資料庫擴充套件指令碼等等。

    例如unity中的lua熱更新

    匯入模組後,就可以進行lua開發了。

    Lua熱更新

    由於Lua是文字資料夾不需要編譯,所以應用的UI層或者遊戲活動介面內容等等都可以用lua來寫,需要更新介面或者活動時,就可以直接更改lua檔案,然後放到伺服器,使用者更新後就會啟用新功能,不需要重新下載應用程式。

  • 3 # 和不同

    不是遊戲業內人士,就個人的理解來說一說:

    指令碼語言存在的必要性

    遊戲開發中,往往使用C,C++,Objective C,Java等靜態語言編寫遊戲引擎,以提供較好的效能。這部分語言往往有一定學習難度,沒必要讓團隊大部分成員掌握。

    將遊戲的一部分容易改變的邏輯用指令碼語言的形式實現,有助於降低遊戲規則、引數等變數的修改難度,從而降低遊戲整體開發成本,提高開發效率。

    對於網遊(無論端遊還是手遊)更是如此,指令碼語言的存在,方便遊戲隨時熱更新,而不必等待App稽核。

    Lua的設計適合嵌入其它應用

    相對於那些設計用於獨立執行的指令碼語言(Python)或嵌入於特定環境的指令碼語言(Javascript)Lua是一種非常適合嵌入的指令碼語言,例如:

    Lua的直譯器小巧:Lua 5.3.5原始碼包整個還不到300KB,對比一下超過17MB的Python 3.8.3,Lua小很多,而小也意味著更低的程式碼學習和移植成本。Lua使用純C語言實現,單執行緒執行,其基本系統中與作業系統相關性極低(malloc+free就夠了),移植起來非常方便。與之形成對比的如Python、Javascript這樣的語言,與作業系統關聯性大,移植難度也大不少Lua虛擬機器佔用資源很少,在僅有64KB RAM的微控制器上也能正常執行Lua虛擬機器在C程式中,可以方便的建立多個Lua虛擬機器,而由於使用了全域性變數,Python虛擬機器只能建立一個Lua的功能夠用

    還有一些非常簡單的指令碼語言,如Tcl。相對這些語言,Lua是一種現代的動態語言,靈活性高,能夠滿足絕大多數遊戲的需求。

    先入為主

    另外,遊戲行業嵌入Lua已經有許多年了。英雄無敵、魔獸世界等遊戲都使用了Lua,這就培養了人才,積累了經驗,為後來者提供了榜樣。某種意義上,Lua已經成為了遊戲指令碼語言的標準,這樣,其它指令碼語言在沒有足夠優勢的前提下,很難替代Lua已有的位置。

    小結一下:

    Lua在夠用的前提下,做到了小巧、好移植、介面方便。還具備先發優勢。所以,在遊戲開發中應用普遍。

  • 中秋節和大豐收的關聯?
  • 一臺麵包車,一個小倉庫,三萬塊錢,適合做什麼回報快的小生意?