GDC2017游记
前言
今年去参加了GDC,听了一些讲座,顺便逛了逛旧金山。下面将以流水账的形式记录一下这几天的行程。
2月28日
27日是在飞机上度过的,一路从广州睡到旧金山,然后当晚倒时差失败,半夜两点就醒了。28日听了两个讲座,分别是:
- The Future of Rendering in Unity (Presented by Unity Technologies)
- Toward Film-Like Pixel Quality in Real-Time Games (Presented by Amazon Lumberyard)
Unity讲的是他们的新架构,之前的Unity为了拥有可配置性,导致架构太复杂。新的Unity只实现小部分的C++内核,将render pipeline交由引擎使用者自己配置,pipeline使用C#编写。现场放了几个例子,通过一两页的代码灵活展示了多变的渲染需求。
第二个讲座,Film-Like Pixel Quality听起来很酷炫,其实就是Amazon在讲他们的新引擎Lumberyard所采用的Temporal AA,Specular AA和Order-independent Transparency。效果还不错,AA这种东西存在的话可能感觉不到,但是失去了之后就会意识到它的重要性。看得我心里痒痒的,后面也想要尝试一下TAA。。(:з」∠)
下午便没有再听讲座了,去唐人街吃了一家味道还不错的川菜馆,然后一路走到了海边,又沿着海岸线坐电车到了鱼人码头,最后爬坡走到九曲花街。见到九曲花街的那一刻感到莫名的眼熟,这不就是《头脑特工队》里那条堵得水泄不通的街吗。于是我掏出手机对着它咔嚓了半天,但只是我们去的时候,九曲花街没有花。时间又接近傍晚,看向花街是逆光的,因此没拍出效果来。
这一天走了很多路,消耗了大量的体力。我本以为自己可以一觉睡到天亮,结果到了凌晨3点又准时醒了(/”≡_≡)/~┴┴。
3月1日
1号这天展区开放了,但由于这一天讲座也很多,因此我们都没有时间去参观展厅,全天都泡在West Hall听讲座。
- Continuous World Generation in ‘No Man’s Sky’
- Replicating Chaos: Vehicle Replication in ‘Watch Dogs 2’
- Efficient Texture Streaming in ‘Titanfall 2’
- ‘Overwatch’ Gameplay Architecture and Netcode
- Networking Scripted Weapons and Abilities in ‘Overwatch’
- GPU-Based Run-Time Procedural Placement in ‘Horizon: Zero Dawn’
首先是No Man’s Sky,听之前我先上steam上搜了一下这个游戏,发现它被国内玩家亲切地称呼为“无人深坑”。当然游戏口碑这么差不该由程序来背锅,所以参加这个技术讲座的人还是很多的。
演讲人是无人深空的主程,我们一边听一边在群里讨论ta的性别,最后也没有得出结果来。讲座的内容是他们如何用一个随机种子生成整个世界,包括地形、植被、生物、建筑等等。No man sky的资源有2G,其中1.5G是audio,200M是UI,剩下的300M用来生成你看到的星球。具体的技术细节提的不多,然后开始为他们第二天的讲座打广告。第二天的讲座我也去听了, 后面会说到。
(:3[▓▓并没有图▓▓]
下一讲座是看门狗2,讲述车辆同步与客户端先行的。当一辆车转圈行驶的时候,客户端需要根据角速度来预测车子的转向(下图右),不然会看到客户端插值出来的车的行动轨迹是一卡一卡的(下图左)。
另外由于同步的问题,两辆车相撞后的表现是不太科学的。比如两辆车正面相撞,应该是一辆车把另一辆车怼飞,而不是两车互相朝相反方向飞出去了。解决方案是发生碰撞时不再是插值位置,而是由collision接管位置,这样碰撞的表现更真实。
上午的最后一场是讲Texture Streaming的,虽然只是半小时的讲座却很有干货。算法大概是这样的:使用预计算的信息来建立一个list,记录重要和不重要的贴图。每帧轮那个list,加载重要的MIP,卸载不重要的MIP。
假定所有的贴图都是4096的,mipmap为16级。他们将场景分块,插一些探针进去,离线渲染每一个探针处的场景,记录对应材质的对应贴图在探针位置应该使用哪一层mipmap。对于被遮挡的物体,就降低mipmap层级。对所有探针位置取到的mipmap层级做一个max,就得到对应材质对应的MIP在一个场景块里的coverage信息。
这些信息保存在一个文件里,在运行时根据相机所在的场景块,加载这个信息。由信息累加得出每个贴图的每个MIP的coverage,除以贴图大小得到metric,使用这个metric作为重要性排序的依据。
下午是暴雪爸爸的两个讲座,第一个讲述了他们的Entity-Component-System架构和同步与先行机制。第二个讲座讲述他们的高级逻辑编辑器,叫做Statescript,有点像Unreal的Blueprint。他们的英雄都是用这个编辑器做出来的,方便把锅甩给策划。这样的好处还有利于同步状态机、模块化的代码等等。关于守望的讲座我只能介绍到这里,因为时差没倒过来加上没有午休,我在听讲座的时候忍不住睡着了。。。
听完两个讲座我就逃了,去听Horizon: Zero Dawn。说实话PS4买了之后一直在吃灰,因此我是听完之后出来才知道这是今年最瞩目的PS4独占游戏。刚才刷了下二柄,发现它有高达9.2的评分。不过这不重要,即使不知道这些,我已经是跪着听完讲座了。这个游戏,画面实在是太让我喜欢了 (♥ω♥ ) ~♪
他们制作了一个编辑器,让美术定义生物群落的规则,不同的生物群落有不同的自然表现。这些规则决定了场景会拥有什么样的资源,以及资源如何分布。然后游戏内GPU实时计算资源的位置信息,生成点云传递给CPU去放置。这样好处很多,比如能够减少场景的加载时间,并且极大提高美术的工作效率。对比之下让美术手动一棵一棵的摆树种草,想要摆出那样的场景估计需要极大的耐心和爱了。
最最良心的是,他们开完GDC就把PPT放出来了。(づ●─●)づ 戳我戳我
听完讲座我已经下定决定,等我把神海4通关了,就入个Horizon: Zero Dawn玩玩。
(:3[▓▓并没有图▓▓]
3月2日
今天听了4个讲座,下午抽时间逛了逛展区。在那边玩到了一些switch的游戏,不过由于这个博文并没有什么时效性,所以现在说出来已经不能让小伙伴们羡慕了(´・_・`)。
- Classic Game Postmortem: ‘Sid Meier’s Civilization’
- Replay Technology in ‘Overwatch’: Kill Cam, Gameplay, and Highlights
- ‘Ghost Recon Wildlands’: Terrain Tools and Technology
- Building Worlds Using Math(s)
2号上午没有什么想听的讲座,于是我去听了一个策划讲座,演讲者是席德梅尔和Bruce Shelley,讲述文明1的制作历程。比如为什么要叫席德梅尔的文明,为什么是回合制,为什么枪兵可以干死坦克。。。两个老爷子说相声一般天文地理博古通今地狂侃,场下时不时爆出欢乐的笑声,我也跟着“呵呵”,内心却一片茫然,特么的完全听不懂啊。
然后我听了守望先锋在GDC的最后一场程序讲座,讲述的是守望先锋的击杀镜头、全场最佳、录像回放是什么方法。他们使用snapshot+状态delta集合(位置、面向、HP等等)来进行回放。建议在设计网络同步模型时,就考虑到回放。因为玩家很喜欢回放,并且对于项目组而言,回放利于做profile和查bug。
(:3[▓▓并没有图▓▓]
接下来是育碧的Ghost Recon Wildlands地形编辑器讲座,来之前美术先看了他们在youtube上发布的视频,于是拜托我一定要听这一场。讲座是由一个口音感人的程序和一个口音感人的TA联合讲的。目前GDCVault上已经有讲座视频和讲座PPT了。
程序GG讲了地形是由索引贴图来索引各种pbr材质的,美术要定义的不是每个像素所使用的pbr材质,而是地形的材质规则。但是索引贴图是点采样的,为了blend,他们需要采样多次做bilinear,这样很耗,于是他们对地形的顶点做了划分来减少blend的材质数量。最后又使用了virtual texture技术来渲染地形贴图,但是virtual texture的其中一步要把framebuffer读回CPU太耗了,他们用compute shader来计算出缺失的贴图,然后再加载。
TA GG讲了他们的procedural tools,都是由TA经过houdini制作的。通过编辑路点和区域,就能够生成路、电线杆、桥、河流、村庄、植被、石头、音效分布等等。
最后一场是无人深空的讲座,讲述他们生成随机地形的算法。尝试过Minecraft的方法,但是觉得生成的地形太假了。还尝试了DEM数据训练,够真实了但是又毫无特色。最后用的方法是Uber Noise,用一系列噪声公式,组合出来得到真实又足够多变的地形。
3月3日
这一天我只听了2个讲座,因为都能找到PPT所以不再详细说了。
- 4K Checkerboard in ‘Battlefield 1’ and ‘Mass Effect Andromeda’
- Technical Art Techniques of Naughty Dog: Vertex Shaders and Beyond
第一个是寒霜的,使用Checkerboard渲染出4k分辨率的方法。渲染一半的像素,然后用上一帧的数据重建另一半的像素。这里是他们的PPT。
第二个是个TA讲座,讲述神海4的各种vertex shader黑科技。网上有好心人翻译了别人的会议记录。为了听这个讲座我们放弃了去金门公园的计划,而讲座内容也确实很6。但出来之后小伙伴google了一下,在16年SIGGRAPH搜到了几乎一样的讲座,大家集体陷入沉默。。。
(* ̄︿ ̄) …(﹂_﹂)…(ノへ ̄、)(´-ι_-`)(⇀‸↼‶)
剩下的时间我们只来得及看一看夕阳中的金门大桥,吹了吹来自太平洋的风,便结束了这次旧金山之旅。
结尾
最近有几个人问我为啥博客不更新了,因此将这篇拖了两个月的博文发出,以此来证明我还没有放弃治疗。
噗…晚了几个月到底还是发出来了,也是不容易…现在WordPress blog感觉都不多了,直接用github pages也可以
回头试一下。。。
请问哪里可以拿到’Overwatch Gameplay Architecture and Netcode’的ppt?
目前还没有PPT放出,可以看 http://gad.qq.com/article/detail/28682
在互联网的角落里,藏着一些孤独的博客,梦想与热爱,人生苦短。
PS 没头脑与不高兴,好评!我也很喜欢这两个。