游戏引擎开发记录:
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月份就悲剧了。这另外一篇再说。