如何輕鬆使用LOVE2D進行遊戲開發 序言 為什麼使用LOVE2D


3樓貓 發佈時間:2024-09-08 10:33:02 作者:太郎404 Language

大家好,這裡是太郎。
我個人使用LOVE2D這個框架開發自己的遊戲有了相當一段時間,出於一些問題我無法在本文章中說明自己的項目具體內容。出於好奇我在機核搜索了LOVE2D的相關文章發現並沒有類似的教程或者引導性內容,所以打算寫一些開發教學文章用以貢獻我的綿薄之力。
本篇文章為2D遊戲開發框架LOVE2D教程的序言,用於對什麼樣的開發者可以嘗試使用此引擎(應該說是框架,為了方便理解,將在本文以及本系列文章中使用引擎一詞),引擎本身的優劣和麵向的開發對象,為什麼使用LOVE2D而不是Unity或者Godot,與此引擎類似的開發環境等問題進行說明。
LOVE2D適合什麼樣的開發者
LOVE2D作為一個以為2D遊戲開發方向為目標而設計的引擎,非常適合有一定平面設計能力的開發者。運行此框架所需要的腳本語言lua本身非常簡單,我個人認為是所有編程語言中最適合入門的語言,再加上LuaJIT在LOVE2D中的集成,運行效率一般不會出現什麼問題。
你會需要一些基礎的工業動畫製作中的概念,比如關鍵幀,圖層,疊加方式等。同時你也需要一些現代遊戲開發中的基礎概念,比如著色器,內存,線程,狀態機等等。
以上這些能力是我個人作為一個計算機系的學生和MAD/PV動態圖形動畫製作者時獲得的。本系列文章會逐步儘可能詳細的講清楚這些概念和這些概念在此框架中的應用。
在你有著以上知識的同時且善用shadertoy的情況下你可以做出相當不錯的畫面效果。
同時,我非常推薦嘗試進行開發或者學習的朋友使用Adobe After Effect作為LOVE2D開發的替代可視化開發工具,所以同時有著After Effect使用經驗的朋友可以在此係列文章中更輕鬆的進行學習。
我會將AE中圖層的概念轉為Object在開發中使用

我會將AE中圖層的概念轉為Object在開發中使用

引擎本身的優劣和麵向的開發對象
LOVE2D本身使用Lua作為編程腳本語言,一定程度上Lua的優劣就是LOVE2D這個開發工具自身的優劣。
Lua的優勢是學習成本相當低,即使你沒有進行過編程工作,你也可以通過一些在線腳本運行工具來對Lua進行學習。同時Lua的數據類型也很少,table非常強大,甚至初級開發者可以不考慮全局變量和局部變量的概念進行開發和內存管理的學習。如果你使用Windows可以直接在Microsoft store下載Lua來進行嘗試運行和學習。
劣勢則是不同於大部分編程語言中Array的概念,Lua中的Array也就是table是以1作為開始而不是0,初次使用Lua的其他語言開發者會對此有一些不適。同時因為全局變量的本質是在G_table放一個key為變量名的值,所以理論上每次變量讀取都需要一次hashmap開銷。當然作為獨立遊戲開發者,除非是你需要在一幀中進行高達數萬乃至百萬次的變量讀取,否則一般不會有什麼性能問題。
在遊戲開發中,你不需要知道一門語言所有的功能,往往你只需要學習if else,loop,array以及加減乘除就足夠你進行遊戲開發了。我會在後面的文章中引導並且進行教學。
LOVE2D在設計之初只是作為面向2D遊戲開發的開發工具。並不適合任何需要引入3D模型的遊戲開發。當然目前LOVE2D有了一些第三方庫可以使得LOVE2D在一定程度上進行3D模型的渲染和遊戲開發的可能,但是我個人還是不推薦使用LOVE2D進行3D遊戲開發。
同時LOVE2D並不適合任何大型商業遊戲或者移動端商業遊戲的開發。LOVE2D本身缺少web接口所以並不適合多次付費而是更適合買斷制遊戲。
為什麼使用LOVE2D而不是Unity或者Godot
LOVE2D與這兩者最大的區別是並不帶有可視化開發工具,他們的設計思路更趨向於面向對象編程,創建一個對象之後然後將腳本組件進行附加,讓這些對象在場景對象內進行交互。
但是我個人認為面對對象編程並不適合於初級開發者,開發面對對象編程項目的設計思路與初級開發者進行編程知識學習時的設計思路是不同的。面對對象編程項目更傾向於思考如何設計對象和對象的交互方式,而在你使用LOVE2D或者raylib這種類圖形庫框架開發環境時你可以使用任何你需要的編程思路,而初級開發者比較適合的面向過程編程也可以包含在其中。
面向過程編程更符合初級開發者在進行編程學習時,代碼自上而下進行運行最後得到結果的這個流程。面對對象編程更適合中高級開發者在進行大型商業項目開發時進行功能拓展。任何編程思路都有其存在意義,不分高下。
除了開發設計思路相對更自由一些,LOVE2D的在作為一個2D遊戲開發工具的功能相當齊全但是並不冗餘,所以初級開發者的學習成本也相對要低很多,也更容易觸及2D遊戲開發的本質——通過讀取用戶的輸入讓計算機將對應的圖案顯示在屏幕對應的位置上。
與此引擎類似的開發環境
除了LOVE2D,我也推薦raylib這個框架。raylib使用C作為開發語言,對於內存管理和讀寫效率肯定是比Lua要強的多的。同時raylib也官方支持3D模型的導入和動畫的播放。當然因為是C所以易用性和學習難度對於初級開發者來說也是相對較難的,不過對於我這種在大學期間就用tiva-tm4c123gh6pm拿ARM彙編當開發語言重寫雅達利遊戲的人來說就無所謂了。
如果你想知道其他更多引擎或者開發工具的信息你可以看dragonflydb的數據來進行挑選。
結語
我應該會從今天開始更新文章,從如何在LOVE2D框架中如何顯示一張圖片開始講我目前會的開發知識。學到了新東西之後便會再分享出來。如果我的文章中出現了對於初級開發者不太好理解的詞彙,請善用Chatgpt和搜索引擎。

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com