下载 App
开发者日记#2 墨水打打打进化中!
修改于8 小时前43 浏览
程序/主策划:
看到题目我直接高超了,感觉非常有意思,也不容易车队押题,套题的话也要有点硬蹭;
引擎小伙做好了之后程序就要慢慢反馈了,因为是特化过的自研引擎,有什么问题都要和AI还有引擎反反复复修;但同时因为是特化的引擎,所以对像素刚体碰撞有非常好且个性化的支持。

我们前期开发,美术和程序是分开做的,程序只做白盒
1.做像素物理,为什么不主用元胞自动机?
- 我们定下的玩法和卖点是 玩家"亲手绘画",冷兵器对对碰,打烂墙壁的"撞击破坏";自由设计,希望最体现涌现的"机械结构",以及可能有作为点缀的化学反应
- 从亲手绘画看来,似乎很不错;但是对于撞击破坏,元胞自动机并不适合,它对于粉末,流体都有比较好玩的支持,但是刚体对对碰的碰撞问题并不合理。最简单的想象一根定长刀刃的旋转,对于网格画的地图,旋转一个非整数角度的时候怎么办?瞬移拟合?不太好看吧,而且如何计算同一种材料的封装造成的伤害呢?也和元胞自动机一样,规定各个像素之间有化学键和力的作用?这个有点像有限元分析的思路,不过一眼看上去就知道计算量太大了。因此我们的地图并不打算做一个整体网格化的。

参考Noita,noita其实不是很在意刚体破坏的,首先投射物的速度就和它能否击穿某一个材料没有关系;如果你经常死在圣山三层,应该会对三层的超大冰层有印象,其实是经常穿模卡住玩家的。
2.为什么要抓握系统?武器的抓握系统很重要吗?
这个决定了角色控制武器的动画。我们的抓握系统类似机械臂控制,一个目标平滑跟踪然后是PID跟随,避免了物理上无法达到,但是控制试图达到导致穿模的情况。同时也做了动量和角动量守恒,功率控制来比较的涌现。
对于冷兵器战斗:帧动画当然更好看,更迅猛;但是对于"亲手绘画",帧动画显然是不太好满足的:一根长矛,我可以抓住近端吗?可以抓住末端吗?好像都可以,那设置一个抓握点?呃,看似可行,但是这个亲手绘画是鼓励玩家画异形武器和莫名奇妙的东西的,比如镰刀,镰刀的刃开在内部,它的攻击模组就是很奇怪的,先拉出去,然后拉回来,其中包含特殊的平动和转动,不能囊括再简单的挥砍,戳刺,重击模组里面。
*也许后续会追加设定动画绑定按键的系统
由于我们有功率控制,大型武器和小型武器的决策就自
动涌现了:大型武器自然慢而长,小型武器自然短而快
对于工具使用功能:亲手控制工具才像工具,按键控制则像一个按钮。比如搭建异形梯子,搭建异形掩体的玩法,这些是很难被程序自动实现的。这种跌跌撞撞实现目标也是玩法的一部分
意料之外的收获:手的抓握还有一些有意思的玩法,比如自然涌现出了投掷。那投掷本质就是抓起物体,加速,然后释放物体嘛;还有爬山,攀岩,因为动量守恒了,大地的质量无穷大,抓住大地发力就是抬升自己了嘛....还有空手接白刃啊,抓住飞行的箭矢这些,同时局内也可以切换武器抓握点,甚至抢夺武器....一个能自由控制的手能做的操作比想象中多的多
但是妥协并非没有:首先玩家只有一个鼠标,那就只能有一只手了;其次,一个手,即使我们做成类似土豆兄弟那样,也有至少三个自由度啊,鼠标只能提供两个自由度;万般无奈下只好砍掉手腕的一个自由度,让手的朝向始终朝向身体连线的反向,再添加一个Q键来解锁手腕自由度,不过手腕没有驱动,只是能自由摆动而已。

如图,加入了Q解锁才能舒服的爬山,不然只能径向引体向上,不能用手荡秋千。
顺便一提:关于角色的控制也是这样的,移动是力控,还会给脚步的物体反向冲量,同时空中不能AD凭空借力。第一次玩可能有手感问题,这些参数什么的都要慢慢调整。
3.关于破坏?为什么不直接消融,像MC,泰拉一样逐个像素挖开?TNT就是范围爆炸?
还是因为"撞击破坏"。破坏不是和反应,消融绑定的,而是和力学挂钩。这个会让我想到桥梁建筑师,捣蛋猪和围攻,MC航空学:不过桥梁建筑师用来很多trick,它的建造是有节点的,分析的时候其实不是一大堆刚体,而是一部分节点约束,仔细看尤其是老版本,它的桥梁破坏后,除了桥面,都没什么碰撞;围攻的力学看上去也不是特别优雅,它的冷兵器是代码冷兵器来着,并且也是方方正正的;而捣蛋猪也是方方正正的,所有物体都是预制件,碰撞箱点数比较少。而MC航空学是比较好的借鉴对象,Aeronautics 的物理底层是 Sable,Sable 当前又使用 Rust 的 Rapier3D 做刚体动力学,这也许是引擎选择rapier的原因,不过也没有破坏可以抄。
想象一个棘手的问题:为什么矛能打破盾,而不是反过来,即使在他们材料相同的情况下?(或者你可以想象两根木杆对撞,但是一个是沿着轴速度的用末端撞击另一根的轴)
一开始这只是一个直觉,但真要讲透挖开了就是好几本教科书了......我大概看了几个科普视频,又和AI聊了一下,云一下材料力学,剪力,压力,拉力,首先拉力是实现不了的,要做内部力对引擎要求太繁琐了,而且撞击破坏对拉力破坏没有那么高的要求;直接做分块血量,血量用完就消失?太丑陋!我要的是长矛能够将盾牌刺透达成两块,每一块防守方都可以捡起来继续使用;应力贴图,固化的时候计算一次,细的地方血量少?方向!长矛都很细,但是轴向非常坚固;有限元?想得美,算力根本不够.....
于是工程上做了一个trick,搞个近似,碰撞的时候考虑关于冲量和动能的函数,又添加了考虑两边冲量方向的材料深度和强度,沿着冲量及其附近方向挖掉像素,制造裂纹,裂开了就断成两块。
实现效果基本满意,又参考闪电和玻璃碎裂做了随机纹路

*这里还有一点,就是设计的时候疯狂地遇到碰撞导致的性能问题,这个没办法,引擎定制了也解决不了ccd碰撞对一朵,子步一多的性能问题,引擎优化了半天,变好一点但还是不行;策划一拍大脑——干脆把ccd关掉了,给他穿模,穿模说明他速度快嘛,那就应该破坏,穿过去啊,正巧有这个破坏对吧.....于是大概就好了,从low帧个位数fps提升到60Fps以上。还涌现了撞击焊接,hhhh
顺便一提,这里引擎和程序用的都是天选笔记本,也没上GPU跑的,希望玩家的设备性能不要太弱吧.

最卡顿的情况:斩断大地!优化后也没有特别卡顿
4.图层怎么办?如果要做机械结构和胶接等等....
还没想好,不过书到山前必有路
END.因此要魔改引擎
引擎:
- v0.1.0 首次发布,Vibe了一个体素破坏引擎,用于快速验证可行性
- v0.2.x 程序那边反映单纯的代码引擎严重影响开发效率,于是在这一版加入可视化编辑能力,后续的一些小更新也与节点化和可视化相关
- v0.3.0 意识到物理模拟有大量需要优化的细节,而这大部分都是经验相关,我们在短时间内难以实现成熟的物理模拟效果,于是这一版将内核切换到Rapier
- v0.3.1 实现关节约束接口
- v0.3.x 程序反馈引擎存在的问题以及性能缺陷,针对性修复
文案/关卡设计:
1.为整个剧情写下大纲,明确了剧情的风格与思路。
2.确立了几条核心地图设计原则,并完成了序章的地图设计。
3.明确了游戏中可交互物体的各项属性与功能,为后续的关卡设计打下基础。
4.完全完成序章文案,基本完成第一章文案。
美术:
1.制作了几个小兵和boss的动画素材,。。。纠结人物可不可以破坏(主角/敌人)
2.由于之前画的主角和敌人是由透明png图片组装,经过微调之后实际运行时像素大小不一致,需要重新统一风格;最后是让gpt写了一个统一逻辑像素的工具,重新绑一遍骨骼(md我的token啊)
3.做了一个简单的ui,是否还有可添加的,讨论血条要怎么处理,彩色墨水与黑色墨水混合/分开?
4.建筑要做成手绘画风还是比较规整,美术希望做的大一点炸起来比较爽,策划觉得没必要,占用开销
OK这就是我们团队这几天的开发总结,可以看出策划非常想要向大家介绍我们的游戏,所以大家点个关注吧(跪求😭)













