[Translation] Assassin’s Creed Unity: London is not built in one day | [译]刺客信条枭雄:伦敦不是一天建成的

上周虚拟主机运营商更换服务器,DNS解析挂掉了,网站就一直不能访问了。昨天把DNS解析搞到DNSPod,现在目测是局地能访问,笔者正挂着VPN写博客。

[su_spacer size=”70″]

今天整理的是GDC2016的一个Presentation,题目是“Assassin’s Creed Syndicate London’ Wasn’t Built in a Day”,来自育碧魁北克工室。主讲者Damien Bastian(下称老D)是魁北克工作室的Team Lead Tools工具主管,做工具链的程序员。稍微八卦一下,老D是法国人,在法国Epitech拿的CS本硕,一个著名的私立软件学院。之后在Eugen Systems当Tool Developer。EugenSystem 是一个小工作室,好像只有50名员工,制作了战争游戏(Wargame)和兵者诡道(R.U.S.E)都是战争RTS游戏。后来老D就跳槽到Ubisoft Quebec了。吐槽一句,不知道Ubisoft Quebec是不是说法语。。。。老D这个口音真是重。。。

育碧魁北克工作室运用程序式生成(Procedural Modelling)技术生成了维多利亚时期的伦敦,总面积5.8平方公里。街道总长76公里,有804个交叉口和7825栋建筑。

1

街道

2

街道生成的功能很像CityEngine中的操作 。美术团队为街道创建了不同尺寸的贴图。路段中使用切片的贴图为,交叉口也制作了不同种类的贴图,同时把交叉口的角度限制在一个范围内,减少工作量。
街道的建筑有着不一样的面宽和进深,建筑可以替换成小道或者过街楼通往内院。建筑对街道有退让和花园,建筑按模数制设计并容易替换。

建筑

单独的一个建筑分成这么几部分:立面(Front),后面(Back),屋顶(Roof),基础(Basement),花园(Garden)和小品(Parkour,比如广告版等)。

3

有些房子还需要能看到室内的部分,还需要在室内安置墙和家具

4

放房子的地方还可以是后院小路或者过街楼

5

立面是按组件模数划分的,包括宽3m的窗,宽0.5m的柱子,宽n*3m的组件,以及商店。用这些组件可以拼出不同长度的房子。两个柱子放在3m窗的两端,如果两端对齐,则总长3m,如果不互相重叠,则总长4m。这样可以拼出6m,7m,9m+等各种开间尺寸。

6

7

每一个组件遵循一定的命名规范,比如RES_House_B_1F_DR_01中,1F是楼层数,DR代表们,后缀01代表变化的种类。

8

每一种房子设计了一个模板,固定的模板可以替换组件以产生变化。比如下图的这个街道里面,就能看出来有几种长得很相似,就是同一个模板不同组件产生的立面。

9

10

有多种立面宽度,高度和转角角度。角度按10度为模数递增。

11

但是模数制存在一个问题,就是不能用模数填充任意尺寸。因此需要一种特殊的可调节的建筑模板来填充带小数的长度。比如两个柱子(2*0.5m)和一个窗户模板(3m)组成的单元长度其实可以使3-4米中的任意一数值,保持单元的比例不变,滑动柱子在窗户单元上的相对位置就可以了。依此,可调节的建筑模板可以填充3-4m,6-8m和9m+的任意尺寸。

12

还有一个问题是街角的房子,街角的房子转角以10度为模数,但是如果街角角度不在这个模数体系上怎么办,就需要把街角房子以10度模数为基准进行正负5度的调整,比如街角64度,就需要一个60度街角的房子扩大4度。这个扩大角度的分配是按照2:1:2进行的,也就是扩大5度的话,转角房子扩大1度,转角房子临近的房子扩大2度。角度调整时屋顶直接变形,因为角度很小所以很难察觉到变化。

13

小品

比如旗杆,横幅,烟囱等等,放置建筑时已经预定义好了一些吸附点,小品可以直接手工放置到吸附点上。这个工具效率很高,同时可以提升城市的丰富性。
还有一个功能是随着建筑生成的“生活槽”(Crowd Life Slots),也就是引擎会自动在这些生活槽上随机放置交谈的路人等等,不过这个功能用的不多。
街道上的小品,比如消防栓,路灯等等,可以按一定放置在人行道上。

14

15

发表评论

电子邮件地址不会被公开。 必填项已用*标注