[siggraph14]《命运》的装备系统

[siggraph14]《命运》的装备系统_第1张图片
siggraph14, by bungie, 分享者是娜姐(Natalya Tatarchuk)和主3D美术shiek wang,一个华人。

sum
[siggraph14]《命运》的装备系统_第2张图片
这里讲了装备系统(gear system),《命运》是面向两代主机的游戏,其装备复杂度和量是mmo级别的,如何灵活的去组合,最大限度的去重用制作量很大的装备并在不同机能平台上面达到良好的性能,bungie给出了非常有实践意义的分享。

技术目标
开篇bungie说了一个技术目标,非常喜欢这种思路的清晰。

  • 海量的装备
  • 可控的内存消耗
  • 强大可扩展的pipeline
  • 更多的共享,小的硬盘和下载包
    做mmo的人对这些点可以说是非常熟悉的挑战了。

装备级别的组合
一般我们做游戏的时候(大部分网游),是以一个比较粗的粒度来组合,头部+上衣+裤子等来组合成一个人。
bungie这里是连头盔这种都是组合出来的。
[siggraph14]《命运》的装备系统_第3张图片

它是先分成 gear type:头部,armor,武器和ships(坐骑?)
然后每个type会分成一个个小部件(gear slot),如上图那样可以组合。

Gear slot geometry
gear type(比如头部)下面的小部件是gear slot(比如头盔上的眼镜),这些组合是美术离线组合的,玩家选择的粒度是gear type的级别,实时情况下不能自己定义slot级别(虽然理论上可以,但是这样一做很多下面的技术就不好起作用了)
offline部分有这几件事情,通过offline工具来做:

  • 选择是否要skinning,美术选择了是的话,pipeline会自动做好相应的工作
  • 自动的lod,美术会设定是用于ps4还是ps3,然后lod工具会做好各个级别lod的工作
    • 之前bungie有分享过关于lod的技术:http://www.gdcvault.com/play/1014343/Automated-Level-of-Detail-Generation
    • 它可以把一组geometry,通过lod,merge到一起,并且处理好skinning问题
    • 高低lod之间共享vertex buffer,index buffer会有不同
      • 这个没有放在实时去做,一个是比较费时间,一个是只有index buffer不同,多了一些东西出来没什么问题

gears slot texture
贴图的合并,为了降低drawcall,bungie会做贴图的合并工作。
[siggraph14]《命运》的装备系统_第4张图片

  • 离线:
    • 会计算一个bit texture描述贴图如何合并在一起(但是不是真的合并)
    • 把geometry的uv根据新的合并贴图做一个矫正
  • 实时
    • 在load阶段会根据bit texture做贴图合并
    • 这里不离线做的原因主要是做了的话,就无法重用了
      做合并的时候,会考虑到material不同的shader type,不能合并的就不做。
      另外console上对于贴图的读写操作都非常的灵活,也是能高效的这么做的一个重要原因

换色

bungie这里做的相对简单,使用的灰色贴图,然后上色的办法来做:

  • 科幻题材,装备什么的走单色简洁路线,使得这些较简单的换色也就够了
  • 换色的算法,采用photoshop里的blend算法,也提供了较好的灵活性
    除了换色,还有detail texture和decal来增加丰富度。

渲染模型
在ppt后面还有lighting&material的技术部分,这里其实在之前已经讲过了,可以看这里的笔记。
http://blog.csdn.net/toughbro/article/details/13095361

你可能感兴趣的:(游戏开发,渲染,装备系统)