TownScaper技术概览
综合文库 769 0
实名

通过了实名认证的内容创造者

发布于 2021-3-29 09:33:01

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 毒游搬运小行家 于 2021-3-29 09:34 编辑

TownScaper技术概览

文/知乎Yene

Hello . 大家好
今天给大家带来的是知乎作者Yene对
TownScaper技术概览

640
知乎Yene

TownScaper是今年6月份上线Steam的建造类游戏,不过它的作者已经在twitter做了一年多的游戏开发日志。结合2019年欧洲独立游戏大会的一场演讲,EPC2018一场演讲,输出一下这个游戏的技术要点。



首先作者从业经验非常令人羡慕,在育碧Division干完后就自己出来单干独立游戏。

640

1波函数坍缩

游戏的核心技术是波函数坍缩,本来是一个利用固定种子和连通性筛选迭代像素最后坍缩到稳定的图像内容的自动生成算法。


将2D算法转为3D算法的基础,就是下面这张Cube的匹配图。


完成理论基础建设后,作者设计的房屋建模。



每个Cube都不是一个完整的房子,所有完整的房子都是用若干个(4xn)模型块拼接而成。


下面是作者完成3D化的波函数坍缩的Demo地址。



2非结构网格

如果你试玩了上面的Demo,会发现完成了生成算法的屋子都是方方正正的矩形布局。作者非常出彩的在六边形布局的基础上扩展了非结构网格生成算法,让房屋的布局摆脱一板一眼的方正布局。


算法的核心,每个菱形的中心和四个顶点的连接向量,统一到一个轴向上,随机给力,再还原到菱形的角度上。


3网格变形

配合非结构网格的方案,每个Cube区块的模型根据当前网格的形状做扭曲。



4沙滩和海浪

生成结束后根据生成轮廓线,再平滑,组合生成沙滩mesh,再外扩成海浪mesh。


5Italian wires

作者开发期心血来潮做了一个类似广场彩旗的细节,在整体风格变得“威尼斯”之后,改成了高空的晾衣绳。


6庭院
在房屋形成的封闭空间里二次进行波函数坍缩计算,这次模型换成庭院围墙组,2D版算法即可。


7Boids

每个鸟落在屋顶的时候一个模型,起飞的时候一个模型,飞行动画是shader写的顶点基于高度的偏移。

鸟群计算用Boids算法。


利用房屋模型外表面法线判定飞行范围和落脚位置。


8植被

灌木利用视错觉而非CG技术制造立体感,关于凹脸错觉看过这种玩具的人就秒懂。

9凹脸错觉

关于凹脸错觉看过这种玩具的人就秒懂。


10环境光

通过分层写RT记录空间信息,偏移采样获得颜色。


11像素风格化
粗化描边:


12Moody Clouds

环形缓慢旋转的天空盒:


13包围盒计算和球面相机

通过已有建筑计算包围六边形,用屏幕中心射线确认相机锚点。


14保存数据

所有数据序列化成编码,本地复制和网络分享功能就完成了。


15总结

26块钱买个技术玩具,不亏。说起WFC国内很早就有人写过相关文章,3D化也不止TownScaper一家,我力不在此,只是和大家推荐一下Oskar这位非常厉害的独立游戏开发者和他独特的技术想象力。国外也有几位在发售前就完成了技术复原的大佬,单说技术讲出来了就没有特别深奥的地方,关键还是创意和技术细节。

- End -




评分

参与人数 1活跃度 +15 展开 理由
注销账号24... + 15 【诚意】很有诚意的内容,获取额外奖励

查看全部评分

本帖被以下画板推荐:

天若有情天亦老, 人间正道是沧桑。
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表