Godot Engine是一款國際知名的游戲引擎,這款引擎開源免費,完全不需要你的游戲使用它們的啟動界面,而且非常輕量,完全安裝好的軟件只占用30M的空間。對于中小型游戲開發(fā)企業(yè)來說,這款Godot Engine顯然會是個不錯的選擇。
軟件優(yōu)勢:
輕量級
構(gòu)建好的 Godot 只需要占用你的硬盤的 30M 空間,包含(幾乎)了所有內(nèi)容。如果你需要構(gòu)建手機(jī)版本,你需要下載額外的 200M 的構(gòu)建模板,僅此而已。
這里我并不是因為下載速度快或者因為其他引擎占用了 3 到 30GB 的大空間而提出這點,而是為了說明 Godot 團(tuán)隊對性能的關(guān)注程度。 Godot 打開只需要一眨眼的功夫,我那用了 4 年的舊筆記本打開或者加載時間甚至都沒超過 5 秒鐘。我所等待過的最長時間大約是 1 分鐘,那是發(fā)生在點擊一個按鈕發(fā)布到安卓手平臺的 Debug 版本之間的時間開銷。
當(dāng)然,最重要的是:它能反應(yīng)出你的游戲的性能。當(dāng)我發(fā)現(xiàn) Godot 引擎本身就是一個 Godot 開發(fā)的游戲的時候,我被深深地震驚了!
友好的版本控制
你是否曾經(jīng)遇到過在使用 Unity 或者 Unreal 的時候發(fā)生了場景或者預(yù)制體或者其他的對象文件在倉庫的版本沖突問題?如果有的話,難么你應(yīng)該知道這是多么痛苦的一件事了,特別是在大型團(tuán)隊里。
在 Godot 中任何對象都是以文本文檔的形式保存,對于合并沖突來說是絕對是一種非常友好而且可讀性強(qiáng)的文件格式。因為我們能非常輕松地區(qū)別開多個場景中的多個對象(關(guān)于這個之后會談?wù)摳啵沟妹恳粋團(tuán)隊成員都能夠?qū)W⒂谧约旱墓ぷ鳌?/p>
動畫系統(tǒng)
Godot 的動畫系統(tǒng)是我見過的最強(qiáng)大而又簡單易用的一個系統(tǒng),我曾經(jīng)使用過的所有動畫工具具有的功能設(shè)置它都包含了。你可以對某個對象的任意屬性進(jìn)行動畫設(shè)置,甚至包括函數(shù)的調(diào)用。除此之外,它還包含了一個非常簡易的動畫創(chuàng)建工具。
動手比解釋更能體會它的工作原理,我推薦你訪問 GDQuest 和 Heartbeast 的視頻,兩位大牛利用他們的業(yè)余時間講授創(chuàng)建游戲相關(guān)經(jīng)驗的視頻,大部分是免費的。
常見問題:
真實2D vs 假2D
經(jīng)常會遇到 Rock Milk 的哲學(xué)理論問題。為了弄清楚這個東西,我們創(chuàng)建了一個小而簡單的游戲,嘗試突破未開發(fā)的那些區(qū)域和一些創(chuàng)新機(jī)制。由于我們是兩個家庭的普通人,經(jīng)常一天只能抽出個把小時來開發(fā)我們的游戲,所以我們只專注于 2D 游戲開發(fā)。
Godot 的 2D 引擎可圈可點,它不是假的 2D ,就像在 3D 空間把 Z 軸*平放*一樣的假 2D 。對于 Godot 來說這意味著什么呢?
像素作為坐標(biāo)和單位使用,包括物理引擎中的使用
更加高效、更加易用地 API ,無需在第三個軸上處理邏輯或者數(shù)學(xué)問題
某些其他引擎上的典型解決方案在這里都變得沒必要(例如:把 1 個像素設(shè)為一個單元,完美像素渲染, Z 軸分層和相機(jī)縮放問題等)
換句話說,我們能很好的控制每個游戲物體的尺寸、位置、速度和碰撞,包括皮膚( HUD ),這經(jīng)常是需要進(jìn)行一個完整的 PITA 設(shè)置。(不過我們還是蠻喜歡 Unity 的新 GUI 系統(tǒng)的說)
GDScript 腳本和 API
GDScript 是 Godot 中代碼處理的默認(rèn)編程語言,能和引擎的相關(guān)特性非常吻合的結(jié)合在一起。
通常只需要編寫一點點代碼就能做出一大堆動作效果,這是由于它那豐富的 API 。我曾以為每個對象都需要從頭開始創(chuàng)建,但是 Godot 已經(jīng)幫我們做好了,包括每一個操作和我所需要的自定義功能。
另外,我覺得 GDScript 是讓新用戶拒而遠(yuǎn)之的最主要原因。我重點列舉以下我所聽見的抱怨中的幾條:
我是不是必須要學(xué)習(xí)一門只能在 Godot 中使用的編程語言?
是的,朋友,但是這并不會多花費你多于兩天的時間。這門語言非常簡單,就像 Python 的兄弟版。
最糟糕的情況是:至少你也將會學(xué)會另一門編程語言,而且學(xué)習(xí)新的語言能有助于你進(jìn)行和別人不一樣的思考方式(那是更好的方式)。
我討厭編程語言
好吧,沒有理由一定要嘗試,我也沒有什么可抱怨的。但是,如果你愿意的話,你可以完全使用 C++ 模塊來編寫代碼然后輕松地導(dǎo)出為 GDScript 腳本。
或許,你可能更希望等待 Godot 3.0 版本的發(fā)布(其實它就在 Godot 的社區(qū)……開個玩笑),因為 3.0 版將會支持 C# 以及 GDNative 腳本,也就是說到時候你可以使用Python , Go , D , Rust 甚至 Nim (或者任意其他你想綁定的編程語言)等語言編寫代碼。
那么它的性能怎樣呢?游戲代碼如何?額
一般對于你所能想到的 95% 的游戲我相信性能都足夠滿足了。如果你還是持有懷疑態(tài)度,那么像我剛才提到的,你完全可以使用 C++ 模塊編寫然后獲得 C++ 的性能。
如果在你的游戲里,某個部分算法有著極高的性能需求,那么你可以在此部分上單獨使用 C++ 進(jìn)行編程,在其他部分繼續(xù)采用 GDScript 腳本。
你可以閱讀更多 Shin-Nil 的關(guān)于性能測試之類的文章。
我的編程工具和軟件并支持 GDScript 腳本
Godot 有一個集成的代碼編輯器,而且除了基本的腳本編寫之外它還具有漂亮的智能代碼提示功能(也就是說代碼自動完成功能),以及強(qiáng)大的 debug 功能,另外包括運(yùn)行時編輯功能,你可以看看 Juan Linietsky ( 也叫 Reduzio )的視頻,他是 Godot 的主要開發(fā)者,視頻地址在此:
https://www.youtube.com/embed/50Vw4e6JPOI
到目前為止,對于外部代碼編輯器,完全支持的只有 Visual Studio Code ,使用的是Godot 工具,由 Geequlim 開發(fā),但是其他軟件包括 Sublime Text , Atom 以及GEdit 都能支持語法高亮功能。
我的建議是:在批評之前先嘗試使用 GDScript 腳本吧。如果你在一周之后還是不能順利上手,效率也不高,那我賠你一顆糖吧。哈哈。(?)
到這里還是不相信?那看一看 Juan 關(guān)于創(chuàng)造 GDScript 腳本的理由吧,或許它能讓你改變主意:
https://www.redditmedia.com/r/gamedev/comments/36u80q/godot_engine_11_out/crhjrw6/?embed=true&context=0&depth=1&showedits=false&created=null&uuid=null&showmore=false
節(jié)點和場景系統(tǒng)
節(jié)點是游戲中能夠進(jìn)行屬性編輯的一個基本對象。它可以使一個 2D 精靈,一個 3D 模型,一些 GUI 控件元素或者僅聲音的播放功能。 Godot 包含了大量節(jié)點可供使用和擴(kuò)展,因此你可以完全創(chuàng)建屬于你自己的節(jié)點類型。場景是由一組節(jié)點有層次的組織在一起構(gòu)建而成,如同一棵大樹。
這也是我們最喜歡的特性,關(guān)于節(jié)點這個圖做出了最好的解釋:
Godot 中一切都是場景。每一個場景都能包含其他場景和節(jié)點。你可以輕松地提取子節(jié)點作為一個場景,提高它的復(fù)用性, fracteed 先生在管道上就聰明地利用了這個特性: