【彩虹六号:围攻 】使得丰富的“突破”成为可能的破坏系统
深奥的战术游戏的背景下,最新的程序化破坏技术【REALBLAST】!
 
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
进行演讲的是Ubisoft Montreal的Julien L'Heureux
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
破坏系统与游戏性直接连接正是【彩虹六号:围攻】的概念
 
    战斗大部分是在室内展开的。固守的恐怖份子在各处设置路障,强化墙壁,设置陷阱等来防备入侵者。视图侵入的反恐部队使用手榴弹和爆破***(Breach Charge)等各种爆炸物,以及铝热焊,还有大型锤作为“攻城兵器”打破墙壁,破坏路障,执行作战。还有可以用子弹在墙壁上打孔,当作“枪眼”来狙击敌人。这种把细致大胆的破坏物体和游戏要素融合的作品,以前是从来没有的。
 
    成为实现本作深度战术玩法的核心的,不用说就是高度的破坏系统了。在GDC2016上进行的Session【The Art of Destruction in Rainbow Six: Siege】上,详细的揭露了这个秘密。这里介绍一下需要5年开发时间的实时破坏系统【REALBLAST】到底是什么吧。
 
【Tom Clancy’s Rainbow Six Siege - Gameplay Trailer Fall 2015】
 

通过实时分割多边形实现真正的程序化破坏系统

 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
程序化破坏系统的研究开发是2012年开始的
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
首先是玻璃表面破坏原型的制作。
 
    进行本次演讲的是Ubisoft Montreal的技术总监,并担任物理系统程序员的Julien L'Heureux。Julien所属的Ubisoft的技术小组,是独立于各个产品开发,进行特殊研究开发的组织,集合了各个领域的专家。其中特别是破坏系统有专门的程序员小组,用了5年的时间开发了公司内部使用的实时破坏系统【REALBLAST】。
 
    【REALBLAST】的破坏表现包括的解决方案,由Runtime库,3D模型的分割工具,属性编辑器,调试器等组成。最初是在2013年发售的【刺客信条IV:黑旗】中使用。在描绘帆船之间破击战的作品中,在船体的破坏表现上被灵活的利用了。在此后的Ubisoft几个游戏也有使用,继而在本作【彩虹六号:围攻】中,作为游戏的核心要素来使用了。
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
2013年开发的,包括程序化破化系统的原型。和现在的本作一样可以进行各种破坏,但运行负载很大。
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
破坏各种表面,侵入,视线确保,进行攻击这样的游戏配置。
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
实时的进行多边形的剪切,这个处理是在2D上执行的
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
按剪切的的形状切割多边形
 
【彩虹六号:围攻 】要求的水准非常高,首先是游戏性要素,要有正确而可以无限破坏的可能,而且可以强化墙壁和设置路障,通过这些实现了丰富的防卫和攻击战术。为了实现这些,墙壁,路障,地板,活动门等,都需要按结构可以应程序化破坏来构筑系统。
 
    这里最大的重点的是,对玻璃,墙壁,地板等平面的程序化破坏系统。本作除了非常厚的混凝土以外,所有墙壁的任何位置都可以被破坏。正确的表现破坏了的位置也很重要,必须要精细的再现玩家的想法和技术。
 
    实现这些所采用的,是实时的多边形分割的程序化破坏算法。
 
    这个方法是把墙壁作为1个多边形来表现。然后,用显示破坏和范围对2D多边形剪切,再同它来分割3D多边形。把它变成实时的程序化,就是制作破坏后形状的方式了。
 
    这时的剪切形状,也可以根据破坏手段和破坏对象的材质定义样式。铝热法的破坏使用的是四方形的边界线,混凝土破碎的情况,是使用沃罗诺伊图(Voronoi)计算出分割的相撞,玻璃和水泥砖墙等有特点的破坏样式,是通过Texture显示破坏形状来定义的。
 
    因为破坏的位置非常自由,包含多个材质的破坏,以及保持多个图层的构造的墙壁破坏都是很难表现的。问题是会占用大量的内存和处理时间。把这些方法组合起来,就成为了丰富多彩有说服力的”破坏的形式“的表现。
 
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
切割破坏表面的形状可以任意的使用,表现出丰富的破坏模式
 

在大量破坏的负荷下维持60fps的游戏性

 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
通过多边形切断面和Texture的修饰来提升视觉品质
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
配合破坏更行AI的导航网格
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
复杂的破坏需要1帧以上的时间
 
    虽然如此,每次破坏墙壁时帧率大幅降低会破坏游戏体验。需要让这个复杂算法可以一直以60fps运行才行
    
   分割多边形的墙壁多边形的直接更新就可以,实际上为了提高视觉品质,对破坏后的模型由破坏造成的边界部分的修饰,是使用Decal Texture来增加污秽的表现,实现更有说服力的外观。
 
    然后,作为碰撞形状的判定的网格,导航网格,以及声音的反应系统数据也要更新。只要一个墙壁破坏,就要给予游戏中大部分子系统影响,必须更新各种数据,会消耗非常多的处理时间。
    
    具体的数据上,以PS4为标准,创建一个弹孔需要1.1ms(毫秒),破坏一个石头砌成的墙壁需要2.8ms,破坏2层石头+2层木板构成的墙壁需要19.5ms。实际运行时,一次爆炸会破坏多个墙壁,也可能把其他的物理对象卷入破坏,多个爆发同时发生也说不定,无法保证稳定的运行。
 
       本作采用方法是破坏处理的异步化。投掷手雷,爆破炸弹打开开关时,玩家触发爆炸的时候(在实际产生爆炸前)就开始破坏物体对象的处理。。每帧进行少许破坏的模拟。在模拟完成后,执行爆破动画把动态的破坏模拟的结果反映到游戏里。因为这种方式,大规模破坏的情况下按下按钮之后的墙壁破坏还是会有“延迟”的感觉。
 
   把破坏模拟按时间来分割,一小部分使用多线程处理。破坏模拟的个处理分隔为小单位的函数,1帧没有处理完的部分就规划在后面的帧里,这部分是调试非常困难的瓶颈所在。。
 
    【彩虹六号:围攻】通过以上这些方法实现了高品质的破坏表现。这个破坏系统要占用近400M的内存,完全是面向次世代机种的技术。这个效果也是所有玩过本作的人都指导的。看到这种对新技术开发的追求态度,不得不赞扬把精彩的升华了游戏性的Ubisoft。
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
异步预破坏的技术,用户输入确定破坏的时候就开始处理了。
 
GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统-LMLPHP
打洞过于复杂,是在墙壁上进行自我破坏来优化
04-17 14:21