[gdc19]《蜘蛛侠》开发解读(2/4)--工具篇

在这里插入图片描述
在《蜘蛛侠》中,工具对于游戏的品质可以说是愈发重要,说是和runtime相提并论也不过分,也正是工具的出色发挥,能支撑spiderman的优秀品质。
这里主要谈三个方面:

  • houdini流水线来生成场景以及细节
  • lod&光照
  • 编辑器升级历史

houdini流水线

从gr开始,houdini近几年谈的比较多了。
spiderman可以说用的比较重度,覆盖的范围非常的广,可以说主体都覆盖了:

  • 路面,路径,路面细节
  • 建筑,各种装饰
  • 车辆,特效等
  • 一些gameplay事件
    houdini的流水线也比较复杂和长:
    在这里插入图片描述
    这部分的构建可以说比较强大了。

然后在实际应用中有几个要点:

  • 分治:做好模块化,一个区一个区的来生成
  • 简化:尽量保持流程简单,减少耦合,减少策划美术的选项
  • 清晰化:了解到整个自动化生成流程,与传统手摆很不一样,上游改动会影响到下游
  • 打好tag,自动生成的,手摆的,都要有不同的区分

LOD

spiderman里lod一大特色就是3d imposter,一个是保持了ps4该有的品质(billboard式的imposter就太low了),一个是维持了很高的性能
在这里插入图片描述
是这样的一种面数极低的imposter,而且组织方式是以一个zone为单位,内部imposter的贴图达成atlas,然后以类似cubemap的方式来sample(mesh不存uv)
在这里插入图片描述
生成3d imposter mesh的过程就是:

  • 合并能和的面
  • 内部面都去掉
    mesh本身:
  • 没有normal和uv,完全通过position来反算(normal因为都是axis aligned)

光照的probe摆放

光照是IBL是realtime生成的envmap,生成为position通过houdini+美术手摆来完成。

diffuse lighting是offline baked lightgrid(算是一个irradiance volume),hdr格式,在一个volume里,生成大量的256分辨率的cubemap,然后convolve到hdr的颜色+方向;
spiderman里也有time of day, 所以是cook了四套。

关于这个volume based GI,现在知道的方案是:

  • 战神4,蜘蛛侠:offline baked,蜘蛛侠bake多套用于多个时段
  • 荒野大镖客:听开发者说是volume的方式,是不是realtime 生成的不知道
  • division系列:是offline bake surfel信息,然后实时生成GI Volume
    一定程度上可以说是比较成熟的方案了。

编辑器本身

  • 制作蜘蛛侠,内部包括map editor, fx editor, cinematic…一共有12个editor
  • 早先是html5的然后逐步迁移到qt的c++的
  • 使用json做配置文件

中间h5编辑器到c++也展现了其比较务实老练的一面,如果全都推到重来肯定是最方便的。
但是团队是一步步来做的:

  • 始终保持格式兼容
  • 老的h5不再开发,只是做一些debug
  • 逐步迁移

DDL(data definition language)

这是挺有意思的一个点,实际在insomniac,战神中有应用。
和同事也有一些讨论,可能后面专门总结一个文章较好。
简言之,就是定义meta信息(可以使用xml,json,protocal buffer等等),然后生成头文件,编译到项目里。
好处若干,有的是未来跨平台,跨语言,有的是data driven,让策划美术可以使用等等。

reference

  • Tools for ‘Marvel’s Spider-Man’: Editing with Immutable Data
  • Procedurally Crafting Manhattan for ‘Marvel’s Spider-Man’
  • ‘Marvel’s Spider-Man’: A Technical Postmortem
  • ‘Marvel’s Spider-Man’: Procedural Lighting Tools
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值