游戲引擎開發記錄:
2024年 5月20日-6月4日:攻克2D物理引擎。
2024年 6月4日-6月13日:攻克《3D數學基礎》。
2024年 6月13日-6月20日:攻克《3D圖形教程》。
2024年 6月21日-6月22日:攻克《Raycasting游戲教程》。
2024年 6月23日-7月1日:攻克《Windows游戲編程大師技巧》。
2024年 7月2日-7月6日:攻克《雅達利2600匯編游戲開發》。
2024年 7月7日-7月11日:攻克《x86/x64匯編語言》。
2024年 7月11日-7月22日:學習《3D游戲編程大師技巧》(階段性)。
2024年 7月14日-7月18日:學習《游戲引擎架構》(完成)。
2024年 7月23日-7月30日:攻克Python語言學習。
2024年 7月31日-8月5日:攻克《3D游戲編程大師技巧》。
2024年 9月10日-9月20日:攻克游戲動畫綁定
2024年 10月27日-10月31日:攻克《C++大師教程》
2024年 10月21日-11月02日:攻克《DirectX11教程》
2024年 11月02日-11月06日:攻克《CMake教程》
2024年 11月06日-11月10日:攻克《Vulkan教程》
2024年 11月11日-11月13日:攻克《OpenGL教程》
2024年 11月14日-11月29日:攻克《DirectX12龍書》
2024年 11月29日-2025年1月16日:《心火引擎》基礎渲染部分,UI,基礎游戲框架
2025年 1月16日-2月12日:載入骨骼部分。能夠使蒙皮骨骼,動畫載入。但有諸多問題。
2025年 2月19日-3月8日:制作了完整的小哪吒模型。自已的引擎,必須要自已建模適配。
2025年 3月10日-3月23日:制作骨骼動畫,面對各種問題,各種崩潰,無法解決。
2025年 3月24日-3月27日:攻克《Lua教程》。把LUA加入引擎解決c++編譯時間問題。
2025年 3月28日-4月11日:進行Maya的學習。掌握了Maya軟件。
2025年 4月14日-4月19日:寧可碎此身,終不起此座!終于完美解決動畫問題。
2025年 4月19日-5月30日:制作Humaniod動畫。(史上最難)
2025年 5月31日-6月4日:三天制作一Galgame引擎《GalPlayer》,剩下2天進行完善。
(一)《Galplayer》——電影式Galgame引擎
這篇日志用來介紹端午節我在做的一件超級“喪心病狂”的事情:我用了3天就制作了一個可以運行的Galgame引擎。到第3天已經可以運行Galgame,加上2天進行功能的完善,總共開發的時間也只有5天。當然,每天的工作時間是拉滿的。
從5月31到6月4日,總計用時5天,共計用時60小時(凈工作時間,不是一天到晚的時間,中途吃飯都不計的)。
雖然不是正式發布,但是還是得介紹一下這個引擎的功能,以后這個引擎自然也會并入心火引擎之中。
(二)《Galplayer》引擎功能和特征:
1,本引擎的設計目標是在手機上玩GalGame,但支持所有平臺。
2,能夠對RPGmaker和吉里吉里等引擎的腳本進行讀取解析,轉化為引擎通用的xml文件。解析程序使用Python開發,用戶可以自己定制解析任何格式的腳本。
3,游戲引擎采用電影模式。一個游戲的資源解包后,只需要將腳本放在Scene目錄下,資源放在Assets目錄下,便可作為一部電影進行播放。
4,游戲的播放本質上和吉里吉里引擎一樣,根據腳本逐級播放。可以使用和GalGame一樣的播放模式,擁有自動播放,Skip等基礎功能。
5,【核心特征】:游戲能快速進行跳轉,也就是說,能像電影的進度條一樣拖動到任何地方進行播放!這是引擎的核心特征!引擎擁有容錯機制,消除跳轉腳本帶來的各種不良狀況,保證通順的播放。
引擎所使用的工具鏈:
引擎編輯器:使用C#開發的WPF窗體應用
腳本解析器:使用Python開發,通過引擎編輯器調用,也可單獨使用。
游戲引擎主體:使用Unity開發。因為很簡單,但之后也會轉到我自己的引擎里面。
(三)為什么要開發這個引擎?
事情是這樣的,我五一節準備休息一下,然后找了我以前一直覺得好玩的一個小黃油準備玩一下。然后玩了之后大失所望,倒不是游戲有什么問題,而是這東西是Wolf做的Galgame,就是RPGMaker那一系列的東西。然后做為Galgame,連直接讀檔存檔的功能都沒有,而且需要推進劇情繁瑣。最重要的是,連自動播放的功能都沒有,完全要自已一個一個對話點。我現在工作任務這么重,休息時間就那么一點點,哪有時間搞這些啊。
然后我就有一個“喪心病狂”的想法,我反正只需要看H的劇情,那么我何不把這些提取出來,只需要播放劇情就行了。
然后我就制作了一個叫做“電影大師”的引擎。全名叫“游戲電影制作大師”(為什么取名和RPG Maker很像,因為就是用來替代它的!)
設計的理念很簡單,把Galgame的腳本提取出來,把資源打包,然后直接通過引擎進行播放,我以前用吉里吉里做過游戲,所以知道Galgame的腳本是很簡單的,只需要關注文字,聲音,圖片的播放和顯示就行。
然后我五一就開始做這個引擎。
(四)游戲引擎開發日志
Day1:
我用WPF開發游戲編輯器。實現了最基礎的文件管理器,能建立一個項目,然后增加刪除文件等等。然后集合Python的功能,從C#里面調Python處理文件(C#搞這些小東西實在不行),我把Wolf里面的腳本提取出來,然后使用Python處理,變成我自已的XML格式,這樣就能夠為我的引擎所用。
?Day2:
上午的時候繼續開發Python。完成了腳本的轉化。基本上大部分功能都具備了。
差不多中午的時候開發引擎的主體,使用Unity進行開發。
然后主要是進行實驗功能,我需要一個包就能夠運行Galgame,不可能把資源裝到Unity里面,所以我需要從Download里面讀取資源。而不是使用Unity的Resources。這非常折騰人,因為我之前開發過Andriod的APP,所以知道Andriod里面讀取文件非常坑爹,沒想到Unity里面用Andriod更坑。
我好不容易想了辦法能夠讀取圖片和音頻了。但是Andriod居然不讓我讀txt和xml這種文件(哪位大佬有辦法,請指教一二?)。所以我想了一個“喪心病狂”的辦法,把我的游戲的xml文件改名為gif,這樣就能讀取了。反正讀的都是bytes。
這樣,就完成了基礎的準備工作。
Day3:
今天基本上完成了所有的必須工作。整個引擎能夠跑起來了。
1、腳本的解析與運算。
2、SKIP和AUTO功能。
3、進度條拖動功能。
Day4:
今天在做命令行事件的項目,因為沒有可以自動導出的東西,所以只要自已手動一個個做。里面用到一系列工具鏈,比如圖片轉文字,還用到了按鍵精靈。沒這么多工具鏈真搞不定。
- 制作一個PictureManager,用來管理多種Slot的圖片,之前用一個臨時方案。
- 改進了Script的播放流程,使用一個PlayQueue來管理,支持Wait機制了。
Day5:
今天做一些收尾工作,基本上的功能都具備了。
- 收尾工作做好了,將文字和Play的邏輯分離,NoWait模式也加上了,現在Play的話基本上滿足所有需求了。(DONE)
- 制作一個吉里吉里的項目。(DONE)
- 需要一個手動清圖片的功能。避免腳本中Clear失效導致的圖片白屏或黑屏。(DONE)
- 兩個項目之間的切換能力(使用同種的Menu來管理即可,新建一個類)。(DONE)
Day6:
昨天去做游戲引擎去了,完成了Humaniod的控制。今天來繼續做引擎。有兩個主要任務:
1、研究Galgame的破解。有些Galgame的包解出來都是加密的文本,這個需要破解出來。有些大神都已經給出攻略了,但是我沒有破解相關的知識,所以用不上。要想解很多其它好的Galgame,必須把這個學會。之前學的匯編,一直不知道什么地方用。這下有地方用了。
- 制作更完善打包工具。現在我已經能夠把所有的文件打成ZIP包,然后從ZIP包中讀取。以前都是散文件,管理起來不方便。尤其是復制粘貼要很多時間,而且手機上某名其妙多很多圖片,這些系統也要去加載。
- 但是我發現用ZIP的話,不能并行訪問,訪問巨慢。平時看不出來,要不還是自已打一個包?
- 實在受不到ZIP的卡頓。直接自已打包。
(五)無敵道心
順著上一個日志繼續說。因為五月底成功開發了Humanoid動畫,所以我感覺自己無敵了,在這個驅動之下,我感覺做什么都非常順利,我之前就很想做一個Galgame引擎,我現在P站上還有一個很中二的簽名:我要成為Galgame界的泰斗。
正是因為有這個“無敵道心”,才導致了我的6月份的“爆炸產出”。不過因為牙痛,到了7月份就悲劇了。這另外一篇再說。