下载 App
墨水打打打开发者日志#5 红石不造红石剑,机制设计的创新和妥协
修改于8 小时前2 浏览综合
墨水世界的新颜色加入——
黑色和灰色代表不同硬度的建材,其他颜色你会怎么设计才能让他涌现且有趣?
我们咨询了挺多人,最多的回答是附魔和效果伤害,尤其是红色墨水代表灼烧,蓝色代表冰冻..etc
老实说,不够有意思,我们想给一个完全不一样的设计;其他颜色应该和黑色完全的不一样,不只是参数不一样:好比红石不只是另一种矿钻石一样,造红石剑红石铠甲什么的,而是衍射出一套完全不同的玩法
三原色
除了黑色灰色白色,三原色是在计划中的。考虑是墨水,颜料嘛,使用红黄蓝作为三原色
I首先是红色,代表爆炸
红色代表爆炸,有激情和能量的寓意
爆炸其实是个特别有意思的机制:爆炸不只是爆炸伤害而已,它提供了爆炸的冲量和连锁反应。我们没有给物理专门添加一套温度系统,爆炸的引发有两种触发机制:高速碰撞/摩擦红色墨水可以引发爆炸;爆炸可以引发爆炸
爆炸提供环形的伤害和冲量。
考虑我们之前的物理引擎,冲量可以自然引发伤害,因此爆炸被进一步优雅地合并了;伤害可以引发红色墨水爆炸;红色墨水爆炸可以释放冲量,只要距离够近,就可以引爆附近的红色墨水;如果密度低,或者有墙壁阻挡,自然伤害不够也就无法引爆。每一个红色像素都元胞自动机一下......
然后他应该可以涌现出非常多有趣的东西:
比如一开始使用红色墨水当做手榴弹;画出炮管,使用红色墨水制作热武器推动弹丸;制作火箭靴;制作引线
这个想法美好,但是过于天真了
迎面而来的就是实现问题——我们的地图没有使用同一个网格网格化的,不能原生支持全地图的粉末和元胞自动机。引擎对每一个Pbody内部有一套网格化,但当它旋转或者加速,网格不是对齐的。需要做半径搜索,而且内部外部还不是同一套,这让我们的代码变得肮脏。
(为什么noita火药没问题?它的爆炸粉末不是刚体,而是规则更简单的元胞粒子,下落没有加速度,没有追及问题,不需要考虑碰撞和转动,和他的刚体是两套实现)
然后还有性能问题。如果每个像素都是一个爆炸源,卡爆了。我化简了一次变成射线检测,发射32根射线距离衰减,仍然卡到爆;于是做了一个违背祖宗的决定,合并一块的8*8的墨水为一个chunk爆炸一次,同时内部延伸单独写一份和向外不一样;还有一些工程上的trick,32根射线释放两次,第一次是释放冲量造成伤害,但并不指定释放冲量作用到被伤害的物体上,因为伤害后物体还会经过一次形状重建,重建后可能分裂成非常多的碎块,找原始的太麻烦臃肿了(GPT给的方案);而是重新再释放一次32射线冲量仅仅提供冲量。考虑性能,又大幅提高了chunk大小,爆炸的分辨率降低了。
好吧,经过了丑陋的工程实践,我们红墨水总算是可以爆炸了。
然而还有很多问题没有解决:
红色墨水的调参,枪管炸膛问题,撞针的设计非常麻烦,我非常担心玩家根本没有耐心制作一个工作良好的热武器。热武器的收益还是太低了;其次是动量不够,但是又担心动量太大;虽然当前32个射线大致是对称的,理论上视觉效果上可以动量守恒,但是这样密闭空间和开放空间就没有本质区别了,只是密闭空间能防止误伤玩家而已。那么完全可以做没有炮管的长触发“炮”。事实上在现实世界是有气体膨胀,推动的,,,,很难受
仍然需要调参;

II其次是黄色,代表机械,结构,传动,约束
头脑风暴的时候其实优先想的是蓝色,不过蓝色过于复杂了还没有定下来。
想了半天,有什么玩法堪比爆炸的机制呢?想到了机械,也就是连杆,传送带,弹簧这些东西、
但是有一个重大问题:2D世界怎么实现连杆和弹簧的连接?它不自觉地添加了一个图层!
好吧,问题又有一大堆来了
1.设计弹簧,很有意思啊,愤怒的小鸟来了,弓弩来了蹦床来了,但是你打算做软体物理吗?
毫无疑问我们肯定要避开这种雷区的,我们是做游戏的又不是做仿真软件,一听就吃性能而且不讨好的东西。
那么弹簧怎么做?
妥协了,让弹簧直接没有碰撞,只是视觉上有可以画的假象,本质是两个端点的约束;中间也只好不能被剪断,通过破坏两端,或者让弹簧受力过大扯断;然后F=KX肯定不会变,粗细和劲度系数相关。听起来很自然吧......
等一下,粗细和劲度系数相关?弹簧在另一个图层?
有问题?
大大的有!
首先,弹簧有端点约束,端点必须和表图层的关联;也就是端点是特殊的,虽然它是黄色,但也有一个额外的约束;
其次,粗细,什么是粗细?玩家可以使用自由画笔画弹簧,那么如果,我一段画的粗,一段画的细,完全不均匀怎么办?取积分?沿着连通域拟合?
我想,你也会直接设定为:使用笔刷的粗细代表弹簧的劲度系数吧。即使玩家使用细的笔刷刷两遍显得很粗,依然依靠笔刷粗细来决定。
这个设计在游戏的哲学意义上打开了潘多拉的魔盒:
*端点意味着,虽然是黄色,但是端点的黄色有区别。黄色和黄色亦有区别
*自由绘画的意义是什么?异形的弹簧使用笔刷来决定劲度系数,本质上就是在工具栏选择不同的劲度系数啊,只是消耗的资源还是墨水量而已!那个 使用图像 所见即所得 来完全表示游戏的设计理念,已经结束了。这个从根本上改变了游戏的优雅,它变得更加“臃肿”,本质上,粗细和切换材料一致了。但是设计和策划变得相对容易。
而且还有问题,和制作热武器一样:
设计弓箭并不容易,即使是在墨水世界——
首先手的最大力是有限的,弹簧储能是有限的,如果没有导轨约束,打出去会乱飞;
即使有导轨约束,他也会很慢:能量转换效率和弹丸拖和弹丸的相对大小相关,普通人第一次画,很有可能因为弹丸拖太大导致能量利用效率非常低,越大越空放;但是弹丸拖小了,又不好拖住,不好画约束部位。。。

2.连杆和轴系,这个添加的图层怎么处理?它应该和玩家碰撞吗?它和弹簧不一样没有规避软体的理由,它是刚体啊!
比如设计双图层,两个图层之间相互没有碰撞,可以使用黄色绘制贯穿图层的轴系。玩家应该可以同时碰到两个图层吗?
*如果玩家可以碰到两个图层,这一类的东西,包括怪,地板就要特殊设计,也不是不行,mask填写一下。
*如果玩家可以切换图层,那么房子就很好实现了,相当于地图多了半个z轴(沿着纸面向外的自由度),可以做室内啊,房子什么的,但也意味着,切换图层这个东西,不是自由的,如果A图层有东西,B是空气,移动到B空气切换就会卡住...
*如果没有自碰撞,使用多图层,或者id mask方案,会不会出现碰撞过少,自由度太高的情况?
最终还是妥协了,参考了围攻的方案:当且仅当轴连接的两个物体,相互没有碰撞。工程实现没问题,引擎顺手加一个接口,大概希望这样。
还没做完.....etc
角色控制器
音乐和音效以及虚构层
下次再说了,睡觉了
地图编辑器优化
随着项目推进,开发过程也面临问题:当画布、怪物、剧情元素越来越多,纯靠手工修改场景文件已经很难高效迭代。因此,我们没有继续赶剧情,而是打磨地图编辑模式。(其实是美术和文案不大会写程序于是让ai一步一步把地图编辑器做成了宝宝模式)
工具栏从最基本的“能放东西”,逐步增加左键拖动、滚轮缩放、右键删除、形状弹出菜单、画布扩展入口。工具面板也增加了快速显示和隐藏的方式,减少编辑地图时的视线遮挡。
当编辑动作越来越多,“保存后能不能稳定恢复”就成了新的瓶颈。在没有增加撤销、自动保存等功能时,我们经常在编辑时忘记保存或者闪退导致工作白干,后面通过不断优化完善,基本上不会引起类似的恶性问题。画布历史记录被抽成独立模块,让绘制和固化共享同一套撤销机制。撤销按钮接入后,又继续补上了工具图标的按下和选中反馈。
关卡设计
当第一关可以稳定编辑后,我们开始把注意力从“场景里有什么”移到“玩家在关卡里经历什么”。这带来了掉落死亡与复活、出生点、检查点画布以及关卡选择等功能。
关卡有了流程,敌人就不能只是放在场景里的静态图片。其实在一开始就设计了不少角色,但是后续考虑关节复杂度,物理碰撞等等问题,重新制作了部分角色。目前只有三个可以完整放置的角色,分别是:小兵,大盾,炸弹狂。我们先用小兵验证拆件角色的骨骼、IK、放置与拖动;随后的大盾兵又引出了部件遮罩、盾牌碰撞、朝向切换、足部贴地和倒地恢复等问题。
小兵解决了“拆件角色能不能动起来”,大盾兵则推动系统继续解决“复杂角色能不能稳定地与玩家和地形交互”。目前的敌人暂时还无法进行攻击交互,之后我们也会进一步调整每一种敌人,将怪物制作从“沿用一套换皮模版”转向“每种敌人需要单独解题”。
音效和动效
当碰撞、爆炸和黄色弹簧已经能在画面上工作,一个新问题开始变得明显:如果没有合适的声音,冲量、重量和爆发感很难被感知。于是我们请出文案老师为所有音效进行配音@桂花树下的耗子 !如果你实际游玩了游戏,那我相信你一定很难绷住。
在提出了一点小小的需求后,我们围绕目前的游戏风格设计了一套动画切换页面,非常的符合我们的预期(我的天哪gpt大人)

下一步
完善第二关,引入墨泉补给,补足剧情对话触发和文本
增加血条和伤害机制,实际上现在没有做任何的扣血手段
替换墨泉与房屋的正式美术,并为涂改液侵蚀、NPC 救援和分支对话预留扩展。
经过这12天的努力,demo已经发布,求求各位尝试一下我们这款玩法极具创新的游戏。
InkFFF还在迭代,但会在开发者团队和各位玩家的努力下越来越像一个完整的游戏。
优雅在妥协
墨水应该仍然是世界的核心,纸上世界的原子,不管是叙事上还是代码上。我努力保持着Ink的抽象,一切皆墨水,努力让玩家,怪物,武器,建筑都用同一套物理,复用更多的基本代码,但仍在一点一点被破坏——那个极度精简,完全涌现的代码幻想乌托邦不复存在了。
开发过程中,玩家的角色控制器,舍弃了玩家本身可以被破坏,玩家的形状金刚不坏了;美术骨骼动画舍弃了一半的物理;性能妥协让红色分情况处理;黄色的追加使得颜色和图形不再能代表全部的物理实体,同一种颜色亦有区别;性能优化我们加回了CCD,引擎也看了noita的GDC演讲决定用多边形拟合而不是完全真像素;从中期开始,由于假期结束,我的代码手写部分就在越来越少,对代码的掌控程度也越来越低........
这么多的妥协和修改,添加了这么多的动画UI和内容,游戏就会好玩吗?我不知道 作为开发者,我已经不能作为一个玩家视角享受这款游戏了,每一次打开我都会带上测试的滤镜。
发布第一个版本后,我立刻转发了这款游戏的包体,截止写下这句话过了三到四个小时,反馈很少,我们团队第一次打GJ,也许一个很好的点子不能生长成一款很好玩的游戏?也许它根本不是一个很好的点子?
不知道,请你去玩一下吧尝试一下,享受或者锐评建议,第一次gamejame的我们非常需要——开发者需要玩家,而不是反过来
谢谢你。












