【游戏引擎之路】登神长阶(十八):3天制作Galgame引擎《Galplayer》——无敌之道心

游戏引擎开发记录:

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月份就悲剧了。这另外一篇再说。

相关推荐
lizz3111 小时前
GAMES101 lec2-数学基础1(线性代数)
线性代数·游戏引擎·图形渲染
X-mj17 小时前
Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)
unity·游戏引擎·xr
erxij17 小时前
【游戏引擎之路】登神长阶(十七):Humanoid动画——长风破浪会有时,直挂云帆济沧海
游戏引擎
erxij17 小时前
【游戏引擎之路】登神长阶(十九):3D物理引擎——岁不寒,无以知松柏;事不难,无以知君子
3d·游戏引擎
心疼你的一切1 天前
Unity 多人游戏框架学习系列一
学习·游戏·unity·c#·游戏引擎
示申○言舌1 天前
Unity沉浸式/360View/全景渲染
unity·游戏引擎·沉浸式·360view·全景视图·全景渲染
Unity___1 天前
Unity Editor下拉框,支持搜索,多层级
windows·unity·游戏引擎
枯萎穿心攻击2 天前
响应式编程入门教程第三节:ReactiveCommand 与 UI 交互
开发语言·ui·unity·架构·c#·游戏引擎·交互
李詹2 天前
Pitaya 是一个简单、快速、轻量级的游戏服务器框架,它为分布式多人游戏和服务器端应用程序提供了一个基本的开发框架
游戏·游戏引擎·游戏程序