云来山更佳,云去山如画,山因云晦明,云共山高下,欢迎来到我的博客,这里便是山云汇雾之处~

《怪谈》开发记录 01

记录 PG7GO 111℃ 0评论

暂时就那你来当封面吧,嘿嘿嘿

 

这大抵是一个以中国90年代背景的互动叙事类游戏,主要还是偏故事一点

当然在没有实际内容前这些都是瞎想

前记

起源

假定你是一个手脚敏捷的小男孩,身后有一只壮硕的大狗在追你。你跑到楼梯口,这时应该上楼梯还是下楼梯?

“我觉得应该上楼,如果下楼的话,大狗可能和你跑得一样快。上楼的话,大狗庞大的身躯将成为劣势。不错,跑上楼你会比较吃力,但是大狗会更感到吃力”

— 《黑客与画家(Hackers and Painters: Big Ideas from the Computer Age)》

如同这个例子所示,对于大公司来说,他们就像大狗,在玩法游戏性,开发模式上探索的开销往往是吃不住的,而我们这种小独立游戏创作者就像小男孩,可以尽情尝试,因为我们失败得起,相比大公司,我们失败并不会损失太多。这种类型的游戏我也是第一次尝试,充满了好奇与期待,一切都是陌生的,所以这也算我的一个探索之路

 

《怪谈》最早的想法来源,是在《该村》做崩之后,暗暗叹息一个游戏的故事是多么的重要

当时的想法是做一个2D的,但是由于种种原因,被搁置了

在《Deliverance》弃坑后,从中学到了很多经验,例如:3D游戏工作量比2D小多了,画面惊艳、代入感还贼强

之后,在一天夜里,和原故事作者苏苏打完游戏,百无聊赖之际,聊出了《怪谈》系列的第一个游戏的设计

准备阶段

最早做的是可行性探索,摸一摸技术上的坑,踩一踩

  • 人物建模(次时代模型)
  • 服装建模(次时代模型)
  • 场景建模(次时代模型)
  • 服装动态模拟(引擎+插件)
  • 人物面部动画(对话,神态)
  • 美术设计(靠我强大的朋友们)
  • 剧本(靠我强大的朋友们)
  • 编程(这个没问题)

捣鼓了一波后,就让苏苏开动笔了,在漫长的等待后,拿到了第一版的故事。接下来,在黑手群了拉到了朋友们,虽然大家都是外行,但是依旧很热情地帮忙。

着笔

初期故事是很短的,对一个游戏来说当然是不够的

于是又是在一个夜里,找到了白告,两人一起商讨剧情,扩展出了一系列的设定,基本上把后期的内容给定下来了。再之后,花了一个晚上,把故事大纲给定下来了。白告则是换着笔法在细写在剧情(我见过最硬核的码字作者,只用手机的笔画输入)

大纲一定,感觉还像那么一回事儿,虽然不是很吸引人,但是说不定做出来很棒呢?

(这里就不放大纲了,免得剧透了游戏剧情)

 

2019年10月

第一配角建模&定妆

可能是10月最激动人心的时候吧

 

角色参考图(来源见水印,侵删)

根据参考图的建模

试着找到90年代的发型风格

最终的定妆照

定妆照出来后,大家都坐不住了,有人开始称其“老婆”,连苏苏都心动了,开始考虑为其修改剧情(果然是颜值可以逆天改命吗?),我们内心善良的主角风头都被这个妹子抢走完了,变得无人问津起来

头发难题
很快,当大家都沉迷于该角色美色之中时,我发现了第一个问题,就是头发的点、面数实在是太多了。角色本体的点数大概是2万个,而头发的点数是40万个……什么概念呢?就相当于头发一出现,就在屏幕里多了20个角色,大大增加了渲染的负担。

于是我找到了负责场景建模方面的学习建模一个月的范同学,让他去解决头发问题。

我们的头发模型可能是做CG用的,全是一根根的,看起来非常真实,于是范同学决定用手拔

拔了约莫一个上午后……

 

晚上,又继续拔,不过这个时候意外出现了

果然……在现在的工业化生产时代,传统的手工劳作的效率是非常落后的,于是我们开始寻找新的技术方案

一天后,我们的范同学突然宣告,头发已经拔好了,我们都惊讶他是否用了某种高科技辅助

范同学暗暗骂道,“这个后面的那一坨头发最离谱,那一坨中间还有一大堆头发,外面根本看不到,我把它删成了空心的窝窝头”

拔完后看起来差别不大,并最重要的是顶点数已经到了10万以下了

还没等我们缓过神来,很快就迎来了下一个难题……

头发难题2

正当信心满满导入unity时,发现头发导进去竟然长这样??

无比美丽的秀发变成了条状的面条,这是无论如何都不能忍受的。然而在我调尽各种shader,参数后依然没有把我心中的效果给做出来,甚至还去asset store上去买了个头发shader,但是结果依然不尽人意,啊啊啊,我都已经抓狂了,范同学也唉声连连,表示无可奈何

被逼无奈的我,决定从源头找问题,unity的漫反射贴图往往都是一个,而我们这个有两个贴图,一个是漫反射,一个是透明通道,然而unity用的是argb,就是说把透明通道直接加到漫反射贴图上。我开始想的是用PS把两张图合成一张,但是又想到有些参数不是那么好控制,于是决定自己写shader(多亏上个暑假学过一点图形学知识,接触过shader),但是发现有个更好用的东西,那就是shader graph,这不就是连连看吗?

大概就是随便连了下,随意修改了些参数

突然就有了种飘逸的感觉,get√

头发物理效果

这个开始做的时候是真的没有头绪,之前也没有接触过,我第一个想法居然是用布料模拟来做,然后弄了半天发现弄不出来,想了想,要不就算了吧,反正这头发也不长。但是一想到其他游戏都实现了,我实现不了的话,多少有些挫败感。于是开始了我最拿手的—资料收集。google翻遍全网的资料,大概了解到如下几种方法:

  1. 类似布料的柔体物理模拟(一般是引擎自带的功能,u3d我就不去折腾了)
  2. 做动画的时候把头发动画一并加上(这个确实是好办法,做出来的效果也比较逼真(连续放着动画的话),但是想到我这个点和面数,做帧动画的话导出体积肯定非常大)
  3. 用骨骼动画/动态骨骼模拟(这个算是比较理想的了,貌似王者荣耀也是用的这种方案?性能消耗也蛮低的,但是不知道效果好不好)
  4. 其他方法来生成的头发可以有物理效果(NVIDIA的海飞丝技术Hairwork什么的,还是不去折腾了,我这头发挺好看的)

最后我去试了第三条,原计划如果失败就去用第二条。之后又去下载了Maya2019,大概看了下基础教学视频,加上以前有3dmax基础,于是上手挺快的,直接去学了骨骼、IK和蒙皮。之后就试着做了下:

往刘海上加了4根骨骼

加上很短的循环步行动画的效果(耳朵,嘴,眼睛还没贴贴图上去)

不得不说,效果还真不错。这里插一句,感觉西西(这个配角的名字)变鬼的时候,就可以直接把贴图删了,绝对像鬼 φ(>ω<*)

十月总结

走了非常多的弯路,踩了很多人物、衣物、动画上的坑,大概摸索出一条正确的路了。接下来的计划是先完成场景建模,不知道11月能不能搞定,主要场景还是小镇和山,不过都已经找到了相关的素材,但是还是得手动改很多东西。

还有3天半期考试,虽然我还不知道老师都讲了些什么内容(课差不多都逃了),但是我一点都不慌,能过的!奥利给!!!

 

2019年11月

半期考试杀我,眨眼功夫过去了半个月,期间还帮了一个中国美术学院的小姐姐做毕设花了不少时间(她的那个游戏还蛮有创意的)

山景-父亲的坟

参考图

我心目中的样子大概是这样的:荒野,高高的杂草,依稀的树木,浓雾,远山,坟头,大概插着几个香

游戏里的效果

自我感觉挺满意的,算是游戏里第一个场景吧,之后肯定还得改,目前烧的香、纸钱、以及粒子特效都还没做…

 

研究了下Unity HDRP的一些后处理,同时补了些摄影知识,感觉应该能做出非常好看的效果

西西的衣服制作

花了一个晚上的时间,贴图什么的计划以后再加,先把模型解决了,对于我这种初学者来说,效果已经很满意了

大概查了一下资料,长裙也比较符合那个时代背景,也还算不丑(这种裙子被称为Peasant skirt,译为农妇裙,或宽摆裙)

重点:衣服的布料模拟动画

我相信这里绝对是大多数做此类游戏都会遇到的坑

 

对于角色的衣服动画大概分了三种

第一种,直接给人物穿衣服然后做蒙皮绑定,之后加上骨骼动画:

这种是最最普遍的办法,也是各类游戏用得最多最多的(图上的拉伸是因为裙子中间那部分的细节不够,以及蒙皮不够均衡,导致失真拉伸)

但是遇到裙子这类衣服时就会变成弟弟,你看,这特么还是裙子吗?变成喇叭裤了都

 

当然,这里可以拓扑一下,然后再重新绘制一下蒙皮权重,会看起来自然一些,但是依然会感觉特别劣质

 

 

第二种,加上人物动画,在动画物理引擎里烘焙后,然后导入游戏里:

特点是仿真程度MAX,效果最好,但是体积会比较大,通常做CG时用

此类动画一般是导出的abc格式(alembic),Unity官方的ADAM项目,有非常逼真的布料模拟和人物动画,实际上就是用的alembic动画

alembic动画在UE里支持挺好的,但是在Unity(2019.2)里需要导入package,并且有很多限制

上图的这个演示图是我将almbic通过序列转成fbx动画后导入unity的,效果还蛮棒的

但是容易在动画切换中出现“失真”感,比如说移动中突然停下来,这个时候衣服该这样动?理论上应该按照惯性继续往前一段距离,然后回摆,但是无论是动画切换或者过渡都无法实现这个效果,因为这类动画是之前就烘焙好了的,除非再单独烘焙个急停的动画,但是也不知道什么时候急停,所以不仅工作量巨大,而且效果不一定好,所以一般用在CG或者过场动画这种高度可控的场景

 

第三种,使用游戏物理引擎来动态实现布料模拟:

特点是方便,而且拥有比较真实的效果,虽然效果是肯定比不上第二种的,但是动态性极强,基本上任意动画都可以,任意状态的切换过渡,并且支持与环境结合,比如环境里面的风什么的,做出身临其境的感觉

 

大幅度动作过渡也比较自然(这里穿模是因为没有做腿部碰撞,因为我游戏里不会出现这种大幅度动作)

当然缺点也很明显,这个是需要使用CPU性能来进行计算的,并且也比较依赖游戏引擎

简单来说,游戏引擎中对布料的模拟,通常采用基于物理方法的质点-弹簧模型(Mass-Spring Model),大概就是用粒子来模拟一些物理效果,然后粒子绑定一定的蒙皮权重,做一个蒙皮动画的形式

(用之前那个做头发动态效果的绑骨骼来做也可以,不过只能做小短裙,对于这种长裙来说还是不适合(缺乏横向约束))

 

弄清和解决这些问题,翻遍了资料,大概用了一个周时间,我特么眼睛都要瞎了,差点放弃做长裙

踩了不少坑,布料碰撞模拟动画,衣服绑定到人物骨骼上,动画播放根结点不匹配,实时渲染动画穿模,混合形状动画的平滑过渡,人物动画与衣服动画匹配,动画间帧率不同的匹配,蒙皮权重不同裙子动画变形,一整套流程用了6个建模软件交替导入和操作,5种文件格式的互相转换和加工,这可能就是大多数游戏不会给人物穿长裙的原因

在物理引擎的渲染上也试过了多种方案,比如用全物理带褶皱的裙子,全物理的圆环状的套子,带蒙皮动画加部分物理的裙子,最后还是第三种效果最好,就是上面演示图的样子(一共做了6个版本,总共修改过70多个模型,吐血),这里提示一点,为了性能的考虑,模型精度不要太高(上图裙子从4000多个点,通过几个版本改动,改到了400多个点,最后用了大概200多个粒子)

配音与口型动画
video

降了非常多的比特率,终于压到了20M的视频,感谢素一同学帮忙配音

这个东西看似非常复杂,实际上现有的解决方案有很多。我这里是用的动态语音识别,文字识别匹配的话,对中文不是很友好(很早前github有个中文拼音的词库,不过我用了下好像不行,就没有去深究了),当然,如果要更好的效果的话,还是动捕吧

十一月总结

上面那个“坟头吟诗”演示可以说是总结了这两个月的工作了,呼~原以为我是程序,结果还是把美术工作都做完了

看着游戏角色从建模,到走路,再到能说话,就像看着自己的孩子长大一样开心。这下总算是有了讲故事的基础了,后期的工作会相对比较枯燥,但是难度并不是那么大了,基本上坑已经解决一半了。不得不说,骨骼动画+衣服布料物理模拟+头部动画,单实现一个非常简单,3个加起来,难度高了许多倍。这几天肝得有点多了,下个月进度稍微放缓点吧。

 

2019年12月

插曲:研究了一下……全息?

(基于POV技术的伪全息,手机拍不出效果,要人眼看)

经常被学校老师约谈,都是希望参加各种比赛项目,要不是去做AR就是去做VR,实际上我对AR、VR都不是很感兴趣,更喜欢全息技术一点,感觉这才是最贴近未来的方向,一旦技术成熟并普及化,AR、VR哪儿还有市场

正好之前有个方案,就直接在QQ上找团队老师,讲了一下我构思的人机交互式裸眼POV全息系统课题

  • 效果:出现一个3D全息虚拟角色,会面朝用户,并能进行对话和交流
  • 使用场景:商业展示、商业宣传、智能答疑
  • 硬件:全息投影POV设备+信息处理终端(树莓派)+外接模块(广角摄像头、扬声器、麦克风、网卡、电源)
  • 软件:数据传输WIfi/串口通信,UnityLWRP的渲染管线,次表面反射渲染皮肤,机器人ai接口(联网),语音转文字(讯飞),文字转语音(微软),语音转口型,情感识别(词法分析、语义分析器),口型表情渲染,动画渲染

老师听后也蛮感兴趣的,一边说硬件可以全报销,一边帮我联系身边的学长学姐们,希望能提供一些建议什么的。不过我琢磨着软件上问题倒是不大,关键还是硬件方面我太不熟悉了,这样搞下去心里也没有底……学长学姐也没帮上太多忙,不是戏谑地说这个东西太大了,就是对这方面一概不知…

好吧,那我还是先买设备吧。在逛遍淘宝后,基本上所有的店家都是不支持你二次开发的,他们不提供任何一个接口,我大概也猜到了,不过这构不成难题,不给我接口,那我就抓包吧,然后逆向分析,总能得出你的通信协议规则吧?想了一下,只要能实时显示,到时候再写个专门的适配程序就OK,只是不确定性能跟得上不…客服大抵也不懂技术,问一些参数方面的内容也是回答技术没给。想了想,先买个试试,不行抓紧时间退了。

设备到了之后,显示效果还蛮好的,就算是白天或者开灯,依旧能看清楚。但是略有失望的地方是,店家显然隐藏了太多不利的信息,比如说,所有格式都得转成专门的dat文件,一个普通的mp4文件,转码后体积大了不止10倍。用于操作设备的软件也是满满的bug,逆向之后,原本想优化一下他的转码算法,结果发现,所有内容都写在了一个类里,看到后面就不想看了……

“总之,还是解决问题吧”,我想,我开始了一系列的测试,但是发现网卡速率只有1MB/s,可是我流媒体24帧就算压缩后再转码体积每秒也有5MB,这可咋整?店家说的可以连接电脑来传输,开始我以为是能进行串口通讯,结果才知道,是把内存卡拔下来,插电脑上,把文件拷进去,再插回机器(好想打客服)。

“既然问题出现在硬件上,那就从硬件上解决吧”,我摇摇头,这可太难了。客服那边一点信息也不愿意多透露,我从他们给的说明书上,大概发现了一些线索,因为说明书截图的桌面上有一个“STM32H7单片机开发教程.pdf”,于是去找到了一些STM32H7单片机相关的东西,我开始想的是换个网卡,但是后来我感觉这个想法很危险,因为程序是已经烧录进单片机了的,如果换网卡,会不会出问题?我自己对单片机不是很了解,问了一下学校懂的同学,发现他们也不懂……想了下还是不动设备了,就这样退回去吧。

第一步就在硬件上卡死了,我直接放弃了这个课题,老师很惋惜,说要不然帮我再联系一下其他懂这方面的同学?我说算了,免得时间拖太久退不了货了。实际上我想的是其他同学应该解决不了这个问题,除非自己手动做一个这种设备,可惜我们学校应该没有这种人才。

十二月总结

本月并没用太多时间来开发,还在调整山上的场景,怎么摆放,都有种浓浓的廉价感,看起来完全不像一个追求画面的游戏。不过我也在想,这游戏主要还是着重于剧情上,场景真的那么重要吗?我是应该继续做后面的内容?还是把这个场景调整得更完美一些?

另外做了一段有峭壁的山路,对面有一个小的瀑布,然后又开始想,这个场景够真实吗?农村山上哪儿有这玩意儿?

怎么感觉这么丑,像极了CS1.6

目前来看,最大的问题依旧是剧情方面,还得改改改!

 

2020年1月

一月总结

这月主要还是对剧情大纲进行改动,预计下个月可以开始写剧本了。

开发的兴趣在本月基本上是耗尽了,不过游戏什么的也玩腻了,也不知道干什么,放假中的我就像被抽调了灵魂一样,懒洋洋地什么都不想做,是冬天的缘故吗?也不想出门,与亲戚聚在一起也找不到什么有意思的来玩,看起电影来只感觉很累,偶尔翻翻书,但也看不了多久。

 

2020年2月

为什么本月进展这么大?这要从一只蝙蝠说起……

本月主要解决场景问题。

先来几张糊得不行的动图,流量慎点,共25M
制作HDRP渲染管线的人物贴图

最早的时候,只有一张漫反射贴图,可以说是完全没有用上HDRP管线渲染的内容。记得当我同学看过我的人物渲染效果后,摇摇头说人物做得就跟i社的游戏一样,油腻得发光……这时候我才意识到单参数控制各种材质属性是不行的,还是得用贴图。

之前一直在写剧情大纲也没时间弄,这下大纲终于写完了,这虽然不是一个太追求画面的游戏,不过动动手就能提高画质还是可以尝试一下的。去翻了一下官方的HDRP文档……好吧,怎么感觉一头雾水呢?还是去翻翻社区论坛吧。学习了一段时间后,大概掌握了一些技巧,便开始了尝试。

我这里是没有使用细节贴图,所以是一张纯白色的图代替,右下角是材质球预览效果

全身材质修改后的效果(弱光环境,可能有点暗):

这里我顺手把头发材质也改过了,之前用的shader graph去混合漫反射和透明贴图,这下我在PS里只留下了透明通道,漫反射颜色直接在材质里使用纯色(我估计原头发也是用xgen做的面片划分头发丝,如果是这样的话,就可以只留下透明贴图)

之后的话,人物衣服也打算重新做了,之前那个裙子的物理效果太耗CPU了,还得想办法改进。

主角家的建模

开局一张图……说实话,我一开始完全不知道该用什么方式去建模这个房屋,如果按照我以前用3dmax的经验,肯定就是拉墙然后挤压出来,想起我以前建的比例丑得变形的建筑,我决定换个业内的方法。在了解到业内方法是花几万块去请个建模师或者外包后,我选择了放弃 (;へ:)。

好吧,还没有完全放弃呢。想了一下,既然我已经知道了整个建模流程,只是对流程中的各种操作都不熟悉,那么我分别找对给个流程熟悉的人来做,最后合并起来不就行了吗?

说做就做,我马上找到了学土木工程的同学帮忙,他最擅长的就是房屋结构与CAD出图。在语音交流讨论之后,他把我本子上的那张图,转成了下面的这张图

当然,这是修改过几版之后的最终图了

你可能想不到的是,CAD还可以将2D的设计图,转为3D的模型图

还能自动帮你盖房顶

我的天,这功能也太强了吧。

但是我试着在maya里面打开模型,发现全部是一块块的面,法线的正反面还挺随机的,想了想,还是得重新建模。

于是又找到了学习建模一个月的范同学。这次把需求降低了,只建墙体,不建内饰和门窗。我提供了贴图和房顶的模型。

有内味了,很像CS1.6的鬼子进村的地图

为什么会这么丑呢?因为我们还没把HDRP的功力发挥出来,剩下的就是贴图的工作了,模型这样就已经OK了

房屋材质

如果把Mask贴图、Normal贴图加上的话,渲染效果会提高60%,基本上能达到正常游戏的画面水平。但是在我研究Unity官方的死者之书项目和枫丹白露项目后,发现都用到了HDRP的Layered Lit,这是一个什么东西呢?一个可以通过LayerMask贴图或者节点颜色来分层渲染的材质,可以使一个物体的材质表面混合多张贴图,以此可以消除贴图的重复性,看起来更自然。

原本做的时候遇到了一些麻烦,国内没有搜到相关内容,国外也找不到教程,后来摸索一阵后,算是入门了。

有点像小学生的蜡笔涂色

渲染效果:

蹲厕我也是直接涂的,没有用任何贴图,只是两层的漫反射颜色不一样

请原谅这不羁的线条,我实在是用不来Maya(这里涂了三层,实际上只用了两层)

当然,如果能直接把贴图给做出来,那肯定是最好的办法,效果也会好得多。如果不想涂,也可以直接用LayerMask混合贴图来做简单的混合效果。

 

加上装饰、光、后处理后的效果

场景搭建

在2月中旬的时候,把主角屋子放场景里试了下,并没有很多违和感,但是当玩家用第一人称去走动时,视野就会有种狭窄的感觉。去查了一下资料,大概是说的第一人称游戏的比例都不能按照真实世界比例来,而是有所改变,这个需要结合视角的FOV来确定。

之后我又把房子改了比例,人物等着重做,改玩家比例后,NPC显得太矮了。

整个场景我也是想重做,虽然之前做场景花了不少功夫,有点不舍,于是我留了个备份,然后重新做,正好那个瀑布也很违和。

对着之前去拍的图片,按着比例重新设计整个地图,一边还得考虑剧情长度,光照方向。

花了大概有半个月,每天早上到晚上,算是肝完了。主要工作还是设计、找模型或者自己建模、改LOD、改贴图、放场景,调材质。

 

 

 

三组实拍参考与游戏设计

 

啦啦啦,一些场景截图

二月总结

本月算是没那么鸽了,场景方面取得了不小的进展,下一步计划是继续写剧本的对话,有时间的话,继续完善场景。

三月起,学校开始上网课了,虽然不会很忙,但是我一定要在毕业前完成这款游戏啊啊啊啊啊啊啊啊!

 

后续记录

《怪谈》开发记录 02

 

 


PG7GO , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:《怪谈》开发记录 01
喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址