虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)...
324 3
实名

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

发布于 2023-8-28 14:05:12

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

x
概要

《CropOut》的技术亮点之一就是全部关卡都是随机生成的,本篇文章将重点解析游戏中岛屿的随机生成方式,先列举几个技术关键字:

  • 用Geometry Script构造几何体
  • 为Geometry Script几何体赋材质
  • 依赖倒转
image.png
文件位置:E:/MISC_UE/Cropout示例项目/Plugins/IslandGenerator/Content/BP_IslandGen.uasset
reate Island
岛屿生成的逻辑并不复杂,可以视为Geometry Script应用的一个范例,它包含了几何体的生成和优化,以及针对本项目特点采取的一种巧妙的贴图方式。

几何体生成部分
随机种子
Seed是Random Stream类型并保存在BP_SaveGM中,每一个关卡的随机数都是由同一个Seed通过Random Unit Vector from Stream以及Random Float in Range from Stream等方法获得,这样就能够确保游戏存档再开启以后还原之前的岛屿。

image.png

Step 1
随机生成一些平顶的圆锥体Cone






Step 2
在几何体底部添加一个添加Box


添加Box主要是为了后面做平滑的时候,让斜面有一定弧度,看起来更自然,下面是未添加Box和添加Box的效果对比




Step 3
为几何体整体做平滑处理






Apply Mesh Solidify :对DynamicMesh所有的子物体进行体素化,然后获得外表网格,实际上相当于对所有子物体进行了布尔并集运算,在本例中针对还性能平台和低性能平台使用了设置了不同的精度即体素颗粒的大小。




Set Mesh To Per Vertex Normals :平滑法线

Apply Iterative Smoothing to Mesh :对DynamicMesh进行整体平滑

Apply PNTessellation :对DynamicMesh进行细分,同样针对不同性能的平台使用不同的细分级别



Step 4
用平面切掉底部的没用的部分






Step 5
先定义一个平面将山顶切掉,然后再用平面投影的方式设置几何体的UV






Step 6
释放Compute Mesh以及向GameMode发出岛屿生成完毕的通知





岛屿材质部分
材质文件位置:E:/MISC_UE/Cropout示例项目/Plugins/IslandGenerator/Content/Misc/M_Landscape.uasset

岛屿材质的材质实现使用了简单粗暴而又巧妙的方式,直接使用Absolute World Position坐标系来定义材质。岛屿的上方是草地,下方是土地。并且通过RenderTarget实现了表面动态阴影的效果。

草地和土地的材质



通过RenderTarget实现草地上的动态效果



动态为草地设置颜色
草的颜色是使用Material Parameter Collection定义的,因为草是绿色的,所以它的随机HSV色相也需要在绿色区间。





程序设计的小技巧
IslandGenerator在《CropOut》中以插件形式存在,这就意味着它不应该依赖Game中的任何逻辑,但是在IslandGenerator的逻辑中还要调用Game里的方法,这种情况如何来处理呢?方法很简单,在IslandGenerator定义一个蓝图接口BPI_IslandPlugin,在Game中让需要的类实现这个接口。




这样在IslandGenerator中就只需要调用接口就可以了。


其它
Platform Switch函数
移动平台使用低精度,PC等平台使用高精度。为后续多平台发布打下基础。




版权声明:本文为CSDN博主「开发游戏的老王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ttm2d/article/details/132368851


评分

参与人数 3元素币 +19 活跃度 +11 展开 理由
浮世绘 + 9 + 5 看看东西好不好
guangjingw... + 7 + 5 这就离谱
赵大大 + 3 + 1 强啊

查看全部评分

要好好学习哦
使用道具 <
mobai1517  发表于 2023-8-28 14:30:49  
2#
学习了,谢谢分享、、、
回复 收起回复
使用道具
98755616  发表于 2023-8-28 21:55:34  
3#
每天一早上元素,挖矿撩妹两不误
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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