Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日本一级片在线播放,欧美亚洲日本在线,一级免费毛片

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Nginx Lua編程基礎

          ua是一門腳本動態語言,并不太適合做復雜業務邏輯的程序開發,但是,在高并發場景下,Nginx Lua編程是解決性能問題的利器。

          Nginx Lua編程主要的應用場景如下:

          • API網關:實現數據校驗前置、請求過濾、API請求聚合、AB測試、灰度發布、降級、監控等功能,著名的開源網關Kong就是基于Nginx Lua開發的。
          • 高速緩存:可以對響應內容進行緩存,減少到后端的請求,從而提升性能。比如,Nginx Lua可以和Java容器、Redis整合,由Java容器進行業務處理和數據緩存,而Nginx負責讀緩存并進行響應,從而解決Java容器的性能瓶頸
          • 簡單的動態Web應用:可以完成一些業務邏輯處理較少但耗費CPU的簡單應用,比如模板頁面的渲染。一般的Nginx Lua頁面渲染處理流程為:從Redis獲取業務處理結果數據,從本地加載XML/HTML頁面模板,然后進行頁面渲染。
          • 網關限流:緩存、降級、限流是解決高并發的三大利器,Nginx內置了令牌限流的算法,但是對于分布式的限流場景,可以通過Nginx Lua編程定制自己的限流機制。

          ngx_lua是Nginx的一個擴展模塊,將Lua VM嵌入Nginx,請求時創建一個VM,請求結束時回收VM,這樣就可以在Nginx內部運行Lua腳本,使得Nginx變成一個Web容器。以OpenResty為例,其提供了一些常用的ngx_lua開發模塊:

          • lua-resty-memcached:通過Lua操作memcache
          • lua-resty-mysql:通過Lua操作MySQL
          • lua-resty-redis:通過Lua操作Redis緩存
          • lua-resty-dns:通過Lua操作DNS域名服務器
          • lua-resty-limit-traffic:通過Lua進行限流
          • lua-resty-template:通過Lua進行模板渲染
          • lua-resty-jwt:通過Lua生成jwt
          • lua-resty-kafka:通過Lua操作kafka

          Lua腳本需要通過Lua解釋器來解釋執行,除了Lua官方的默認解釋器外,目前使用廣泛的Lua解釋器叫做LuaJIT。LuaJIT采用C語言編寫,被設計成全兼容標準Lua 5.1,因此LuaJIT代碼的語法和標準Lua的語法沒多大區別。但是LuaJIT的運行速度比標準Lua快數十倍。

          Nginx Lua的執行原理

          在OpenResty中,每個Worker進程使用一個Lua VM,當請求被分配到Worker時,將在這個Lua VM中創建一個協程,協程之間數據隔離,每個協程都具有獨立的全局變量。

          ngx_lua是將Lua VM嵌入Nginx,讓Nginx執行Lua腳本,并且高并發、非阻塞地處理各種請求。Lua內置協程可以很好地將異步回調轉換成順序調用的形式。ngx_lua在Lua中進行的IO操作都會委托給Nginx的事件模型,從而實現非阻塞調用。開發者可以采用串行的方式編寫程序,ngx_lua會在進行阻塞的IO操作時自動中斷,保存上下文,然后將IO操作委托給Nginx事件處理機制,在IO操作完成后,ngx_lua會恢復上下文,程序繼續執行,這些操作對用戶程序都是透明的。

          每個Worker進程都持有一個Lua解釋器或LuaJIT實例,被這個Worker處理的所有請求共享這個實例。每個請求的context上下文會被Lua輕量級的協程分隔,從而保證每個請求是獨立的。

          ngx_lua采用one-coroutine-per-request的處理模型,對于每個用戶請求,ngx_lua會喚醒一個協程用于執行用戶代碼處理請求,當請求處理完成后,這個協程會被銷毀。每個協程都有一個獨立的全局環境,繼承于全局共享的、只讀的公共數據。所以,被用戶代碼注入全局空間的任何變量都不會影響其他請求的處理,并且這些變量在請求處理完成后會被釋放,這樣就保證所有的用戶代碼都運行在一個sandbox(沙箱)中,這個沙箱與請求具有相同的生命周期。

          得益于Lua協程的支持,ngx_lua在處理10000個并發請求時,只需要很少的內存。根據測試,ngx_lua處理每個請求只需要2KB的內存,如果使用LuaJIT就會更少。

          Nginx Lua配置指令

          ngx_lua定義的Nginx配置指令大致如下:

          • lua_package_path:配置Lua外部庫的搜索路徑,搜索的文件類型為.lua。
          • lua_package_cpath:配置Lua外部搜索庫的搜索路徑,搜索C語言編寫的外部庫文件。
          • init_by_lua:Master進程啟動時掛載的Lua代碼塊,常用于導入公共模塊。
          • init_by_lua_file:Master進程啟動時掛載的Lua腳本文件。
          • init_worker_by_lua:Worker進程啟動時掛載的Lua代碼塊,常用于執行一些定時任務
          • init_worker_by_lua_file:Worker進程啟動時掛載的Lua文件,常用于執行一些定時任務
          • set_by_lua:類似于rewrite模塊的set指令,將Lua代碼塊的返回結果設置在Nginx的變量中。
          • set_by_lua_file:同上,執行的是腳本Lua腳本文件。
          • rewrite_by_lua:執行在rewrite階段的Lua代碼塊,完成轉發、重定向、緩存等功能。
          • rewrite_by_lua_file:同上,執行的是Lua腳本文件。
          • access_by_lua:執行在access階段的Lua代碼塊,完成IP準入、接口權限等功能。
          • access_by_lua_file:同上,執行的是Lua腳本文件。
          • content_by_lua:執行在content階段的Lua代碼塊,執行結果將作為請求響應的內容。
          • content_by_lua_file:同上,執行的是Lua腳本文件。
          • content_by_lua_block:content_by_lua的升級款,在一對花括號中編寫Lua代碼,而不需要做特殊字符轉譯。
          • header_filter_by_lua:響應頭部過濾處理的Lua代碼塊,可以用于添加設置響應頭部信息,如Cookie相關屬性。
          • body_filter_by_lua:響應體過濾處理的Lua代碼塊,例如加密響應體。
          • log_by_lua:異步完成日志記錄的Lua代碼塊,例如既可以在本地記錄日志,也可以記錄到ETL集群。

          ngx_lua配置指令在Nginx的HTTP請求處理階段所處的位置如圖:

          常用配置指令

          • lua_package_path指令:用于設置".lua"外部庫的搜索路徑,此指令的上下文為http配置塊,默認值為LUA_PATH環境變量內容或者lua編譯的默認值。
            • 格式:lua_package_path lua-style-path-str。
            • lua_package_cpath指令:用于設置Lua的C語言塊外部庫".so"(Linux)或".dll"(Windows)的搜索路徑,此指令的上下文為http配置塊。
            • 格式:lua_package_cpath lua-style-cpath-str
          http {
            ...
            #設置“.lua”外部庫的搜索路徑,此指令的上下文為http配置塊
          	#";;"常用于表示原始的搜索路徑
          	lua_package_path	"/foo/bar/?.lua;/blah/?.lua;;";
          	lua_package_cpath	"/usr/local/openresty/lualib/?/?.so;/usr/local/openresty/lualib/?.so;;";
          }
          

          對于以上兩個指令,OpenResty可以在搜索路徑中使用插值變量。例如,可以使用插值變量$prefix或${prefix}獲取虛擬服務器server的前綴路徑,server的前綴路徑通常在Nginx服務器啟動時通過-p PATH命令在指定。

          • init_by_lua指令:只能用于http上下文,運行在配置加載階段。當Nginx的master進程在加載Nginx配置文件時,在全局Lua VM級別上運行由參數lua-script-str指定的Lua腳本塊。若使用init_by_lua_file指令,后面跟lua文件的路徑( lua_file_path),則在全局Lua VM 級別上運行lua_file_path文件指定的lua腳本。如果Lua腳本的緩存是關閉的,那么每一次請求都運行一次init_by_lua處理程序。

          格式為:init_by_lua lua-script-str。

          • lua_load_cache指令:用于啟用或禁止Lua腳本緩存。可以使用的上下文為http、server、location配置塊。默認開啟。

          格式為:lua_code_cache on | off

          http {
            ...
          	#項目初始化
            init_by_lua_file	conf/luaScript/initial/loading_config.lua;
            	
            #調試模式,關閉lua腳本緩存
            lua_code_cache on;
            ...
          }

          在緩存關閉的時,set_by_lua_file、content_by_lua_file、access_by_lua_file、content_by_lua_file等指令中引用的Lua腳本都將不會被緩存,所有的Lua腳本都將從頭開始加載。

          • set_by_lua指令:將Lua腳本塊的返回結果設置在Nginx變量中。

          格式為:set_by_lua $destVar lua-script-str params

          location /set_by_lua_demo {
          	#set 指令定義兩個Nginx變量
            set $foo 1;
            set $bar 2;
            			
            #調用Lua內聯代碼,將結果放入Nginx變量$sum
            #Lua腳本的含義是,將兩個輸入參數$foo、$bar累積起來,然后相加的結果設置Nginx變量$sum中
            set_by_lua $sum 'return tonumber(ngx.arg[1]) + tonumber(ngx.arg[2])' $foo $bar;
            
            echo "$foo + $bar = $sum";
          }

          運行結果:

          ?  work curl http://localhost/set_by_lua_demo
          1 + 2 = 3
          • access_by_lua指令:執行在HTTP請求處理11個階段的access階段,使用Lua腳本進行訪問控制。運行于access階段的末尾,總是在allow和deny這樣的指令之后運行。

          格式為:access_by_lua $destVar lua-script-str

          location /access_demo {
            access_by_lua	'ngx.log(ngx.DEBUG, "remote_addr = "..ngx.var.remote_addr);
            if ngx.var.remote_addr == "192.168.56.121" then
            	return;
            end
            ngx.exit(ngx.HTTP_UNAUTHORIZED);
            ';
            echo "hello world";
          }
            		
          location /access_demo_2 {
            allow "192.168.56.121";
            deny all;
            echo "hello world";
          }

          運行結果:

          ?  work curl http://localhost/access_demo
          <html>
          <head><title>401 Authorization Required</title></head>
          <body bgcolor="white">
          <center><h1>401 Authorization Required</h1></center>
          <hr><center>openresty/1.13.6.2</center>
          </body>
          </html>
          
          #上述案例運行日志:
          2022/02/15 10:32:17 [debug] 26293#0: *17 [lua] access_by_lua(nginx-lua-demo.conf:85):1: remote_addr = 127.0.0.1
          2022/02/15 10:32:17 [info] 26293#0: *17 kevent() reported that client 127.0.0.1 closed keepalive connection
          
          ?  work curl http://localhost/access_demo_2
          <html>
          <head><title>403 Forbidden</title></head>
          <body bgcolor="white">
          <center><h1>403 Forbidden</h1></center>
          <hr><center>openresty/1.13.6.2</center>
          </body>
          </html>
          
          #上述案例運行日志
          2022/02/15 10:33:11 [error] 26293#0: *18 access forbidden by rule, client: 127.0.0.1, server: localhost, request: "GET /access_demo_2 HTTP/1.1", host: "localhost"
          2022/02/15 10:33:11 [info] 26293#0: *18 kevent() reported that client 127.0.0.1 closed keepalive connection
          • content_by_lua/content_by_lua_block指令:用于設置執行在content階段的Lua代碼塊,執行結果將作為請求響應的內容。該指令用于location上下文。

          格式為:content_by_lua lua-script-str

          location /errorLog {
            content_by_lua '
              ngx.log(ngx.ERR, "this is an error log ");
            	ngx.say("錯誤日志調用成功");
            ';
          }
            		
          location /infoLog {
          	content_by_lua '
          		ngx.log(ngx.ERR, "this is an info log ");
            	ngx.say("業務日志調用成功");
            ';
          }
          
          location /debugLog {
            content_by_lua '
              ngx.log(ngx.ERR, "this is an debug log ");
            	ngx.say("調試日志調用成功");
            ';
          }

          OpenResty v0.9.17版本以后,使用content_by_lua_block指令代替content_by_lua指令,避免對代碼塊中的字符串進行轉譯。

          運行結果:

          ?  work curl http://localhost/errorLog
          錯誤日志調用成功
          ?  work curl http://localhost/infoLog 
          業務日志調用成功
          ?  work curl http://localhost/debugLog
          調試日志調用成功

          Nginx Lua的內置常量和變量

          內置變量

          • ngx.arg:類型為Lua table,ngx.arg.VARIABLE用于獲取ngx_lua配置指令后面的調用參數。
          • ngx.var:類型為Lua table,ngx.var.VARIABLE用于引用某個Nginx變量。前提是Nginx變量必須提前聲明
          • ngx.ctx:類型為Lua table,可以用來訪問當前請求的Lua上下文數據,其生存周期與當前請求相同
          • ngx.header:類型為Lua table,用于訪問HTTP響應頭,可以通過ngx.header.HEADER形式引用某個頭
          • ngx.status:用于設置當前請求的HTTP響應碼

          內置常量

          內置常量基本是見名知意的,可以根據后面的實戰案例,加深理解。

          核心常量

            • ngx.OK(0)
            • ngx.ERROR(-1)
            • ngx.AGAIN(-2)
            • ngx.DONE(-4)
            • ngx.DECLINED(-5)
            • ngx.nil

          HTTP方法常量

            • ngx.HTTP.GET
            • ngx.HTTP.HEAD
            • ngx.HTTP.PUT
            • ngx.HTTP.POST
            • ngx.HTTP.DELETE
            • ngx.HTTP.OPTIONS
            • ngx.HTTP.MKCOL
            • ngx.HTTP.MOVE
            • ngx.HTTP.PROPFIND
            • ngx.HTTP.PROPPATCH
            • ngx.HTTP.LOCK
            • ngx.HTTP.UNLOCK
            • ngx.HTTP.PATH
            • ngx.HTTP.TRACE

          HTTP狀態碼常量

            • ngx.HTTP_OK(200)
            • ngx.HTTP_CREATED(201)
            • ngx.HTTP_SPECIAL_RESPONSE(300)
            • ngx.HTTP_MOVED_PERMANENTLY(301)
            • ngx.HTTP_MOVER_TEMPORARILY(302)
            • ngx.HTTP_SEE_OTHER(303)
            • ngx.HTTP_NOT_MODIFIED(304)
            • ngx.HTTP_BAD_REQUEST(400)
            • ngx.HTTP_UNAUTHORIZED(401)
            • ngx.HTTP_FORBIDDEN(403)
            • ngx.HTTP_NOT_FOUND(404)
            • ngx.HTTP_NOT_ALLOWED(405)
            • ngx.HTTP_GONE(410)
            • ngx.HTTP_INTERNAL_SERVER_ERROR(500)

          日志類型常量

            • ngx.STDERR
            • ngx.EMERG
            • ngx.ALERT
            • ngx.CRIT
            • ngx.ERR
            • ngx.WARE
            • ngx.NOTICE
            • ngx.INFO
            • ngx.DEBUG

          Nginx+LUA基礎到此結束,下一篇開始實戰!并在實戰中掌握基礎。

          Lapis是一個為Lua語言設計的Web應用開發框架,它主要針對OpenResty,這是一個基于Nginx的高性能Web平臺。Lapis不僅提供了一個簡潔而強大的API來構建Web服務,還支持現代Web開發中的多種需求,包括路由、模板、數據庫集成、安全性等。

          核心特性

          1. 高性能

          Lapis利用OpenResty的強大性能,通過LuaJIT在Nginx內部運行Lua代碼,實現了高性能的處理能力。這意味著開發者可以享受到接近C語言級別的執行效率,同時保持Lua語言的簡潔性和靈活性。

          2. 異步編程

          Lapis支持Lua協程,允許開發者編寫看起來是同步的代碼,但實際上是異步執行的。這種方式可以顯著提高應用程序的并發處理能力,同時避免了回調地獄,使代碼更加清晰易讀。

          3. 路由和URL匹配

          Lapis提供了一個靈活的路由系統,允許開發者定義各種URL模式,并將其映射到相應的處理函數。這使得URL的設計和處理變得簡單而直觀。

          4. 模板系統

          Lapis內置了HTML模板系統,支持etlua模板語言,允許開發者以一種聲明式的方式編寫HTML頁面。此外,Lapis的模板系統還提供了HTML構建器語法,使得HTML的生成既安全又便捷。

          5. 數據庫集成

          Lapis支持PostgreSQL、MySQL和SQLite等多種數據庫,提供了一個強大的模型層抽象,使得數據庫操作變得簡單。開發者可以通過繼承Model類來創建自己的數據庫模型,并輕松地進行數據的增刪改查操作。

          6. 安全性

          Lapis提供了CSRF保護和會話支持,幫助開發者構建更安全的Web應用。通過內置的安全特性,可以有效地防止跨站請求偽造等常見的Web安全威脅。


          開發示例

          基礎路由示例

          local lapis = require "lapis"
          local app = lapis.Application()
          
          
          app:match("/", function(self)
            return "Hello world!"
          end)
          
          
          return app

          帶參數的路由示例

          app:match("/profile/:username", function(self)
            local username = self.params.username
            return "Welcome, " .. username .. "!"
          end)

          使用類定義路由

          local lapis = require "lapis"
          local app = lapis.Application()
          
          
          class extends lapis.Application
            "/": =>
              "Hello world!"
          
          
            ["/profile/:username"]: =>
              local username = @params.username
              "Welcome, " .. username .. "!"
          
          
          return app

          數據庫模型示例

          local Model = require("lapis.db.model").Model
          
          
          class Users extends Model
          
          
          local app = lapis.Application()
          
          
          app:get("/users", function(self)
            local users = Users:select("*")
            return { render = true, users = users }
          end)
          
          
          return app

          模板渲染示例

          local lapis = require "lapis"
          local app = lapis.Application()
          
          
          app:match("/", function(self)
            return self:render("index")
          end)
          
          
          return app

          結語

          Lapis是一個功能強大且高效的Web開發框架,它結合了Lua語言的靈活性和OpenResty的性能優勢。無論是構建簡單的Web服務還是復雜的Web應用,Lapis都是一個值得考慮的選擇。隨著社區的不斷壯大和生態系統的完善,Lapis有望成為Lua Web開發領域的重要力量。

          如你想踏入游戲開發或是游戲設計,而仍不確定自己想要什么,或是需要什么,這里有幾款容易入手的游戲引擎可以參考。文內引擎的挑選標準為功能完整,能夠承擔一款遊戲從開發初期到最終釋出,按字母順序排列。

          App Game Kit

          The Game Creators出品

          支持平臺:Windows,Linux, Mac OSX, iOS, Android, web browser, Raspberry Pi, SteamVR

          語言:C++、AppGameKit Script

          App Game Kit簡單易用易學習的2D/3D游戲開發工具包,擁有完整的游戲引擎功能,可快速建立內容發布到移動平臺,極適合個人、興趣、學校教育方面使用。

          特點:輕量化、更新極快速、多平臺編輯器支持

          授權:一次性支付.99,免版權費分成。一些擴充功能包另外購買。

          Game Blender

          BlenderFoundation維護

          支持平臺:Windows, Mac OSX, Linux

          語言:Python

          Blender是一款免費開源的3D內容創作套件。包括建模、uv展開、材質繪制、動畫制作、合成、流體/煙霧、粒子、渲染系統等功能,也包含一個游戲引擎。Game Blender有圖形邏輯編輯器,可定義交互行為而無須編程,也擁有各種引擎基本功能,訂制、擴充能力極強。

          特點:開源、更新極快速、真正的Allin One、強大的擴展性、多平臺編輯器支持。

          授權:GPL3許可證。

          CopperCube 5

          Ambiera出品

          支持平臺:Windows,Mac OSX, web browser, Android, Flash

          語言:C++,Javascript

          CopperCube一款簡易但完整的游戲引擎,擁有完整的編輯工具以及游戲預設,可以利用內建的功能建模并完成一款簡單的游戲,或是快速制作大型游戲的原型用以評估項目。

          特點:快速上手、普通更新速度、支持中文。

          授權:一次性支付.99,免版權費分成。

          外加9.99,獲得一些額外功能,獲得完整C++原碼。

          CryEngine V

          Crytek公司出品

          支持平臺:Windows,Linux, PlayStation 4, Xbox One, Oculus Rift, HTC Vive, OSVR 與 PlayStation VR

          語言:C++、C#、Schematyc

          CryEngine V是一套完整強大的游戲開發工具,擁有明確的工具體系,以及完成一款大型游戲的完善功能。 擁有極其優化的代碼和高度整合的后期處理效果,能在性能與畫面呈現上取得極佳的平衡效果。

          特點:完整的開發生態鏈、更新快速、完全免費、穩定的大型場景乘載。

          授權:任何平臺在游戲及影視領域使用免使用費,免版權費??稍谌魏坞A段選擇性支付任何價格(PayWhat You Want授權)。

          Esenthel Engine

          Esenthel/Grzegorz Slazinski出品

          支持平臺:Windows,Windows Phone, Xbox, Mac OS, iOS, Android, Linux, Web

          語言:C++

          Esenthel是一款功能完整的商業游戲引擎,擁有多平臺部屬及完整的多人聯機特性。

          特點:完整工具鏈、普通更新速度、帶原碼的多人模板、多平臺編輯器支持。

          授權:免費試用。高級功能訂閱每月.40或每年4。完整原碼每年訂閱8。

          Game Guru

          The Game Creators出品

          支持平臺:Windows

          語言:Lua

          Game Guru是一款簡易的游戲引擎,擁有完整的編輯工具以及游戲預設,可以利用內建的功能完成一款簡單的游戲。能購買AppGame Kit的擴充包將兩者整合。

          特點:快速上手、更新較快、內置游戲模塊。

          授權:一次性支付.99,免版權費抽成。

          Gamestudio

          Conitec Datasystems出品

          支持平臺:Windows

          語言:C++、C#、Delphi、Lite-C

          Gamestudio或稱3D Gamestudio是一款老牌的游戲引擎,包含完整的渲染、優化、粒子、物理碰撞、2D引擎、音效引擎、網絡、和游戲模塊等等,可以應用于各種游戲、應用程序創建。

          特點:完整的工具鏈和SDK、緩慢的更新速度、穩定、強大的可擴充性、擁有龐大的小區貢獻和幫助。

          授權:免費版,免版權費分成,需開源自己的原碼/腳本。

          加強版,一次性支付,功能同免費版,外加打包、編譯、加密功能,以及插件/引擎SDK。

          商業版,一次性支付9,擁有中大型規模游戲所需大部分功能。

          專業版,一次性支付9,擁有大型游戲所需所有功能。

          Hero Engine

          IdeaFabrik出品

          支持平臺:Windows

          語言:C++,C#, HeroScript Language

          Hero Engine是一套擁有完整開發鏈的游戲開發工具,雖然各種游戲皆能開發,但對于客路端和服務器架構皆集成到開發流程中,是非常適合用來開發MMO的游戲引擎。

          特點:完整的開發生態鏈、更新快速、超大場景建立、網絡游戲特化、百人以上開發團隊在線協作解決方案、官方服務器建設解決方案,大幅節省開發成本支出。

          授權:免費方案,免費使用引擎。

          入門方案,每年.95,兩名使用者,可于測試階段免費使用官方服務器資源,可于官方平臺免費使用Awesomium、RAD Game Tools、SpeedTree、DPVS Umbra、FMOD、FaceGen等第三方軟件和插件。

          基本、標準、專業、高級方案個別為每年9.95、9.95、9.95、9.95,對應5、15、50、100名使用者。

          終生方案95.95,300名使用者,包含源碼折扣。

          訂閱入門以上方案在Alpha、Beta、最終release階段可由官方協助尋找、架設服務器,此階段由官方吸收成本,最終上線后收入分成30%。

          jMonkey Game Engine

          The jME Core團隊出品

          支持平臺:Windows,OSX, Linux, Android, iOS, Oculus Rift

          語言:Java

          jMonkeyEngine是一款基于Java開發的游戲引擎,擁有跨平臺、易學的特性,可以在任何支持的IDE環境下開發,只要擁有Java技能就能夠開發任何一種3D游戲。

          特點:開源、更新較慢、跨平臺。

          授權:BSD許可證

          Leadwerks

          Leadwerks公司出品

          支持平臺:Windows,Linux, SteamOS, HTC Vive, Oculus Rift, OSVR

          語言:C++、Lua、Flowgraph

          Leadwerks是一個基于OpenGL,3D的游戲引擎。 它具有延遲照明系統,屏幕空間環境遮擋,模擬實時全局照明,高級著色器,支持巨大的地形,新的植被系統,內置的UI設計工具,集成的LUA腳本編輯器等等。

          特點:輕量化、普通更新速度、高度訂制化、社群活躍、多平臺編輯器支持。

          授權:一次性支付.99,免版權費。C++原代碼另外加.99

          Lumberyard

          Amazone出品

          支持平臺:Windows,Xbox One, PlayStation, iOS, Android, Oculus Rift, HTC Vive, OSVR, PlayStationVR

          語言:C++、Lua、Flowgraph

          Lumberyard是Amazone公司基于CryEngine 3與自家Amazon Web Services平臺開發的免費跨平臺游戲引擎,擁有CryEngine 3大部分的圖形技術外,其重構了引擎的網絡代碼,能夠輕易集成AWS服務做到大小規模在線游戲。

          特點:完整的開發生態鏈、更新較快、穩定的大型場景乘載、網絡游戲特化。

          授權:免費使用,免版權費分成。若無自己的網絡設備,限制僅能集成、租用AWS網絡服務。

          Neoaxis

          NeoAxis Group Ltd公司出品

          支持平臺:Windows,Mac OSX

          語言:C#

          擁有開發游戲的完整功能,內置physX,內置網絡支持和尋路組件,內置UI系統。擁有功能完善的SDK、資源導入流程。

          特點:輕量、功能完整、更新較慢。

          授權:SDK免費使用,免版權費抽成。專業授權每人5,獲得編輯器、資源導入、定型、對象、網絡等代碼。完整授權每人95,獲得所有引擎代碼。

          Panda 3D/ RenderPipeline

          Carnegie Mellon University

          支持平臺:Windows,Mac OSX, Linux, FreeBSD

          語言:C++、Python

          Panda3D是一款開源的游戲/渲染引擎,包括有物理、粒子、GUI、AI、高級著色器等特性。RenderPipeline為Panda3D的延伸項目,為引擎導入了PBR渲染、延遲渲染、高級后處理特效、TOD系統、插件系統等。

          特點:開源項目、普通更新速度、WaltDisney Imagineering加持。

          授權:訂制的BSD許可證。

          S2Engine HD

          Profenix Studio, Fabio Di Paola個人出品

          支持平臺:Windows

          語言:C++,GameMachine, S2Engine HD script

          S2Engine HD為一款由個人制作/維護的游戲引擎,擁有整合好的高級畫面效果處理系統、類C的腳本語言、可視化腳本/編程模塊、音頻、物理、UI編輯器等,可以快速制作出美觀的游戲。

          特點:快速上手、普通更新速度、完整的游戲制作流程、對中型以上團隊較不友善。

          授權:一次性支付.99,免版權費分成。

          Serious Engine

          Croteam出品

          支持平臺:Windows,Xbox, Linux, Mac OSX

          語言:C++

          Serious Engine目前最高版本為Serious Engine 4,可創建大型開放世界,渲染大量敵人,擁有逼真的后處理效果。其開源版本為1.10,可取得UI工具、建模工具、完整的游戲引擎原碼和編譯工具。

          特點:開源、停止更新

          授權:GPL-2.0許可證。

          Shive3D

          ShiVaTech出品

          支持平臺:Windows,Mac OSX, Linux, Android, Blackberry, iOS, PlayStation 4, PlayStation3, Xbox360, Xbox One, Vita, Wii, Windows Phone, 網頁瀏覽器

          語言:C++、Lua

          Shive3D是擁有完整生態及工具鏈的一款引擎,對移動設備支持較好,曾經是移動設備游戲的首選引擎之一。近年來由于引擎老化創新不足,用戶已大幅流失,但仍不失為一個輕便好用的引擎。

          特點:輕量化、緩慢更新速度、移動設備支持良好。

          授權:Web版可使用所有編輯器功能,可部屬到網頁,免版權費,鎖定部分引擎特性。

          Basic版一次性支付0,可部屬到所有平臺,其余限制與Web版相同。

          Advanced版一次性支付00,可使用所有高級功能。

          Source Engine/Source SDK

          Valve公司出品

          支持平臺:Windows,macOS, Linux, Android

          語言:C++(底層)、Squirrel

          歷久彌新的一款引擎/模塊編輯器,擁有許多模塊及小區資源。

          特點:老經典

          授權:免費,擁有任一款Source引擎開發的游戲即可使用。

          Stingray

          Autodesk出品

          支持平臺:Windows,PlayStation, Xbox, Android, iOS, Oculus Rift, HTC Vive, OSVR, Playstation VR

          語言:Lua

          Stingray為一款與Autodesk建模及IBM軟件高度集成的游戲/渲染引擎,并完美整合旗下的AutodeskGameware產品線,以及得益于數度重構而擁有干凈整齊的底層模塊,適合程序從頭建立游戲/應用程序內容。

          特點:干凈、普通更新速度、與Autodesk建模工具景密結合、快速建立每訴內容、快速建立動畫內容。

          授權:每月或每年0,與Maya LT捆綁訂閱,免版權費抽成。

          源碼另議。

          Tombstone Engine (C4Engine)

          Terathon Software公司出品

          支持平臺:PlayStation4, Windows, Mac OSX, Linux, iOS

          語言:C++、OpenDDL、視覺腳本編輯器

          Tombstone Engin是功能完整,開發速度快的游戲引擎,以前的C4引擎。擁有完整SDK、素材導入、UI編輯器、腳本編輯器等,可快速開發出可玩的FPS游戲。

          特點:恐怖游戲特化、普通更新速度

          授權:單一授權,一次性支付5,包含完整原碼、工具、示例游戲,無游戲、軟件數量限制,無版權費抽成。

          Torque3D

          GarageGames公司出品

          支持平臺:Windows,Mac OSX, Linux

          語言:C++

          Torque是一款老牌的開放原始碼引擎,集Collada、PhysX等庫,擁有完整的生態鏈,穩定、易于擴充。

          特點:老牌、開源、更新慢。

          授權:MIT許可證。

          Unigine 2

          支持平臺:Windows,Mac OSX, Linux, Oculus Rift, HTC Vive, OSVR

          語言:C++、C#、UnigineScript

          Unigine為一款實時的3D互動解決方案,擁有適合中小型團隊制作游戲/應用程序的版本,以及仿真特化的高級版本,可以做到星球級別的大地形、大氣海洋模擬等,在專業應用、教育訓練、影視等產業擁有極高的優勢。

          特點:專業應用、更新較快、較多的官方示范模板

          授權:基礎單人,一次性支付95,免版權費分成。基礎團隊,一次性支付95,最多十人。

          專業版按座位定價。

          仿真版按需求定價。

          Unity 5

          Unity Technologies公司出品

          支持平臺:Windows,Mac OSX, Linus, Android, BlackBerry, iOS, PlayStation 3, PlayStation 4,PlayStation Vita, Unity Web Player, Wii, Wii U, Windows Phone 8, Xbox 360, XboxOne還有其他以前的和未來的所有平臺

          語言:C#、C++(底層)、UnityScript(JavaScript)

          家喻戶曉,擁有世界上最大的開發鏈和社群、用戶、資源,不知道自己想做什么時第一個上手。

          特點:完整的開發生態鏈、更新極快速、世界最多人使用以及與這個稱號相應的海量資源、移動設備支持良好、多平臺編輯器支持。

          授權:個人或小公司限制版本免費,收入需低于0,000

          Plus版擁有完整功能,每人每月訂閱,收入需低于0,000

          Pro版擁有完整功能,每人每月訂閱5,無限制使用。

          Unreal Engine 4

          Epic Games公司出品

          支持平臺:Windows,macOS, Linux, SteamOS, HTML5, iOS, Android, Nintendo Switch, PlayStation 4,Xbox One 與virtual reality (包含但不限于SteamVR/HTCVive, Oculus Rift, PlayStation VR, Google Daydream, OSVR 與 Samsung Gear VR)

          語言:C++、Blueprint

          Unreal Engine 4是一套完整強大的游戲開發工具,擁有明確的工具體系,以及完成一款大型游戲的完善功能。 擁有令人屏息的畫面以及極度靈活的腳本系統。從2D手機游戲到游戲機臺到VR,UE4為您提供開始,創建和發布游戲所需的一切。

          特點:完整的開發生態鏈、更新極快速、擁有龐大的小區貢獻和錯誤修復、擁有龐大的市場和教學資源、穩定的大型場景乘載、多平臺編輯器支持。

          授權:免費使用,在游戲或程序推送以后,每個季度收入達到,000以后須支付總收入的5%予Epic公司。

          Wave Engine 2

          Wave Engine團隊維護

          支持平臺:Windows,Linux, Mac OSX, SteamOS, Xbox, iOS, Android, Oculus Rift, Hololens

          語言:C#

          Wave engine是一款基于.NET的開源跨平臺2D/3D游戲開發工具,內置有各種游戲所需的完整模塊,以及活潑的開發者社群,能夠獲得各種資源及解決問題。

          特點:開源、更新較快、容易學習

          授權:訂制的開源授權,唯一限制為所開發產品激活時需標明Wave標志。

          千萬記得,承載游戲的是引擎,但完成游戲的是人的手。

          記得關注小編哦

          文章來源引擎世界網。

          作者:我叫大春天。


          主站蜘蛛池模板: 亚洲人成人一区二区三区| 波多野结衣一区二区三区88 | 日韩中文字幕一区| 少妇无码一区二区二三区| 3d动漫精品啪啪一区二区中 | 国产一区二区三区精品视频| 国产在线不卡一区二区三区| 久久久久无码国产精品一区| 国产精品电影一区| V一区无码内射国产| 色婷婷一区二区三区四区成人网| 亚洲AV无码一区二区大桥未久| 波多野结衣中文字幕一区| 国产午夜精品一区二区| 亚洲视频一区在线| 高清一区二区在线观看| 午夜DV内射一区二区| 波多野结衣av高清一区二区三区| 久久精品一区二区三区四区 | 久久青草精品一区二区三区| 久久青青草原一区二区| 丝袜人妻一区二区三区| 亚洲AV无码一区二区三区性色| 免费无码一区二区| 精品三级AV无码一区| 成人国产精品一区二区网站| 亚洲蜜芽在线精品一区| 一区 二区 三区 中文字幕| 一区二区三区国产精品| 一区二区不卡久久精品| 亚洲av永久无码一区二区三区| 在线观看免费视频一区| 色一乱一伦一区一直爽| 国产美女精品一区二区三区| 国产精品视频一区| 精品国产高清自在线一区二区三区| 尤物精品视频一区二区三区| 国产福利一区二区在线视频| 国产一区二区三区久久精品| 在线中文字幕一区| 一区二区三区在线观看中文字幕|