独游开发串,每日打卡欢迎督促无名氏No.66434206 返回主串
2025-06-27(五)04:45:39 ID:30tui7b 回应
我不得不承认即使是自己想做的事情也需要动力,希望这个串能够在我开发的途中给我些动力。
2026.8.27无名氏No.69331362
2026-08-27(四)14:46:01 ID: 30tui7b (PO主)
研究了下弹幕系统,面对大量弹幕比较主流的做法是将数据、渲染、逻辑分离,CPU只发一条间接命令,GPU 自己读取数据。虽然提升确实十分明显,但开发难度完全不是我个人能轻松搞定的,要学习一整个运行流程,还要彻底重构当前的发射系统,我估计至少需要一个月,而且这种系统对于这个追求弹幕多样性的游戏来说开发的难度更加高,子弹的渲染和游戏逻辑都要分别编写。所以总的考虑下来还是暂时沿用当前的系统,因为实际上目前还看不到需要这么大量的弹幕时候,如果不是追求极致性能目前维持500-700个同屏数量的弹幕系统其实也没大问题。
正在初步构建子弹移动控制脚本,虽然不需要彻底重构,但这个新的子弹移动控制系统也需要大幅的修改现有的发射系统。这个系统主要是为了实现子弹在飞行过程中的移动变化,主要是方向和速度。并且要能够处理叠加多种移动脚本的情况,以及对不同子弹类型的适配。
2026.8.28无名氏No.69339083
2026-08-28(五)17:22:31 ID: 30tui7b (PO主)
初步完成子弹轨迹系统。主要是通过轨迹脚本实现,脚本中会定义方向和速度获取,和一个更新方法,在子弹脚本中会一边更新一边获取轨迹数据,并且还会合并同等覆盖等级的轨迹脚本,使得同等级的轨迹脚本一同修改轨迹数据。其实玩家不太会用到这么丰富的轨迹控制方法,主要是为了给敌方弹幕做的,接下来要考虑的就是如何把这套系统融入到怪物设计中,并找到一个比较高效的工作流。
重组了发射器。主要是合并了多个多重射击的方法以及单颗子弹的方法全部何为一个方法了,算是大大的简化了代码结构。然后还加入了轨迹脚本的设置方法。
添加了轨迹脚本对象池。原来的对象池只能作用于GameObject物体,而这个脚本为了高效我选择的是普通C#脚本,所以就为这个单独建了个对象池。
调整了射程检测方法。这方面还挺烦恼的,目前用的是每帧检测移动距离的脚本,但是这种轨迹扭曲的子弹用这种方法检测就不准确,其他检测射程的方法也各有短板,计算时间会被弹速和轨迹影响;设定超出距离,如果需要小小星球那种弹幕就会无限距离。暂时还是没想到什么好的方法,所以给轨迹脚本加了个射程修正倍率,子弹会根据这个值获取实际检测的射程。
Gif:https://pic1.imgdb.cn/i/034Eu3vZevoWNr8ZeHqvDB.gif
2026.8.31无名氏No.69357905
2026-08-31(一)17:18:21 ID: 30tui7b (PO主)
优化发射数据,现在代码结构更加简洁易懂。
完成在行为树中对新射击系统的应用节点。
修复了一个十分诡异的Bug,在第一次重新启动行为树时会报出无限递归。但是最近又没有修改过启动相关的代码就很诡异,然后一个个排查最后发现是初始化时用的一个脚本设置了公开属性导致被行为树反射处理,因为这个脚本是敌人的核心脚本所以持有行为树组件自身,所以处理到自身的时候开始无限循环了。更奇怪的是我去查了Git仓库,这个初始化节点的这个公开属性是我最开始就写在那里的,这么久都没有出现过这个Bug。我现在推测应该是因为26号的修复因为AI导致的注释乱码导致的,因为当时需要修复的是行为树中的注释,并且主要是行为树自带的节点,所以我就打算重新导入包,结果没找到包,所以就重下了一个,我估计就是新版本加入了这个反射。
2026.9.1无名氏No.69365119
2026-09-01(二)18:50:29 ID: 30tui7b (PO主)
构思了一个新boss,实现了基本行为,还有很多参数需要调整。主要是和插件搏斗了很久,一个事件触发方法AI说用这个官网文档也是用这个,结果我一用压根没有这个库,看了下更新也没有更新,反正到处都找不到他用的库,然后发现可以直接调用行为树的事件触发方法,试了试还是触发不了,但是不带参数就可以触发,奇了怪,没办法逐一排除,最后发现是调用时要带泛型。
2026.9.2无名氏No.69372227
2026-09-02(三)19:59:23 ID: 30tui7b (PO主)
修复了之前大改发射器留下的bug。
完善了子子弹的轨迹脚本继承功能。添加了一个轨迹脚本的复制方法实现继承功能。
优化了新boss的参数,优化了受伤频率计算方式。优化了行为树节点打断关系。
修复了子弹池混用的情况。
遇到一个奇怪的bug,一个原地分裂的子弹boss使用时撞在墙上销毁触发时经常有固定的几个子弹被立刻销毁。一开始我觉得是生成的子弹碰到墙壁直接销毁了,我加了个发射器参数可以调整生成子弹时向发射距离的偏移,但还是没效果,然后我把数值调的很夸张,子弹完全不可能碰撞到墙上的位置,然后还是没生成出来,然后我用玩家的发射器触发这个分裂弹,结果就很正常,接下来我将boss射程改短看看到底是啥销毁了子弹,结果又不触发Bug了,这就很奇怪明明已经排除了墙壁碰撞的原因,然后我发现玩家和敌方的子弹池混用的情况我又一通调整,子弹混用是解决了,测试下来还是没解决这个bug,明天再看看吧。|-` )
2026.9.3无名氏No.69378770
2026-09-03(四)19:37:25 ID: 30tui7b (PO主)
终于找到这个bug的原因了,我给碰撞、销毁、发射器生成代码位置加了调试信息,然后发现分裂弹确实生成了,但是却因为碰撞墙壁销毁了,然后我加了生成位置调试信息,并调大参数保证不会生成在墙里,然后发现位置是正常的,这就很奇怪,说明不是正常触发的碰撞,然后我在碰撞的调试信息中加了碰撞对象名称打印,然后发现导致分裂弹消失的竟然是在另一边的门,他们的位置完全是分离的,一开始我还很奇怪,我觉得可能是从池中取出时没有完全停止代码导致的,所以调整了池管理的相关的代码,结果完全没用,后来我在用玩家发射器复现的时候发现在门缝位置比较容易复现bug,所以应该是同时碰撞了多个碰撞器导致的,顺着这个思路我手动调整了房间的碰撞器,果然boss的子弹也不出bug了,不过还是很奇怪,我写的碰撞后应该立刻进入池中了后续的第二次碰撞不应该触发,然后我想到之前测试导致分离弹消失的碰撞器刚好是对向的子弹击中的位置,所以是对向的子弹击中2个碰撞器第一次成功回收了,但是因为分裂弹生成在同一帧就又被取出了,导致第一次的回收标记没有成功拦截第二次碰撞检测,最后导致生成出来的分裂弹被立刻回收了。
优化池系统,回收时有一帧暂存期。虽然修改墙壁的碰撞器可以基本上不触发这个bug,但是我的房间因为有活动门所以在门缝的位置还是会碰撞2个碰撞器,为了彻底解决这种问题直接调整了池系统。
修复了因为修改子弹移动方式导致的反弹效果失效。
添加了一个弹幕活动区域,防止因为反弹效果导致弹幕超出游戏区域。
完成了“洞物”的高级版本,调整节点参数,优化了伤害频率窗口和频率变化相应速度。顺便介绍下这个boss吧,这是个纯粹的弹幕boss,特色是会根据受到的攻击频率调整攻击方式,攻击频率低于0.5每秒时不会有任何动作,大于1时发射分裂弹,大于2.5时随机选择发射旋转弹幕或扭动弹幕,大于4时较为快速的随机切换3种弹幕。虽然看着弹幕很多,对新手不太友好,但是这个boss只要你保持一个低的攻击频率就是个稳定无伤的boss。
普版本:https://pic1.imgdb.cn/i/034IJCJDhXwi6aqeBjj2ms.gif
高级版本:https://pic1.imgdb.cn/i/034IJBudnatNj7xagVzNd8.gif
2026.9.4无名氏No.69385319
2026-09-04(五)19:35:12 ID: 30tui7b (PO主)
修复改变移动方式导致的跟踪效果失效。
完善了敌方使用跟踪射击。
初步完成不同伤害对于子弹外观的对应。
完善了百分比伤害在射击系统的使用。
设计了些敌人雏形。