《潮痕》开发日志 #4 关卡与角色的一堆事情

作者:Onyx
2022-09-13
9 1 4

又挺长时间没写开发日志了嘿 时间过得好快诶,所以这篇日志会有亿点点长。

这段时间学了一些东西,在设计与实际开发方面都有一点进展。

再提一嘴,目前还是一个人在搞事情,依然在寻求合伙人。如果有对游戏有兴趣的大大请尽管联系我

进入进入正题:

这段时间整了点啥活

1. 游戏设计方面

在设计方面,这段时间最大的收获就是在群内大佬的强烈安利下,投入了一些时间把顽皮狗首席设计师 Em Schatz 的课程刷了一遍,系统性地学习了游戏关卡设计的方法论,收益良多。

之前也会去分析玩过的游戏的关卡设计,但是总结的都是比较零碎的概念,现在看来并没有形成一个完备的系统,实际上手搭关卡白模的时候还是比较懵逼。刷完课程之后再回过头看有种豁然开朗的感觉。

这个是 B 站上录屏的链接,强烈安利一波

(怎么有种打软广的感觉..)

另外,如果你有兴趣的话,以下是个人在听课过程中整理的笔记,浏览器点开就可以,仅供参考:

第一周 | 第二周 | 第三周 | 第四周 | 第五周 | 第六周 | 第七周 | 第八周 | 第九周讲纯 3D 视角射击战斗的所以我先跳了 | 第十周

(对了,录屏是机翻字幕,课程里面会涉及到一些建筑学或者心理学的专业名词,笔记里面基本上就是自己凭感觉瞎翻了。不准确的可能性极大,如有错漏还请指正)

另外,在跟其他大佬聊天的时候,他们也指出了当前设计的一些问题,个人回去也仔细思考了一番,对整体设计也进行了一些比较大的迭代。这方面没什么好写的,还是等 Demo 出来之后亲自体验比较好一些。


2. 开发方面

2.1 关卡体验向机制

在系统地摸完一遍关卡设计理论之后,发现有一些功能对于营造更好的关卡体验具有很高的重要性。而对于以探索作为核心机制之一的游戏来说更是如此,所以就围绕着这个进行了一些功能的开发。

如何藏东西:

也就是关卡设计理论中“遮蔽”的概念。

对于越肩或者第一人称视角的纯 3D 游戏来说,实现遮蔽是自然而然的事情。

但是对于俯视角的正交场景来说就没这么简单了,因为视角本身以及场景物体之间的遮挡关系并不会随着角色位置而变化,玩家能将整个场景尽收眼底,能够获得的信息太多了。因此需要额外开发功能来支持。

目前,我将需要利用到遮蔽的地点分为了三种类型:

  •  区域揭示 
    • 适用于一整片具有探索价值的秘密区域。玩家在踏入区域时,整片区域会一下子向玩家揭露。
    • 实现方式也比较简单:给材质 Shader 添加一个新功能,在角色身上挂上脚本,利用射线检测触发,再将这一材质的透明度调整至设定值即可。
    • 由于像素化材质不能为透明材质,所以用了一下 Bayer 抖动做假透明。

  • 挖洞
    • 适用于不想让玩家一目了然看到被遮蔽的结构的情况。
    • 角色被遮挡时,会在材质上挖出一个洞来让玩家看到角色周身范围的结构。
    • 实现逻辑上其实与区域揭示比较类似,区别就是射线检测的方向是由角色到摄像机的,材质 Shader 上也需要在屏幕空间进行挖洞的运算。  
  • 完全遮挡
    • 就完全挡住了呗。也许可以用于藏一些非常深的秘密…
    • 这个做的处理就是角色脚下的方位显示环。利用 URP 的 Render Object 将这一圆环所在的渲染层显示在所有层之上,来在完全遮挡的情况下标记角色所在的位置。  

室内空间的处理:

依然是正交俯视角的锅:空间之间的划分不太够明显。

这一缺点在进入室内空间时会很突出:屏幕上可以同时看到室内的视觉焦点与室外的视觉焦点,玩家的注意力会被分散的很严重。

常用的祖传解决方法是将室内作为独立场景读条加载,同时用黑色的背景来聚焦室内的场景。但是每次进出室内都要读个条总是不太爽。

要不还是再写个新功能 8

基本原理是再用一个摄像机让其渲染室内场景的 Layer,写入 Render Texture,并在着色器中简单将其处理为一个挖洞蒙版材质。在 UI 层把这个蒙版显示出来,就能让这个蒙版把室外的场景“遮住”,实现类似的效果。

不过也可以看出边缘干干巴巴麻麻癞癞的。之后再优化吧。

突出“有效的”地图区域:

角色的机动性太强了,有胳膊有腿的哪都想去,跳着跳着就跳到设计好的游戏关卡外面去了。

空气墙当然还少不了,但是重点是怎么通过设计让玩家不想去到关卡外面。

这里的解决思路是利用黑暗,将关卡外部变为一个更强,也更加具有危险感的负空间。

应用前

应用后

事前的准备工作有点笨,基本思路是将关卡的有效区域用 Pro Builder 的多边形建模扣出来,再来一个垂直的摄像机用来渲染关卡有效区域的 RT,得到黑白蒙版。之后再将这张蒙版用工具生成一张边缘非常模糊的有向距离场。

不过准备完成之后就比较简单了。有了这一贴图之后,就可以在 Shader 中利用世界坐标采样与加工这张距离场贴图,调整想要的渐变颜色与过渡宽度。


2.2 角色相关

  • 收拾了一下之前的烂摊子。解决了角色的旋转轴和 100 倍缩放的问题,典型的力气活
  • 提灯挥动机制的实现: 动作方面利用了 IK 让手臂追踪目标,利用物理绳索插件为提灯运动增加随机感。 做了一个固定方向的动作混合树,加上脚本逻辑之类的 balabala。
    • 计划将这一机制作为基石之一,在游戏流程中衍生很多功能。
       

    • GIF 太糊了,详见视频
    • 还有这物理插件的参数是真的难调。  
  •     迭代了(换了一些从 mixamo 上扒的)动作与效果表现


2.3 其他

  • 扣了扣树木和植被的模型
    • 用了 Blender 自带的 Tree Gen 生成器,效果还可以,面数不少但是它快啊,先用着再说
    • 给树叶传递球壳的法线来平滑树叶的光照效果。这个属于老生常谈了。
  • 添加了体积雾效果
    • 直接用的插件,没什么特别好说的
    • 这个插件对于目前的游戏来说有好多功能都是冗余的,性能消耗也不算小。
    • 倒是想自己写,但是事太多。之后可能会自己实现一个换掉。
    • 这个效果也可以作为实现“遮蔽”的手段之一。将场景的一些部分隐藏起来,营造一点神秘的感觉。

之后要整点啥活

本来计划是,如果找到愿意合伙的程序与场景美术大佬之后就可以将全部精力放在 Demo 的剧情与关卡设计上面了。

现在看来暂时还是要设计开发雨露均沾着呐..

如果您有兴趣的话,依然请尽管联系我。

视频演示

参考链接

近期点赞的会员

 分享这篇文章

Onyx 

奇怪的人。 

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. 方程 2022-09-13

    唔,动图全都好卡,也许是因为同一页面里的动图太多?
    希望能让动图点击才开始播放……

    • Onyx 2022-09-13

      @方程:动图卡估计是因为我压了帧数,主要是indienova现在图片大小要在8m以内,对动图的确有点小..如果加个内插视频的功能就好了

    • indienova 2022-09-14

      @Onyx:实在是抱歉,目前 8M 已经相对还算大一些了,因为文章在转到微信公众号的时候,其实还要做一次压缩,因为微信公众号对 gif 的要求是最大 300 帧,外加尺寸不超过 5M……

  2. 方程 2022-09-13

    继续吃瓜ing

您需要登录或者注册后才能发表评论

登录/注册