ua是一門(mén)腳本動(dòng)態(tài)語(yǔ)言,并不太適合做復(fù)雜業(yè)務(wù)邏輯的程序開(kāi)發(fā),但是,在高并發(fā)場(chǎng)景下,Nginx Lua編程是解決性能問(wèn)題的利器。
Nginx Lua編程主要的應(yīng)用場(chǎng)景如下:
ngx_lua是Nginx的一個(gè)擴(kuò)展模塊,將Lua VM嵌入Nginx,請(qǐng)求時(shí)創(chuàng)建一個(gè)VM,請(qǐng)求結(jié)束時(shí)回收VM,這樣就可以在Nginx內(nèi)部運(yùn)行Lua腳本,使得Nginx變成一個(gè)Web容器。以O(shè)penResty為例,其提供了一些常用的ngx_lua開(kāi)發(fā)模塊:
Lua腳本需要通過(guò)Lua解釋器來(lái)解釋執(zhí)行,除了Lua官方的默認(rèn)解釋器外,目前使用廣泛的Lua解釋器叫做LuaJIT。LuaJIT采用C語(yǔ)言編寫(xiě),被設(shè)計(jì)成全兼容標(biāo)準(zhǔn)Lua 5.1,因此LuaJIT代碼的語(yǔ)法和標(biāo)準(zhǔn)Lua的語(yǔ)法沒(méi)多大區(qū)別。但是LuaJIT的運(yùn)行速度比標(biāo)準(zhǔn)Lua快數(shù)十倍。
在OpenResty中,每個(gè)Worker進(jìn)程使用一個(gè)Lua VM,當(dāng)請(qǐng)求被分配到Worker時(shí),將在這個(gè)Lua VM中創(chuàng)建一個(gè)協(xié)程,協(xié)程之間數(shù)據(jù)隔離,每個(gè)協(xié)程都具有獨(dú)立的全局變量。
ngx_lua是將Lua VM嵌入Nginx,讓Nginx執(zhí)行Lua腳本,并且高并發(fā)、非阻塞地處理各種請(qǐng)求。Lua內(nèi)置協(xié)程可以很好地將異步回調(diào)轉(zhuǎn)換成順序調(diào)用的形式。ngx_lua在Lua中進(jìn)行的IO操作都會(huì)委托給Nginx的事件模型,從而實(shí)現(xiàn)非阻塞調(diào)用。開(kāi)發(fā)者可以采用串行的方式編寫(xiě)程序,ngx_lua會(huì)在進(jìn)行阻塞的IO操作時(shí)自動(dòng)中斷,保存上下文,然后將IO操作委托給Nginx事件處理機(jī)制,在IO操作完成后,ngx_lua會(huì)恢復(fù)上下文,程序繼續(xù)執(zhí)行,這些操作對(duì)用戶程序都是透明的。
每個(gè)Worker進(jìn)程都持有一個(gè)Lua解釋器或LuaJIT實(shí)例,被這個(gè)Worker處理的所有請(qǐng)求共享這個(gè)實(shí)例。每個(gè)請(qǐng)求的context上下文會(huì)被Lua輕量級(jí)的協(xié)程分隔,從而保證每個(gè)請(qǐng)求是獨(dú)立的。
ngx_lua采用one-coroutine-per-request的處理模型,對(duì)于每個(gè)用戶請(qǐng)求,ngx_lua會(huì)喚醒一個(gè)協(xié)程用于執(zhí)行用戶代碼處理請(qǐng)求,當(dāng)請(qǐng)求處理完成后,這個(gè)協(xié)程會(huì)被銷(xiāo)毀。每個(gè)協(xié)程都有一個(gè)獨(dú)立的全局環(huán)境,繼承于全局共享的、只讀的公共數(shù)據(jù)。所以,被用戶代碼注入全局空間的任何變量都不會(huì)影響其他請(qǐng)求的處理,并且這些變量在請(qǐng)求處理完成后會(huì)被釋放,這樣就保證所有的用戶代碼都運(yùn)行在一個(gè)sandbox(沙箱)中,這個(gè)沙箱與請(qǐng)求具有相同的生命周期。
得益于Lua協(xié)程的支持,ngx_lua在處理10000個(gè)并發(fā)請(qǐng)求時(shí),只需要很少的內(nèi)存。根據(jù)測(cè)試,ngx_lua處理每個(gè)請(qǐng)求只需要2KB的內(nèi)存,如果使用LuaJIT就會(huì)更少。
ngx_lua定義的Nginx配置指令大致如下:
ngx_lua配置指令在Nginx的HTTP請(qǐng)求處理階段所處的位置如圖:
http {
...
#設(shè)置“.lua”外部庫(kù)的搜索路徑,此指令的上下文為http配置塊
#";;"常用于表示原始的搜索路徑
lua_package_path "/foo/bar/?.lua;/blah/?.lua;;";
lua_package_cpath "/usr/local/openresty/lualib/?/?.so;/usr/local/openresty/lualib/?.so;;";
}
對(duì)于以上兩個(gè)指令,OpenResty可以在搜索路徑中使用插值變量。例如,可以使用插值變量$prefix或${prefix}獲取虛擬服務(wù)器server的前綴路徑,server的前綴路徑通常在Nginx服務(wù)器啟動(dòng)時(shí)通過(guò)-p PATH命令在指定。
格式為:init_by_lua lua-script-str。
格式為:lua_code_cache on | off
http {
...
#項(xiàng)目初始化
init_by_lua_file conf/luaScript/initial/loading_config.lua;
#調(diào)試模式,關(guān)閉lua腳本緩存
lua_code_cache on;
...
}
在緩存關(guān)閉的時(shí),set_by_lua_file、content_by_lua_file、access_by_lua_file、content_by_lua_file等指令中引用的Lua腳本都將不會(huì)被緩存,所有的Lua腳本都將從頭開(kāi)始加載。
格式為:set_by_lua $destVar lua-script-str params
location /set_by_lua_demo {
#set 指令定義兩個(gè)Nginx變量
set $foo 1;
set $bar 2;
#調(diào)用Lua內(nèi)聯(lián)代碼,將結(jié)果放入Nginx變量$sum
#Lua腳本的含義是,將兩個(gè)輸入?yún)?shù)$foo、$bar累積起來(lái),然后相加的結(jié)果設(shè)置Nginx變量$sum中
set_by_lua $sum 'return tonumber(ngx.arg[1]) + tonumber(ngx.arg[2])' $foo $bar;
echo "$foo + $bar = $sum";
}
運(yùn)行結(jié)果:
? work curl http://localhost/set_by_lua_demo
1 + 2 = 3
格式為: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";
}
運(yùn)行結(jié)果:
? 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>
#上述案例運(yùn)行日志:
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>
#上述案例運(yùn)行日志
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 lua-script-str
location /errorLog {
content_by_lua '
ngx.log(ngx.ERR, "this is an error log ");
ngx.say("錯(cuò)誤日志調(diào)用成功");
';
}
location /infoLog {
content_by_lua '
ngx.log(ngx.ERR, "this is an info log ");
ngx.say("業(yè)務(wù)日志調(diào)用成功");
';
}
location /debugLog {
content_by_lua '
ngx.log(ngx.ERR, "this is an debug log ");
ngx.say("調(diào)試日志調(diào)用成功");
';
}
OpenResty v0.9.17版本以后,使用content_by_lua_block指令代替content_by_lua指令,避免對(duì)代碼塊中的字符串進(jìn)行轉(zhuǎn)譯。
運(yùn)行結(jié)果:
? work curl http://localhost/errorLog
錯(cuò)誤日志調(diào)用成功
? work curl http://localhost/infoLog
業(yè)務(wù)日志調(diào)用成功
? work curl http://localhost/debugLog
調(diào)試日志調(diào)用成功
內(nèi)置變量
內(nèi)置常量
內(nèi)置常量基本是見(jiàn)名知意的,可以根據(jù)后面的實(shí)戰(zhàn)案例,加深理解。
核心常量
HTTP方法常量
HTTP狀態(tài)碼常量
日志類型常量
Nginx+LUA基礎(chǔ)到此結(jié)束,下一篇開(kāi)始實(shí)戰(zhàn)!并在實(shí)戰(zhàn)中掌握基礎(chǔ)。
Lapis是一個(gè)為L(zhǎng)ua語(yǔ)言設(shè)計(jì)的Web應(yīng)用開(kāi)發(fā)框架,它主要針對(duì)OpenResty,這是一個(gè)基于Nginx的高性能Web平臺(tái)。Lapis不僅提供了一個(gè)簡(jiǎn)潔而強(qiáng)大的API來(lái)構(gòu)建Web服務(wù),還支持現(xiàn)代Web開(kāi)發(fā)中的多種需求,包括路由、模板、數(shù)據(jù)庫(kù)集成、安全性等。
Lapis利用OpenResty的強(qiáng)大性能,通過(guò)LuaJIT在Nginx內(nèi)部運(yùn)行Lua代碼,實(shí)現(xiàn)了高性能的處理能力。這意味著開(kāi)發(fā)者可以享受到接近C語(yǔ)言級(jí)別的執(zhí)行效率,同時(shí)保持Lua語(yǔ)言的簡(jiǎn)潔性和靈活性。
Lapis支持Lua協(xié)程,允許開(kāi)發(fā)者編寫(xiě)看起來(lái)是同步的代碼,但實(shí)際上是異步執(zhí)行的。這種方式可以顯著提高應(yīng)用程序的并發(fā)處理能力,同時(shí)避免了回調(diào)地獄,使代碼更加清晰易讀。
Lapis提供了一個(gè)靈活的路由系統(tǒng),允許開(kāi)發(fā)者定義各種URL模式,并將其映射到相應(yīng)的處理函數(shù)。這使得URL的設(shè)計(jì)和處理變得簡(jiǎn)單而直觀。
Lapis內(nèi)置了HTML模板系統(tǒng),支持etlua模板語(yǔ)言,允許開(kāi)發(fā)者以一種聲明式的方式編寫(xiě)HTML頁(yè)面。此外,Lapis的模板系統(tǒng)還提供了HTML構(gòu)建器語(yǔ)法,使得HTML的生成既安全又便捷。
Lapis支持PostgreSQL、MySQL和SQLite等多種數(shù)據(jù)庫(kù),提供了一個(gè)強(qiáng)大的模型層抽象,使得數(shù)據(jù)庫(kù)操作變得簡(jiǎn)單。開(kāi)發(fā)者可以通過(guò)繼承Model類來(lái)創(chuàng)建自己的數(shù)據(jù)庫(kù)模型,并輕松地進(jìn)行數(shù)據(jù)的增刪改查操作。
Lapis提供了CSRF保護(hù)和會(huì)話支持,幫助開(kāi)發(fā)者構(gòu)建更安全的Web應(yīng)用。通過(guò)內(nèi)置的安全特性,可以有效地防止跨站請(qǐng)求偽造等常見(jiàn)的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是一個(gè)功能強(qiáng)大且高效的Web開(kāi)發(fā)框架,它結(jié)合了Lua語(yǔ)言的靈活性和OpenResty的性能優(yōu)勢(shì)。無(wú)論是構(gòu)建簡(jiǎn)單的Web服務(wù)還是復(fù)雜的Web應(yīng)用,Lapis都是一個(gè)值得考慮的選擇。隨著社區(qū)的不斷壯大和生態(tài)系統(tǒng)的完善,Lapis有望成為L(zhǎng)ua Web開(kāi)發(fā)領(lǐng)域的重要力量。
App Game Kit
The Game Creators出品
支持平臺(tái):Windows,Linux, Mac OSX, iOS, Android, web browser, Raspberry Pi, SteamVR
語(yǔ)言:C++、AppGameKit Script
App Game Kit簡(jiǎn)單易用易學(xué)習(xí)的2D/3D游戲開(kāi)發(fā)工具包,擁有完整的游戲引擎功能,可快速建立內(nèi)容發(fā)布到移動(dòng)平臺(tái),極適合個(gè)人、興趣、學(xué)校教育方面使用。
特點(diǎn):輕量化、更新極快速、多平臺(tái)編輯器支持
授權(quán):一次性支付.99,免版權(quán)費(fèi)分成。一些擴(kuò)充功能包另外購(gòu)買(mǎi)。
Game Blender
BlenderFoundation維護(hù)
支持平臺(tái):Windows, Mac OSX, Linux
語(yǔ)言:Python
Blender是一款免費(fèi)開(kāi)源的3D內(nèi)容創(chuàng)作套件。包括建模、uv展開(kāi)、材質(zhì)繪制、動(dòng)畫(huà)制作、合成、流體/煙霧、粒子、渲染系統(tǒng)等功能,也包含一個(gè)游戲引擎。Game Blender有圖形邏輯編輯器,可定義交互行為而無(wú)須編程,也擁有各種引擎基本功能,訂制、擴(kuò)充能力極強(qiáng)。
特點(diǎn):開(kāi)源、更新極快速、真正的Allin One、強(qiáng)大的擴(kuò)展性、多平臺(tái)編輯器支持。
授權(quán):GPL3許可證。
CopperCube 5
Ambiera出品
支持平臺(tái):Windows,Mac OSX, web browser, Android, Flash
語(yǔ)言:C++,Javascript
CopperCube一款簡(jiǎn)易但完整的游戲引擎,擁有完整的編輯工具以及游戲預(yù)設(shè),可以利用內(nèi)建的功能建模并完成一款簡(jiǎn)單的游戲,或是快速制作大型游戲的原型用以評(píng)估項(xiàng)目。
特點(diǎn):快速上手、普通更新速度、支持中文。
授權(quán):一次性支付.99,免版權(quán)費(fèi)分成。
外加9.99,獲得一些額外功能,獲得完整C++原碼。
CryEngine V
Crytek公司出品
支持平臺(tái):Windows,Linux, PlayStation 4, Xbox One, Oculus Rift, HTC Vive, OSVR 與 PlayStation VR
語(yǔ)言:C++、C#、Schematyc
CryEngine V是一套完整強(qiáng)大的游戲開(kāi)發(fā)工具,擁有明確的工具體系,以及完成一款大型游戲的完善功能。 擁有極其優(yōu)化的代碼和高度整合的后期處理效果,能在性能與畫(huà)面呈現(xiàn)上取得極佳的平衡效果。
特點(diǎn):完整的開(kāi)發(fā)生態(tài)鏈、更新快速、完全免費(fèi)、穩(wěn)定的大型場(chǎng)景乘載。
授權(quán):任何平臺(tái)在游戲及影視領(lǐng)域使用免使用費(fèi),免版權(quán)費(fèi)。可在任何階段選擇性支付任何價(jià)格(PayWhat You Want授權(quán))。
Esenthel Engine
Esenthel/Grzegorz Slazinski出品
支持平臺(tái):Windows,Windows Phone, Xbox, Mac OS, iOS, Android, Linux, Web
語(yǔ)言:C++
Esenthel是一款功能完整的商業(yè)游戲引擎,擁有多平臺(tái)部屬及完整的多人聯(lián)機(jī)特性。
特點(diǎn):完整工具鏈、普通更新速度、帶原碼的多人模板、多平臺(tái)編輯器支持。
授權(quán):免費(fèi)試用。高級(jí)功能訂閱每月.40或每年4。完整原碼每年訂閱8。
Game Guru
The Game Creators出品
支持平臺(tái):Windows
語(yǔ)言:Lua
Game Guru是一款簡(jiǎn)易的游戲引擎,擁有完整的編輯工具以及游戲預(yù)設(shè),可以利用內(nèi)建的功能完成一款簡(jiǎn)單的游戲。能購(gòu)買(mǎi)AppGame Kit的擴(kuò)充包將兩者整合。
特點(diǎn):快速上手、更新較快、內(nèi)置游戲模塊。
授權(quán):一次性支付.99,免版權(quán)費(fèi)抽成。
Gamestudio
Conitec Datasystems出品
支持平臺(tái):Windows
語(yǔ)言:C++、C#、Delphi、Lite-C
Gamestudio或稱3D Gamestudio是一款老牌的游戲引擎,包含完整的渲染、優(yōu)化、粒子、物理碰撞、2D引擎、音效引擎、網(wǎng)絡(luò)、和游戲模塊等等,可以應(yīng)用于各種游戲、應(yīng)用程序創(chuàng)建。
特點(diǎn):完整的工具鏈和SDK、緩慢的更新速度、穩(wěn)定、強(qiáng)大的可擴(kuò)充性、擁有龐大的小區(qū)貢獻(xiàn)和幫助。
授權(quán):免費(fèi)版,免版權(quán)費(fèi)分成,需開(kāi)源自己的原碼/腳本。
加強(qiáng)版,一次性支付,功能同免費(fèi)版,外加打包、編譯、加密功能,以及插件/引擎SDK。
商業(yè)版,一次性支付9,擁有中大型規(guī)模游戲所需大部分功能。
專業(yè)版,一次性支付9,擁有大型游戲所需所有功能。
Hero Engine
IdeaFabrik出品
支持平臺(tái):Windows
語(yǔ)言:C++,C#, HeroScript Language
Hero Engine是一套擁有完整開(kāi)發(fā)鏈的游戲開(kāi)發(fā)工具,雖然各種游戲皆能開(kāi)發(fā),但對(duì)于客路端和服務(wù)器架構(gòu)皆集成到開(kāi)發(fā)流程中,是非常適合用來(lái)開(kāi)發(fā)MMO的游戲引擎。
特點(diǎn):完整的開(kāi)發(fā)生態(tài)鏈、更新快速、超大場(chǎng)景建立、網(wǎng)絡(luò)游戲特化、百人以上開(kāi)發(fā)團(tuán)隊(duì)在線協(xié)作解決方案、官方服務(wù)器建設(shè)解決方案,大幅節(jié)省開(kāi)發(fā)成本支出。
授權(quán):免費(fèi)方案,免費(fèi)使用引擎。
入門(mén)方案,每年.95,兩名使用者,可于測(cè)試階段免費(fèi)使用官方服務(wù)器資源,可于官方平臺(tái)免費(fèi)使用Awesomium、RAD Game Tools、SpeedTree、DPVS Umbra、FMOD、FaceGen等第三方軟件和插件。
基本、標(biāo)準(zhǔn)、專業(yè)、高級(jí)方案?jìng)€(gè)別為每年9.95、9.95、9.95、9.95,對(duì)應(yīng)5、15、50、100名使用者。
終生方案95.95,300名使用者,包含源碼折扣。
訂閱入門(mén)以上方案在Alpha、Beta、最終release階段可由官方協(xié)助尋找、架設(shè)服務(wù)器,此階段由官方吸收成本,最終上線后收入分成30%。
jMonkey Game Engine
The jME Core團(tuán)隊(duì)出品
支持平臺(tái):Windows,OSX, Linux, Android, iOS, Oculus Rift
語(yǔ)言:Java
jMonkeyEngine是一款基于Java開(kāi)發(fā)的游戲引擎,擁有跨平臺(tái)、易學(xué)的特性,可以在任何支持的IDE環(huán)境下開(kāi)發(fā),只要擁有Java技能就能夠開(kāi)發(fā)任何一種3D游戲。
特點(diǎn):開(kāi)源、更新較慢、跨平臺(tái)。
授權(quán):BSD許可證
Leadwerks
Leadwerks公司出品
支持平臺(tái):Windows,Linux, SteamOS, HTC Vive, Oculus Rift, OSVR
語(yǔ)言:C++、Lua、Flowgraph
Leadwerks是一個(gè)基于OpenGL,3D的游戲引擎。 它具有延遲照明系統(tǒng),屏幕空間環(huán)境遮擋,模擬實(shí)時(shí)全局照明,高級(jí)著色器,支持巨大的地形,新的植被系統(tǒng),內(nèi)置的UI設(shè)計(jì)工具,集成的LUA腳本編輯器等等。
特點(diǎn):輕量化、普通更新速度、高度訂制化、社群活躍、多平臺(tái)編輯器支持。
授權(quán):一次性支付.99,免版權(quán)費(fèi)。C++原代碼另外加.99
Lumberyard
Amazone出品
支持平臺(tái):Windows,Xbox One, PlayStation, iOS, Android, Oculus Rift, HTC Vive, OSVR, PlayStationVR
語(yǔ)言:C++、Lua、Flowgraph
Lumberyard是Amazone公司基于CryEngine 3與自家Amazon Web Services平臺(tái)開(kāi)發(fā)的免費(fèi)跨平臺(tái)游戲引擎,擁有CryEngine 3大部分的圖形技術(shù)外,其重構(gòu)了引擎的網(wǎng)絡(luò)代碼,能夠輕易集成AWS服務(wù)做到大小規(guī)模在線游戲。
特點(diǎn):完整的開(kāi)發(fā)生態(tài)鏈、更新較快、穩(wěn)定的大型場(chǎng)景乘載、網(wǎng)絡(luò)游戲特化。
授權(quán):免費(fèi)使用,免版權(quán)費(fèi)分成。若無(wú)自己的網(wǎng)絡(luò)設(shè)備,限制僅能集成、租用AWS網(wǎng)絡(luò)服務(wù)。
Neoaxis
NeoAxis Group Ltd公司出品
支持平臺(tái):Windows,Mac OSX
語(yǔ)言:C#
擁有開(kāi)發(fā)游戲的完整功能,內(nèi)置physX,內(nèi)置網(wǎng)絡(luò)支持和尋路組件,內(nèi)置UI系統(tǒng)。擁有功能完善的SDK、資源導(dǎo)入流程。
特點(diǎn):輕量、功能完整、更新較慢。
授權(quán):SDK免費(fèi)使用,免版權(quán)費(fèi)抽成。專業(yè)授權(quán)每人5,獲得編輯器、資源導(dǎo)入、定型、對(duì)象、網(wǎng)絡(luò)等代碼。完整授權(quán)每人95,獲得所有引擎代碼。
Panda 3D/ RenderPipeline
Carnegie Mellon University
支持平臺(tái):Windows,Mac OSX, Linux, FreeBSD
語(yǔ)言:C++、Python
Panda3D是一款開(kāi)源的游戲/渲染引擎,包括有物理、粒子、GUI、AI、高級(jí)著色器等特性。RenderPipeline為Panda3D的延伸項(xiàng)目,為引擎導(dǎo)入了PBR渲染、延遲渲染、高級(jí)后處理特效、TOD系統(tǒng)、插件系統(tǒng)等。
特點(diǎn):開(kāi)源項(xiàng)目、普通更新速度、WaltDisney Imagineering加持。
授權(quán):訂制的BSD許可證。
S2Engine HD
Profenix Studio, Fabio Di Paola個(gè)人出品
支持平臺(tái):Windows
語(yǔ)言:C++,GameMachine, S2Engine HD script
S2Engine HD為一款由個(gè)人制作/維護(hù)的游戲引擎,擁有整合好的高級(jí)畫(huà)面效果處理系統(tǒng)、類C的腳本語(yǔ)言、可視化腳本/編程模塊、音頻、物理、UI編輯器等,可以快速制作出美觀的游戲。
特點(diǎn):快速上手、普通更新速度、完整的游戲制作流程、對(duì)中型以上團(tuán)隊(duì)較不友善。
授權(quán):一次性支付.99,免版權(quán)費(fèi)分成。
Serious Engine
Croteam出品
支持平臺(tái):Windows,Xbox, Linux, Mac OSX
語(yǔ)言:C++
Serious Engine目前最高版本為Serious Engine 4,可創(chuàng)建大型開(kāi)放世界,渲染大量敵人,擁有逼真的后處理效果。其開(kāi)源版本為1.10,可取得UI工具、建模工具、完整的游戲引擎原碼和編譯工具。
特點(diǎn):開(kāi)源、停止更新
授權(quán):GPL-2.0許可證。
Shive3D
ShiVaTech出品
支持平臺(tái):Windows,Mac OSX, Linux, Android, Blackberry, iOS, PlayStation 4, PlayStation3, Xbox360, Xbox One, Vita, Wii, Windows Phone, 網(wǎng)頁(yè)瀏覽器
語(yǔ)言:C++、Lua
Shive3D是擁有完整生態(tài)及工具鏈的一款引擎,對(duì)移動(dòng)設(shè)備支持較好,曾經(jīng)是移動(dòng)設(shè)備游戲的首選引擎之一。近年來(lái)由于引擎老化創(chuàng)新不足,用戶已大幅流失,但仍不失為一個(gè)輕便好用的引擎。
特點(diǎn):輕量化、緩慢更新速度、移動(dòng)設(shè)備支持良好。
授權(quán):Web版可使用所有編輯器功能,可部屬到網(wǎng)頁(yè),免版權(quán)費(fèi),鎖定部分引擎特性。
Basic版一次性支付0,可部屬到所有平臺(tái),其余限制與Web版相同。
Advanced版一次性支付00,可使用所有高級(jí)功能。
Source Engine/Source SDK
Valve公司出品
支持平臺(tái):Windows,macOS, Linux, Android
語(yǔ)言:C++(底層)、Squirrel
歷久彌新的一款引擎/模塊編輯器,擁有許多模塊及小區(qū)資源。
特點(diǎn):老經(jīng)典
授權(quán):免費(fèi),擁有任一款Source引擎開(kāi)發(fā)的游戲即可使用。
Stingray
Autodesk出品
支持平臺(tái):Windows,PlayStation, Xbox, Android, iOS, Oculus Rift, HTC Vive, OSVR, Playstation VR
語(yǔ)言:Lua
Stingray為一款與Autodesk建模及IBM軟件高度集成的游戲/渲染引擎,并完美整合旗下的AutodeskGameware產(chǎn)品線,以及得益于數(shù)度重構(gòu)而擁有干凈整齊的底層模塊,適合程序從頭建立游戲/應(yīng)用程序內(nèi)容。
特點(diǎn):干凈、普通更新速度、與Autodesk建模工具景密結(jié)合、快速建立每訴內(nèi)容、快速建立動(dòng)畫(huà)內(nèi)容。
授權(quán):每月或每年0,與Maya LT捆綁訂閱,免版權(quán)費(fèi)抽成。
源碼另議。
Tombstone Engine (C4Engine)
Terathon Software公司出品
支持平臺(tái):PlayStation4, Windows, Mac OSX, Linux, iOS
語(yǔ)言:C++、OpenDDL、視覺(jué)腳本編輯器
Tombstone Engin是功能完整,開(kāi)發(fā)速度快的游戲引擎,以前的C4引擎。擁有完整SDK、素材導(dǎo)入、UI編輯器、腳本編輯器等,可快速開(kāi)發(fā)出可玩的FPS游戲。
特點(diǎn):恐怖游戲特化、普通更新速度
授權(quán):?jiǎn)我皇跈?quán),一次性支付5,包含完整原碼、工具、示例游戲,無(wú)游戲、軟件數(shù)量限制,無(wú)版權(quán)費(fèi)抽成。
Torque3D
GarageGames公司出品
支持平臺(tái):Windows,Mac OSX, Linux
語(yǔ)言:C++
Torque是一款老牌的開(kāi)放原始碼引擎,集Collada、PhysX等庫(kù),擁有完整的生態(tài)鏈,穩(wěn)定、易于擴(kuò)充。
特點(diǎn):老牌、開(kāi)源、更新慢。
授權(quán):MIT許可證。
Unigine 2
支持平臺(tái):Windows,Mac OSX, Linux, Oculus Rift, HTC Vive, OSVR
語(yǔ)言:C++、C#、UnigineScript
Unigine為一款實(shí)時(shí)的3D互動(dòng)解決方案,擁有適合中小型團(tuán)隊(duì)制作游戲/應(yīng)用程序的版本,以及仿真特化的高級(jí)版本,可以做到星球級(jí)別的大地形、大氣海洋模擬等,在專業(yè)應(yīng)用、教育訓(xùn)練、影視等產(chǎn)業(yè)擁有極高的優(yōu)勢(shì)。
特點(diǎn):專業(yè)應(yīng)用、更新較快、較多的官方示范模板
授權(quán):基礎(chǔ)單人,一次性支付95,免版權(quán)費(fèi)分成。基礎(chǔ)團(tuán)隊(duì),一次性支付95,最多十人。
專業(yè)版按座位定價(jià)。
仿真版按需求定價(jià)。
Unity 5
Unity Technologies公司出品
支持平臺(tái):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還有其他以前的和未來(lái)的所有平臺(tái)
語(yǔ)言:C#、C++(底層)、UnityScript(JavaScript)
家喻戶曉,擁有世界上最大的開(kāi)發(fā)鏈和社群、用戶、資源,不知道自己想做什么時(shí)第一個(gè)上手。
特點(diǎn):完整的開(kāi)發(fā)生態(tài)鏈、更新極快速、世界最多人使用以及與這個(gè)稱號(hào)相應(yīng)的海量資源、移動(dòng)設(shè)備支持良好、多平臺(tái)編輯器支持。
授權(quán):個(gè)人或小公司限制版本免費(fèi),收入需低于0,000
Plus版擁有完整功能,每人每月訂閱,收入需低于0,000
Pro版擁有完整功能,每人每月訂閱5,無(wú)限制使用。
Unreal Engine 4
Epic Games公司出品
支持平臺(tái):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)
語(yǔ)言:C++、Blueprint
Unreal Engine 4是一套完整強(qiáng)大的游戲開(kāi)發(fā)工具,擁有明確的工具體系,以及完成一款大型游戲的完善功能。 擁有令人屏息的畫(huà)面以及極度靈活的腳本系統(tǒng)。從2D手機(jī)游戲到游戲機(jī)臺(tái)到VR,UE4為您提供開(kāi)始,創(chuàng)建和發(fā)布游戲所需的一切。
特點(diǎn):完整的開(kāi)發(fā)生態(tài)鏈、更新極快速、擁有龐大的小區(qū)貢獻(xiàn)和錯(cuò)誤修復(fù)、擁有龐大的市場(chǎng)和教學(xué)資源、穩(wěn)定的大型場(chǎng)景乘載、多平臺(tái)編輯器支持。
授權(quán):免費(fèi)使用,在游戲或程序推送以后,每個(gè)季度收入達(dá)到,000以后須支付總收入的5%予Epic公司。
Wave Engine 2
Wave Engine團(tuán)隊(duì)維護(hù)
支持平臺(tái):Windows,Linux, Mac OSX, SteamOS, Xbox, iOS, Android, Oculus Rift, Hololens
語(yǔ)言:C#
Wave engine是一款基于.NET的開(kāi)源跨平臺(tái)2D/3D游戲開(kāi)發(fā)工具,內(nèi)置有各種游戲所需的完整模塊,以及活潑的開(kāi)發(fā)者社群,能夠獲得各種資源及解決問(wèn)題。
特點(diǎn):開(kāi)源、更新較快、容易學(xué)習(xí)
授權(quán):訂制的開(kāi)源授權(quán),唯一限制為所開(kāi)發(fā)產(chǎn)品激活時(shí)需標(biāo)明Wave標(biāo)志。
千萬(wàn)記得,承載游戲的是引擎,但完成游戲的是人的手。
記得關(guān)注小編哦
文章來(lái)源引擎世界網(wǎng)。
作者:我叫大春天。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。