下载 App
《涌现》主题开发日志-05 一块蛋糕惹得祸?
10/0728 浏览综合
事情要从一块蛋糕说起
昨天我在吃蛋糕,拿勺子挖下去的一刻,我突然在想一个问题。假设我每一勺都近似用同样的力道挖掉同样的体积,那么不考虑一些蛋糕材料的因素,在蛋糕里挖出一条隧道或者地下空间应该很轻松吧。
结果我回到游戏里尝试,挖掘与回填系统是我第一天就做好的。然而——我却压根没法达到我的目的。我对着地面使用挖掘,只能挖出坑,而且这个坑是越挖底越平的,回填也只能堆出小山坡。 我想起在我的世界里世界是方块化的,我们可以很容易挖出地下空间或者隧道。那为什么我自己的游戏在不方块化的情况下达不到类似的效果?我只要保证每一下都挖掉同等的体积不就行了吗?带着这样的疑问,我问了G老师,而G老师也给出了我解答。
一个看起来明明是3D的世界,它的地形在底层却不一定真的是一个完整的“三维物体”。
我一开始采用的地形思路,其实可以简单理解成一张二维网格。
网格里的每一个位置,只需要记录一个东西:
这里的地面有多高?
比如把一片地面想象成很多密密麻麻的小点:
· · · · · · ·
· · · · · · ·
· · · · · · ·
· · · · · · ·
每个点都有自己的高度。
有的地方高一些,有的地方低一些,再把这些点连接起来,就能得到起伏的三维地面。
所以虽然最终看到的是3D世界,底层真正需要描述的,某种程度上仍然只是一张二维的“高度地图”。
这套办法其实非常好用。
山坡可以做:
/\
/ \
______/ \______
河谷可以做:
______ ______
\____/
玩家想挖一个坑,也很简单。
原来这里高一点:
──────────────
那就把中间几个位置的高度降低:
────\____/────
再把周围稍微处理平滑一点,一个挺自然的坑就出来了。
所以最开始实现地形挖掘的时候,我还挺开心:
好像没想象中那么难嘛。😂
然后问题来了。
如果我不想“往下挖”呢?
假设现实里有一块蛋糕。
我拿勺子从上面挖掉一块:
████ ████
████ ████
████████████
████████████
这很好理解。
但如果我把勺子从侧面伸进去呢?
████████████
████ ████
████ ████
████████████
这时候就出现了一个非常关键的区别:
同一个位置,上面有蛋糕,中间是空的,下面又有蛋糕。
而原来的地形系统只会问:
“这里的地面有多高?”
它没办法回答:
“这里上面还有东西,但是下面已经被掏空了。”
因为一个位置只有一个“高度”。
如果告诉它地面在最上面,那么下面那个洞就不存在。
如果告诉它地面在最下面,那上面的“顶板”又整个消失了。
于是我才发现:
“挖一个坑”和“挖一个洞”,在人看来几乎是同一件事,在这种地形表示方法里却完全不是一个难度。于是我最开始想:那就补一个真正的3D系统?
原来的地表继续负责山坡、河谷和坑。
当玩家需要在地面下面掏出空间时,再额外记录:
这里原本是实体,但现在被挖空了。
这样理论上就可以做到:
原来的地表
───────────────
███████████████
████ ███
████ ███
███████████████
而且最初的技术测试确实证明——能做。
问题是,两套东西开始打架了。
地面是一套网格,地下空间又是另一套网格。
那洞口到底归谁?
地表应该从哪里断开?
地下的洞壁应该从哪里开始?
如果两边多画了一点,就可能重叠;少画了一点,又可能露出裂缝。
更麻烦的是,当两套系统使用不同的方式描述形状时,稍微处理不好,原本平滑的地面甚至会突然冒出很明显的方块和棱角。
于是最近几天的开发大概经历了:
“成功挖洞了!”
↓
“等等,我的地怎么烂了?”
↓
修。
↓
“洞口好了!”
↓
“等等,另一边怎么又裂了?”
↓
再修。
做到这里,我开始觉得:
也许真正应该解决的,不是怎么把这两套东西缝得更漂亮。
而是——
为什么非得有两套?这次换了一个思路。
不再告诉游戏:
“这里的地面高度降低一点。”
而是更接近于告诉它:
“从这里拿走一小块东西。”
还是回到前面的蛋糕。
如果每次操作都是拿勺子挖掉差不多的一小块蛋糕,那么从上面挖、从侧面挖、斜着挖,在规则上其实根本没有区别。
至于最后形成的是坑、沟,还是一个下面有空间的结构,不需要提前告诉系统。
形状是一次次修改之后自然留下来的结果。
最近已经做了一个很小的技术原型。
目前至少证明了一件让我比较开心的事情:
同一种地形修改操作,确实可以既产生普通的凹坑,也可以产生原来那种“二维高度”很难表示的结构。
而且天然地形也不需要因此全部变成非常昂贵的三维数据。
没有被修改的地方,依然可以继续使用原本比较简单的方式表示;只有真正发生变化的局部区域,才需要记录额外的信息。
当然,现在还远远没有到“做好了”的程度。
新方案目前仔细看还是会有一些轻微的棱角感,真正接进游戏之后还有不少东西需要重新适配。#聚光灯gamejam开发者日志











