我们的世界是复杂的,需要模拟的场景往往也都非常复杂——例如,交通将如何受到一场大型音乐会或体育赛事的影响,这个事件可能需要对数十万独立动态实体进行建模,来代表人或车辆。每个实体都有自己的行为方式,通过建模来定义在模拟世界内的移动和相互互动的反应,这需要比较高的CPU和内存配置。为了将仿真模拟从硬件限制中解放出来,支持很多移动实体的复杂场景,在几周前的2022亚马逊云科技re:Invent全球大会主题演讲上,亚马逊云科技CEO Adam Selipsky发布了SimSpace Weaver。
现在的空间模拟一般只在单一的硬件上运行。如果想模拟更大更复杂的场景,或者是有很多独立实体和动态运动的场景,就需要配备更高配的计算机。仿真开发人员通常被迫在规模和保真度之间做出权衡。而通过SimSpace Weaver,你可以在多个Amazon EC2实例上大规模运行模拟,支持模拟多达一百万以上的独立和动态实体。
当增加模拟的规模或复杂性时,SimSpace Weaver是最佳选择。通过SimSpace Weaver C++ SDK与代码集成,可以更方便地构建模拟,应用程序可以与SimSpace Weaver对接,跟踪模拟实体的全局状态,并实现模拟应用程序之间的实体转移。通过外部客户端连接到模拟,就可以与多个用户实时互动并查看模拟。
SimSpace Weaver如何工作
SimSpace Weaver 可以在多个实例上并行处理空间模拟工作负载,通过指定模拟所需的计算能力以及如何将其分割成分区,在多达10个EC2实例上扩展模拟。SimSpace Weaver负责处理Amazon EC2实例的配置,启动模拟应用程序,并在模拟结束后清理环境。在下面的图片中,你可以看到一个空间区域,在空间上被分割成不同的实例。每一行代表一个实例,该图片中的模拟实例包含10个实例,每个实例处理16个分区。
地图被分割成不同的实例
在处理多个分区时,你不需要担心在分区之间转移实体的复杂问题。无论分区是在同一个Amazon EC2实例,还是在不同的实例中,SimSpace Weaver会处理进行转移的网络和内存管理。SimSpace Weaver本身不是一个模拟器,而是基础设施创建和管理者。在SimSpace Weaver上可以跨实例建立模拟器,有效地将多个实例编织成一个单一的体验。SimSpace Weaver还提供另一个重要功能是调度器。调度器使所有分布式分区以设定的模拟勾选率(10、15或、30赫兹)保持同步,因此模拟的行为就像在一台机器上运行一样。
SimSpace Weaver在美东(俄亥俄州)、美东(北弗吉尼亚州)、美西(俄勒冈州)、亚太(新加坡)、亚太(悉尼)、欧洲(爱尔兰)、欧洲(法兰克福)和欧洲(斯德哥尔摩)区域提供,可以在控制台或通过CLI使用SimSpace Weaver。在控制台中,可以使用一键式样本,来尝试一个简单的模拟例子。这个模拟分四个不同的分区,涉及球形实体,在模拟世界中自由移动,避开彼此和静态物体。下面向导列出使用的主要步骤。
1、下载客户端演示程序:这是一个客户端应用程序,可以用来查看云中运行的模拟。只能使用装有Windows操作系统的电脑来运行;点击亚马逊云科技管理控制台→Amazon SimSpace Weaver,点击 "开始"。
点击 "下载客户端"。
2、启动云中的模拟基础设施:SimSpace Weaver负责部署您所需要的所有基础设施,以运行该模拟。下一步是用Amazon SimSpace Weaver进行模拟,点击 "开始模拟"。
几分钟后,模拟将运行,复制显示的IP和端口。
仿真现在完成了!
3、 查看模拟结果:
最后,从解压的应用程序中运行 "UnrealClient.exe"。在应用程序启动后,将复制的IP和端口粘贴到左下角的文本框中,模拟结果就被显示出来:
最后,我们来看一个SimSpace Weaver的演示例子。