VR手游《Hello Mars》工作室创始人分享游戏开发历程

2018-06-21 09:46:53 来源:互联网
0

  大家好,我是MICOSMIC的创始人,罗斌。

  MICOSMIC马上就要一岁了,我们想在这个值得庆祝的时间给大家分享一些过往的开发历程,感谢一直关心我们的朋友们。这次分享的是:

  《HELLO MARS》是2016年在Google Daydream 平台上线的一款VR应用,演示和模拟2030年载人航天器登陆火星的过程。上线后得到玩家广泛认可,成为很多知名平台上的明星产品,甚至登上了2017年谷歌IO大会。至今,在各VR平台上的销量已经接近10W份,可以说是VR产品中的成功之作!

  在分享干货之前,很高兴告诉大家,HELLO MARS已经完成了 IOS 和 Google Play Store的移植,并改名叫HELLO MARS AR。现IOS版本可在APP Store限免下载!

【游侠网】《HelloMars》AR版演示

  没有VR设备的小伙伴也可以在这两个最大的移动端平台体验这款应用了。另外,除了横向移植,我们还增加了AR的体验模块,有支持AR设备的小伙伴可以踊跃尝试!

  《HELLO MARS》是我还在游戏公司打工时利用业余时间研发的一款飞行模拟游戏,在加入创业公司后,我和小伙伴们决定迎合快速发展的VR市场,把这个游戏改编成一个体验型的VR应用,让更多用户可以体验登陆火星。

  我本人是飞行游戏和航天飞行器爱好者,所以也希望这款应用在好看好玩的前提下,具有非常高的专业性和学习价值。大量的前期研究工作是必不可少的。

  我们研究了5驾成功登陆火星的飞行器轨迹,并按照我们所制作的载具特性,通过建造空气动力学模型做了大量的降落模拟,最终得到了科学的飞行数据。

  这些数据在将来的体验中会作为宇航员对话的素材,也保证了在整个降落过程中呈现的视野符合真实情况。

  在制作模型之前,我们在NASA官网下载了大量公开的登陆计划文档,包括载具的外观,功能,工作计划等等。而这些也都被完全还原在我们的产品中。

  为了降低与外包团队的沟通成本,我们在发放外包之前,内部已经完成并且锁定了几乎所有过场动画,载具模型的低精度临时模型,以及活动物件的动画。并且在硬件上做好了性能测试,尽量避免返工浪费。

  我做了40多页的外包文档,并且提供了影片视频作为参考。这些前期工作非常耗费时间,但在整体流程上保证了最终结果符合预期,我们几乎没有发生返工和反复修改的情况,非常顺利的完成了载具模型。

  在火星地表的建模方面,我们也遵循了科学严谨的态度。游戏模拟中选择的登陆点是“Kasei Valles”附近的冲积平原,是几个登陆点备选方案之一。这个地域在官网有高清的地形图。我们把这张图的高度图提取出来,再利用world machine等专业的地形制作工具完成细节的制作,最终得到了游戏中看到的登陆地点模型。

  由于性能问题,我们无法使用PBR渲染,最后游戏中使用的都是自定义光源材质。我们在外包需求中依然按照PBR的流程去创建贴图,但是这些贴图都经过了后期合成和很多自定义的修改来完成最后的效果。我们还制定了一些规范来优化贴图的数量。比如片头出现的飞船需要用到4张光照贴图,我们把这4张贴图放到一张32位贴图的RGBA通道来合并成一张图,再通过材质的管理分配给模型的不同区域。所有模型都按照这个统一的规范制作,就节省了很多贴图资源。

  游戏中的火星背景是一个1:1的真实火星模型,由两部分组成。一个是地表,一个是大气模型。在整个下降过程中,我们根据不同的高度去动态的改大气模型的材质参数,来表现不同高度的大气散射效果。

  特效方面,我们为大部分材质添加了顶点偏移动画来丰富其表现,并为他们指定特殊的渲染队列以减少不符合预期的穿插,比如过场动画和迷你游戏中降落时吹起的烟尘、喷射器的火焰、登陆器穿越大气层时的等离子拖尾等。

  这是我第一次接触音乐音效工作室,非常高兴有机会和专业的Ker Sound Studio合作。Ker Sound Studio是几个外国朋友在上海开设的一家为电影,电视和游戏制作高端音效的工作室。他们在看到我们提供的第一稿演示视频时就对我们的制作内容产生了浓厚的兴趣。

  我们提供的影片是一个完整的游戏体验的模拟视频,从UI界面到最后字幕出现。并且已经提前做好了初步的音效,音乐,和配音。这样音乐工作室就非常清楚我们想要的气氛走向。然后我们又听了很多对方提供的音乐小样,并选出希望使用的某些乐器,元素,或者类似的节奏感觉等等。两周后,对方就给了我们一段可以放在实际游戏中调试的完整音乐,并且非常出色。当第一次在工作室的大屏幕上,听着慷慨激昂的音乐伴随着我们制作的画面播放时,我和小伙伴都被感动到鼻酸。

  《HELLO MARS》虽然是一个小型项目,但里面用到了很多我们自己发明的黑科技。

  这里找几个有趣的点炫耀一下。

  游戏中最复杂的物件是“好奇号火星车”。

  这是一个使用rocker bogie(摇臂转向架)悬挂系统的攀爬车。比普通的攀爬车更复杂的是,为了更好地稳定性,他的车身正上方还有一个横向的吊臂,这根横向的吊臂又被两边的摇臂所驱动。整辆车总共有20多个复杂的轴承结构。

  理清了轴承关系后,我们遇到了一个Unity的物理无法直接解决的轴承关系:“万向传动装置”。这个轴承出现在车身与大臂的连接处。

  这里我们用了两组关节互相约束,去模拟这个效果。

  另外,我们还根据阿克曼转向几何原理,以及火星车的轴距及前后轮位置等数据,设计了载具在转向时各车轮与车体旋转角度之间的关系函数,以保证火星车在转向时的真实性和稳定性。

  因为没有任何实时光和投影,我们的火星车在地面上会显得很飘,而在这么复杂的场景中加上实时投影,显然是一件非常不划算的事情,效果也不会令人满意。于是我们做了一套模拟环境光照的动态贴图,并根据实时的光照方向混合这些贴图序列以实现足以以假乱真的实时软投影效果。

  为了给玩家提供最真实的火星环境,我们还提出了这样的需求:火星的地表材质大致可以分为沙地和岩石,我们希望火星车在碾压沙地的时候能留下让人信服的凹陷(能根据光照方向产生正确的明暗表现),而在岩石上则没有这样的效果。最开始,我们想过使用常规的贴片方法去模拟这样的效果,但是这个想法立刻被我们否定了,无论是不同地面材质交界处连贯的凹陷深度变化,还是对于光照方向正确的解释,都不是这个方案能够做到的。

  经过了很久的思考和尝试,我们最后终于想到了一个完美的方案:

  1.创建一个用于描述车轮运动轨迹的列表,载具每走出一段距离,将每个车轮的Transform 矩阵添加到这个列表中。

  2.每当轨迹列表更新时,遍历整个列表并在每个轨迹点绘制一个凹痕形状的Mesh,在Shader中设置它的颜色为“世界空间下的法线方向”,然后命令一个跟随载具的相机竖向拍摄这些Mesh,经过一些简单的调整后,我们就得到了一张凹陷后的地表法线图。

  3.将这张法线图连同载具世界坐标赋予地表材质,地表材质再根据“岩石还是沙地”决定以怎么样的程度将新的法线贴图覆盖原始法线。

  4.成功修改了地面的法线后,也就能很轻易的根据光照方向控制明暗表现了

  另外,我们还通过类似上述的方法实现了降落模拟环节的“推进器火焰灼烧地面留下黑色痕迹”的效果。

  关于HELLO MARS,暂时跟大家分享这些。

分享到:

APP精彩推荐

相关资讯
热门资讯
下载APP可查看更多精彩资讯