介紹
無(wú)論你是為了的職業(yè)還是娛樂愛好,游戲開發(fā)都是一項(xiàng)有趣且有益的嘗試。從未有過開始游戲開發(fā)的最佳時(shí)機(jī)。現(xiàn)代編程語(yǔ)言和工具使構(gòu)建高質(zhì)量游戲并將其分發(fā)到世界變得前所未有的簡(jiǎn)單。如果你正在閱讀本書,那么你就已經(jīng)踏上了制作夢(mèng)想游戲的道路。
本書介紹了Godot游戲引擎及其新的3.0版本,該版本于2018年初發(fā)布。Godot 3.0具有大量新特性和新功能,使其成為昂貴的商業(yè)游戲引擎的強(qiáng)大替代品。對(duì)于初學(xué)者,它提供了一種學(xué)習(xí)基本游戲開發(fā)技術(shù)的友好方式。對(duì)于更有經(jīng)驗(yàn)的開發(fā)人員而言,Godot是一款功能強(qiáng)大,可定制且開放的工具,可將你的愿景變?yōu)楝F(xiàn)實(shí)。
本書采用基于項(xiàng)目的方法,向你介紹引擎的基礎(chǔ)知識(shí)。它由五個(gè)游戲組成,旨在幫助你充分理解游戲開發(fā)概念以及它們?nèi)绾螒?yīng)用于Godot。在此過程中,你將了解Godot的工作原理并學(xué)習(xí)可應(yīng)用于項(xiàng)目的重要技術(shù)。
一些建議
本節(jié)根據(jù)作者經(jīng)驗(yàn),向讀者提供一些學(xué)習(xí)建議。在閱讀本書時(shí),請(qǐng)牢記這些提示,特別是你對(duì)編程比較陌生。
請(qǐng)嘗試按順序?qū)W習(xí)本書中的項(xiàng)目。后面的章節(jié)內(nèi)容可能建立在前面章節(jié)中的主題之上,在新章節(jié)中將對(duì)它們進(jìn)行更詳細(xì)的解釋。當(dāng)你遇到一些你不記得的事情時(shí),請(qǐng)返回并在前一章中查看該相關(guān)內(nèi)容。
這里有很多功能需要學(xué)習(xí)。如果你一開始沒有學(xué)會(huì),不要感到沮喪。我們的目標(biāo)不是一夜成為游戲開發(fā)專家 - 這是不可能的。重復(fù)是學(xué)習(xí)復(fù)雜主題的關(guān)鍵,你使用Godot的功能越多,也就越熟悉越容易的使用它們。完成第7章“其他主題”后,請(qǐng)仔細(xì)閱讀第2章硬幣收集。與你第一次閱讀相比,你會(huì)對(duì)自己理解的內(nèi)容感到驚訝。
你在學(xué)習(xí)本書之時(shí),請(qǐng)抵制復(fù)制和粘貼代碼的誘惑。自己輸入代碼會(huì)吸引更多的大腦。它類似于在演講期間記筆記如何幫助你學(xué)習(xí)而不僅僅是傾聽,即使你從未閱讀過筆記。如果你是一個(gè)慢打字員,它也將幫助你的打字速度。簡(jiǎn)而言之:你是一名程序員,所以習(xí)慣于輸入代碼!
新游戲開發(fā)者犯下的最大錯(cuò)誤之一就是承擔(dān)了一個(gè)比他們能夠處理的更大的項(xiàng)目。在開始時(shí)保持項(xiàng)目范圍盡可能小是非常重要的。如果你完成兩到三個(gè)小型游戲,那么您將獲得更多成功(并了解更多),而不是你擁有一個(gè)超出你管理能力的大型且不完整的項(xiàng)目。
你會(huì)注意到本書中的五個(gè)游戲都嚴(yán)格遵循此策略。它們的范圍都很小,既有實(shí)際的原因 - 合理地適合書本大小的課程 - 而且還要專注于教你基礎(chǔ)知識(shí)。在構(gòu)建它們時(shí),你可能會(huì)發(fā)現(xiàn)自己正在考慮其他功能和游戲元素。如果宇宙飛船有升級(jí)怎么辦?如果角色想要實(shí)現(xiàn)跳墻怎么辦?
想法很棒,但是如果你還沒有完成基本項(xiàng)目,請(qǐng)將它們寫下來并保存以供日后使用。不要讓自己被一個(gè)又一個(gè)很酷的想法所牽制。開發(fā)人員將此功能稱為蠕變,這是一個(gè)導(dǎo)致許多未完成游戲的陷阱。不要讓自己成為受害者。
最后,別忘了一次又一次地休息一下。你不應(yīng)該只是幾次坐下來試試整本書。在每個(gè)新概念之后,特別是在每個(gè)章節(jié)之后,在學(xué)習(xí)下一個(gè)概念之前,給自己時(shí)間吸收新信息。你會(huì)發(fā)現(xiàn)你不僅保留了更多信息,而且你可能更喜歡這個(gè)過程。
什么是游戲引擎
游戲開發(fā)很復(fù)雜,涉及各種各樣的知識(shí)和技能。為了構(gòu)建一個(gè)現(xiàn)代游戲,你需要大量的底層技術(shù)才能制作出真正的游戲。想象一下,在開始編程之前,你必須構(gòu)建自己的計(jì)算機(jī)并編寫自己的操作系統(tǒng)。如果你真的不得不從頭開始并構(gòu)建你需要的一切,那么游戲開發(fā)就會(huì)很艱難。
此外,每個(gè)游戲都有許多共同的需求。例如,無(wú)論游戲是什么,它都需要在屏幕上繪制內(nèi)容。如果已經(jīng)編寫了這樣做的代碼,那么重用它比為每個(gè)游戲重新創(chuàng)建它更有意義。這就是游戲框架和引擎的用武之地。
游戲框架是一組帶有幫助程序代碼的庫(kù),可以幫助構(gòu)建游戲的基礎(chǔ)部分。它并不一定提供所有部分,你可能仍然需要編寫大量代碼來將所有內(nèi)容組合在一起。因此,使用游戲框架構(gòu)建游戲可能比使用完整游戲引擎構(gòu)建游戲花費(fèi)更多時(shí)間。
游戲引擎是一系列工具和技術(shù),旨在通過消除為每個(gè)新游戲項(xiàng)目重新發(fā)明輪子的需要來簡(jiǎn)化游戲制作過程。它提供了一個(gè)通常需要的功能框架,通常需要在開發(fā)時(shí)間上進(jìn)行大量投資。
以下是游戲引擎將提供的一些主要功能列表:
渲染 (2D和3D):渲染是在玩家屏幕上顯示游戲的過程。良好的渲染方式必須考慮現(xiàn)代GPU支持,高分辨率顯示以及照明,透視和視口等效果,同時(shí)保持非常高的幀速率。
物理:雖然這是一個(gè)非常普遍的要求,但構(gòu)建一個(gè)強(qiáng)大而精確的物理引擎是一項(xiàng)艱巨的任務(wù)。大多數(shù)游戲需要某種碰撞檢測(cè)和響應(yīng)系統(tǒng),許多游戲需要進(jìn)行物理模擬,但很少有開發(fā)人員想要承擔(dān)編寫游戲物理的任務(wù),特別是如果他們?cè)噲D這樣做過。
平臺(tái)支持:在當(dāng)今的市場(chǎng)中,大多數(shù)開發(fā)人員希望能夠在多種平臺(tái)上發(fā)布他們的游戲,例如控制臺(tái),移動(dòng)設(shè)備,PC和網(wǎng)頁(yè)。游戲引擎提供統(tǒng)一的導(dǎo)出過程,可在多個(gè)平臺(tái)上發(fā)布,無(wú)需重寫游戲代碼或支持多個(gè)版本。
開發(fā)環(huán)境:通過使用統(tǒng)一界面制作多個(gè)游戲,每次啟動(dòng)新項(xiàng)目時(shí)都不必重新學(xué)習(xí)新的工作流程。
此外,還將提供多種工具來協(xié)助網(wǎng)絡(luò)等功能,簡(jiǎn)化圖像和聲音處理過程,動(dòng)畫,調(diào)試,關(guān)卡創(chuàng)建等等。通常,游戲引擎將包括從其他工具(例如用于創(chuàng)建動(dòng)畫或3D模型的工具)導(dǎo)入內(nèi)容的功能。
使用游戲引擎允許開發(fā)人員專注于構(gòu)建他們的游戲,而不是創(chuàng)建使其工作所需的所有底層框架。對(duì)于小型或獨(dú)立開發(fā)者而言,這可能意味著在開發(fā)一年后發(fā)布游戲而不是三年。
目前市場(chǎng)上有許多流行的游戲引擎,例如Unity,虛幻引擎和GameMaker Studio,僅舉幾例。需要注意的一個(gè)重要事實(shí)是,大多數(shù)流行的游戲引擎都是商業(yè)產(chǎn)品。他們可能需要或可能不需要任何金融投資來開始使用,但如果你的游戲賺錢,他們將需要某種許可和或版稅支付。無(wú)論你選擇何種引擎,你都需要仔細(xì)閱讀用戶協(xié)議,并確保你了解自己的身份是否允許使用引擎,以及你可能擔(dān)負(fù)的隱藏成本(如果有的話)。
另一方面,有一些非商業(yè)和開源的引擎,例如Godot游戲引擎,這是本書的全部?jī)?nèi)容。
什么是Godot
Godot是一款功能齊全的現(xiàn)代游戲引擎,提供上一節(jié)中描述的所有功能以及更多功能。它也是完全免費(fèi)和開源的,在非常寬松的MIT許可下發(fā)布。這意味著沒有費(fèi)用,沒有隱藏的費(fèi)用,也沒有特許授權(quán)使用費(fèi)來支付游戲的收入。你使用Godot 100%制作的所有東西都屬于你,而許多商業(yè)游戲引擎并不支持。對(duì)于許多開發(fā)人員來說,這非常有吸引力。
如果您不熟悉開源,社區(qū)驅(qū)動(dòng)開發(fā)的概念,那么您可能會(huì)覺得很奇怪。然而,很像Linux內(nèi)核,F(xiàn)irefox瀏覽器以及許多其他非常著名的軟件,Godot并非由公司開發(fā)為商業(yè)產(chǎn)品。相反,一個(gè)由熱情的開發(fā)人員組成的專門社區(qū)將他們的時(shí)間和專業(yè)知識(shí)貢獻(xiàn)給構(gòu)建引擎,測(cè)試和修復(fù)錯(cuò)誤,生成文檔等等。
作為游戲開發(fā)者,使用Godot的好處是巨大的。因?yàn)樗皇苌虡I(yè)許可的影響,所以您可以完全控制游戲的分配和發(fā)布。許多商業(yè)游戲引擎限制您可以制作的項(xiàng)目類型,或者需要更昂貴的許可證來構(gòu)建某些類別的游戲,例如賭博。
Godot的開源性質(zhì)也意味著商業(yè)游戲引擎不存在透明度。例如,如果您發(fā)現(xiàn)特定引擎功能不能滿足您的需求,您可以自由修改引擎本身并添加所需的新功能,無(wú)需任何權(quán)限。在調(diào)試大型項(xiàng)目時(shí),這也非常有用,因?yàn)槟梢酝耆L問引擎的內(nèi)部工作。
這也意味著你可以直接為Godot的未來做出貢獻(xiàn)。有關(guān)如何參與Godot開發(fā)的更多信息,請(qǐng)參見第7章,其他主題。