“我们这回答文章发出来,估计也没什么人会看吧…”
“没事,就当我们写一篇考古文,等以后有好作品了肯定有人来挖它的…”
一份20个人月的答卷。
2019年11月《梦神计划》正式开始制作,那时TeamRanger只有我一人。
项目的构思和早期尝试,其实在3个月前就开始了,当时我还在一个中型团队里。

当时我判断对于这个美术见长的团队,UE4是最适合他们的“武器”
最开始的想法是想做一个规模小,易上手的项目,用UE4验证一些东西,熟悉一下引擎,把路给他们铺好点,好发力。
可惜后面发生了一些不愉快的事,最后拖着病怏怏的身体和一口大锅回到了深圳。
思前想后,想通两件事:
1.还不会做游戏。
2.还不会带团队。
咋办?
从最低层级出发,踏踏实实再做一遍。
从最少人员开始,仔仔细细再建一次。
想好了,干就是了。
为了考察“重构”得怎么样,我为自己和未来的团队定下了一个目标:
“每隔一年,必须向市场交上一份答卷。”
《梦神计划-序章》便是重头开始走的第一步。
接下来分享的内容我们也不敢说是不是“做对了”,只是把我们这头铁的一年中的磕磕碰碰拿来分享分享,是好是坏,各位大佬自行判断。
第一可玩原型:2020年1月(5个人月)
FPP(第一可玩原型版本)大概用了3个月的时间,程序(李墨)在第二个月的时候加入。原型出来后取得一些不错的反响,我们也有信心了一些,至少能出版本了,也有发行找到我们,表示看好并愿意帮忙。
由于我们人少,要做的内容很多,这需要我们2人的工作是并行的(避免一个人卡住导致整个项目无法推进)。
UE4的蓝图能很好的满足我们的需求。
但我们两的能力也有明显的死角(比如我代码能力很差,只能勉强读和复制粘贴改参数)。所以为了迁就我的速度,我们几乎所有的核心内容,(除了各别特别难,或是和引擎本身有一些冲突的内容)全部用蓝图制作。
而程序是客户端出生,对网络这块不熟,我们不得将梦神计划做成纯单机版本(原来的规划是恐鬼症那样的联机吭吓队友的游戏)。
这时我们的玩法还是偏向rogue like的,玩家在一个地方战斗,尽可能装更多的补给和武器,然后乘坐电梯前往下一个房间。
这3个月期间我也写好了第一版故事,其主旨是探索“生死循环”,并把“电梯”和“镜子”作为游戏的核心元素。

疫情下的阴影:2020年4月(7个人月)
距离一月份已经过去了3个月,然而,我们没再能继承上个月的“高产”。
相反,项目一点进展也没有。
并且,游戏机制和故事也全部推倒重来了。
“因为疫情影响了?”有一部分原因。
但更严重的是程序(李墨)家里出了一些事,有很大概率无法再回来继续继续合作了。
商量一番后,我决定按最坏的打算进行计划:假定接下来我必须一个人将它完成。
我花了两天评估了后面要做的内容,安排了大概的时间节点,一些没把握的功能和内容,全部砍掉。
分析后发现我可能没有时间先提前做好核心内容的设计,然后分批制作。
我必须边做边设计,并且只有一次机会将制作的各种内容和设计整合一起。
我将梦神计划改成了“生化”这种箱庭式的关卡制游戏,原因如下:
1.游戏想要传达的“珍惜”的情绪,和这类游戏的调性符合。
2.我算是生化的死忠粉了,自认为有一些具有深度的理解。做起来比较保险,做崩的概率低一些。

关于游戏情绪设计,和对生化相关的分享,在这篇采访中有写,这里就不赘述了。
https://xw.qq.com/amphtml/20210123A0D8GQ00
确定了这些之后,我设计了第一版“小洋馆”。

并制作了一段剧情演出,来确定游戏的氛围基调(最后它作为了《序章》的结局动画)

这里提一下过场动画的制作,我不会画画,画不了分镜和概念图,所以为了传达准确想法,以前给美术提需求我一般是直接做一个段子或小版本,这让我积累了很多容易出效果的“江湖技能”,以及运镜的底子。
可以看到梦神计划,或是前面的作品里都有很多“一镜到底”的影子,这可不是要炫技,对于我来说,一个镜头走完最快,维护和调整起来最方便,因为制作和调整时间非常有限。
我经常开玩笑说我们做东西就像“狙击手”:紧缺的时间和资源不允许我们返工,很多内容只有一次制作机会。
迷雾中的光明:2020年7月(12个人月)
幸运的是程序(李墨)家里的情况有了好转,并在5月中旬重新回归,虽然还是需要周期性地进行照顾,只有一半的时间能输出,但好歹有个伴了…
在激动地眼泪都快掉下来的同时,我也开始寻找一个能在这种情况下,最大化提高我们开发效率的方式。
李墨是一个很有想法的程序,他总是能拿出一些我没见过,或者敢想不敢做的东西。
于是我尝试调整了一下开发方式:让李墨专心攻坚一个难点,然后我作为辅助,把他攻坚下来的内容放到游戏核心的位置,并补上剩下的所有外围系统和机制。
李墨告诉我,他选择了雾,可交互的体积雾。
在8月份的时候,他完成了这一攻坚,做出了一版可开洞的体积雾。
于是我在这个机制的基础上,为子弹制作了撕开雾的机制,并增加了角色在雾中的行动限制,并迅速制作了一场BOSS战的原型来验证这一机制。
虽然它谈不上多屌,表现和性能上也有很多瑕疵,但“惊叹到目瞪口呆”,这是我们第一次看到原型效果从我们手中诞生时,最形象的表情了。
我们做过很多“新鲜玩意”,但它绝对是现在为止最开心和有成就感的一个。
下面是一段李墨的分享:
《梦神计划》的两个开发者,一个策划出身,一个程序出身,没什么美术功底可言,绝大多数的美术资源就只能通过虚幻的商店购买。因此早期的Demo画面看上去没什么特色,各大视频网站上逛一圈,发现场景、角色还经常和各路免费游戏撞脸。当时内心还是十分焦虑的,像我们这种没什么名气的开发者,如果做出来的游戏第一眼没有足够吸引人的点,那很大概率就直接被玩家忽略了,所以还是决定在画面上搞点噱头。
把虚幻4的渲染特性一个个看了一遍,感觉市面上光追的游戏一大把,体积雾的相对少得多。正好我也有过一点TA的经验,可以尝试一下。和吉他果(制作人)商量之后,觉得如果能让角色和体积雾有交互,那就不只是个噱头,而是真正原创的玩法了。有了想法,接下来就是硬啃可交互体积雾的实现了。
首先是渲染,对于一个审美堪忧的程序,做出来是这个样子的。。。感觉玩家走进去就能被毒死。

好在这时候看见了Asher大佬的体积雾教程https://zhuanlan.zhihu.com/p/107016039,通过几天时间调整就得到了不错的效果,以下是早期的一些体积雾效果截图



由衷感谢Asher大佬
渲染部分算是完成,接下就是如何让主角和雾交互,关于这方面的资料就比较少了,也远比我们想象的困难的多。
最先想到的是通过3D flowmap来模拟流体效果,顺着这个思路找到了Epic TA大神Ryan Brucks关于体积雾的一些演示效果,里面关于flow效果的模拟非常棒,有兴趣的同学可以去看看https://shaderbits.com/blog/ue4-volumetric-fog-techniques
接着找到了Ryan Brucks大神提供的示例,然而打开3D Flow模拟的demo,直接内心凉了一大截,i7-6700cpu+2060 gpu最多不到20帧的FPS,而且模拟范围小的可怜,看来是没法白嫖了。只好继续想办法,NVIDIA 的Flow插件感觉能很好的解决性能问题,但还需要自己整合,也不知道这中间还要会有多少坑,时间成本也无从估计,一时之间陷入了死胡同中。
一个人在开发的路上很容易钻牛角尖,而这时就非常需要伙伴的帮助了。吉他果觉得没必要死磕流体效果,能在雾里挖洞就能够实现很多有趣的想法了,性能上也不会有太大压力。于是换了个实现思路,问题忽然就变得简单很多。
通过一张伪3D贴图来绘制“洞”的3D模型,就可以支持各种形状,包括带动画的骨骼模型,在体积雾材质中再通过采样这张Mask贴图,就能实现挖洞的效果。

左侧是模型,右侧是3D贴图
与此同时,由于这些“洞”都是直接由模型生成的,游戏中可以直接得到“洞”的物理信息,也就可以知道玩家此刻是在雾里还是雾外,从而和整个游戏的逻辑部分结合起来,不再是单纯的表现效果。
经过一段时间的调试,增加了一些细节,最后就有了《梦神计划》开场那段在雾中穿行的效果。


难搞的物理背包:2020年10月(16个人月)
这个背包系统是我用纯蓝图写的,非常乱,一些制作的过程可能不太好贴出来。
(从制作方式上来说,这绝对是个反面案例,这种级别的系统一定要找程序翻译成代码)
为了尽可能的模拟真实背包的“收纳”机制,即物体有体积,需要合理安排摆放顺序以节约空间,光是把物品塞背包里,然后模拟物理是不够的,还需要能对这些物品进行位置调整。
这是一个很难攻克的点,市面上鲜有类似设计,就算有也只是“存放”,没有深度的收纳/摆放机制。
在操作和表现上我们做了很多尝试,整体上经历了4个大版本的迭代:
第一个版本实现了基本的收纳,这个版本的特点 :
1.里挂载位在收纳空间两侧。
2.直接把物品拖过去可以挂载包外或装备在手上。
3.右键点击物品可以将物品锁住,不激活物理。
4.可以讲物品丢到右侧的悬空区域。
5.背包有个稳定度的系统,不稳定时大幅度动作会让背包中的物品晃动。



FPP后,我们发现了当前设计的几个要命的问题:
1.就算是可以右键锁定,背包内的物品一多,操作的时候还是容易挤来挤去。
2.要摆整齐很困难,逼死强迫症。
3.好不容易收纳好了,不小心晃一下,或捡个新物品,又乱了。
4.稳定度系统想法很好,但体验起来绝对是个灾难性的设计,它没有带来任何激励机制,全是负面的“惩罚”。
第二个版本:
1.让背包的形状变得规则
2.将背包“内部收纳”和“外部挂载”分成两个部分
3.去掉了背包稳定系统,用角色耐力值代替,背包不再晃了。

经过修改后,操作体验得到了一定的改善,但是收纳物品的操作依然很繁琐,物品无法快速摆放整齐,让人心烦。
第三个版本:
加入自动收纳机制,让物品根据预先设计好的预碰撞框(一般都是方形的),和优先级进行初步收纳,然后可以用鼠标拖动的方式进行细致的调整。

自动收纳其实我们有更好的方案,但那一段时间程序正好不在,只能我自己硬着头皮写了一个临时的算法,虽然看起来效果不错,但它的配置和维护非常不方便,如果要做批量开发,肯定需要推倒重构。

自动收纳的加入,让玩家对背包的操作变成了“80%自动收纳,20%手动微调”,先对背包里的物品进行一版初步的收纳,再对一些排列不科学的物品进行位置调整。
同样得益于自动收纳的出现,新进入背包的物品终于不再把已经收纳好的物品搞得乱七八糟的了。
第四个大版本:
这一版本将背包放在了屏幕的右侧,让玩家选择解密物品和整理背包时,能看到场景,减少割裂感(背包系统由于用了一种非常特殊的方式实现,这一要素进行了不少的改动),并优化了自动收纳的算法,根据背包需要重做了各种物品的碰撞。

300 BUG:2020年12月(20个人月)
《梦神计划:序章》是作为Alpha测试版本发布,前期版本Bug非常多,首先要感谢玩家对我们的容忍和耐心,依靠社群的帮助,我们才得以发现和修复了很多问题。之所以会有这么多问题,一方面是因为人手不足,只有两个人的情况下很难保证测试的质量。但主要原因还是和整个游戏的开发历程息息相关。
11月,我们确定了2021年1月15日作为上线日期,这时后游戏的流程根本都还跑不通,于是我拉着程序说,现在开始和BUG死磕,修完300项BUG,150项优化,这段流程才能算基本通畅。
于是我们拉出了一张Debug表,开始没日没夜地肝。
《梦神》的整个开发过程是非常狂野的,90%以上的功能是蓝图做出来的,只有极少的功能是用C++代码写的(一共才2W+行代码),以至于后期bug非常多而且难以维护,好在AI数量少,否则性能也会出现严重问题。
整个《梦神计划》前期全靠我一个人拿蓝图死磕,策划写蓝图水平吗…上面是程序写的,下面是我写的,大家可以自行对比下。


程序回来,看了下我的蓝图,差不多就下面这感觉

在开发过程中,程序因为家里的事情还时不时要消失一段时间。摆在面前的还有完全没做的存档系统、怪物AI、Boss战,还有各种bug、引擎版本升级、打包、接入steam SDK等等一堆空白功能。
经过程序的深(原)思(地)熟(爆)虑(炸),决定放(放)弃(飞)底(自)层(我),保证开发效率,于是就开始了接下来狂野的节奏,除去少量必须由C++实现的功能,剩下的全部用蓝图来实现,最后就是现在大家见到的《梦神计划:序章》。
游戏刚起步时,程序曾开玩笑说:“我们游戏将来和2077是一个级别的,至少bug量级绝对是同一个水平的!” 没想到一语成谶。
这让我们品控吃了非常多的亏,绝对的反面案例。
我们再持续总结和探索更科学的小团队开发方式,并再接下来的开发中不断尝试。
来源:知乎 www.zhihu.com
作者:吉他果
【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载
此问题还有 2 个回答,查看全部。
延伸阅读:
你认识 Steam 等级最高的人是怎样的?