先上一张数据图表,来表明在大世界开发中,PCG内容使用远程Build的高效性。

如上图所示,在4台农场机的支撑下,64个地块的Build时间从本地约45m降至了约6分钟。

那么该如何规划一套可以让农场机介入的PCG Build流程?

我们假设PCG文件叫做pcg.hip,地块内所有的pcg内容,都将由该文件通过接收项目场景数据及参数、cook,然后将pcg结果数据输出到指定文件夹,最后这些pcg结果数据会由引擎编辑器工具解析、导入。

首先,是服务机的搭建。

需要针对服务机开发:

1. “地块订单接收/发放”服务,用来从客户机接收Build请求,然后将请求根据农场机的状态,再决定如何分发Build命令。

2. 接收农场的完成Build命令信息,并转达客户机的引擎编辑器。

3. 将一个文件夹作为共享文件夹,供客户机、服务机进行网络磁盘映射,姑且定为H盘。客户机将在该盘上存放场景数据;农场机将在该盘上读取场景数据、Houdini工程(由pcg.hip和hda、dso、dll、缓存数据构成);服务机将在该盘上存放Houdini工程。

其次,对于客户机,在引擎编辑器端开放一个按钮,当框选、锁定了需Build的地块,并点击了该按钮后:

1. 将本次地块Build所需的所有场景数据,包括但不限于高度图、场景描述文件及对应资产、mask图、路网信息,都从项目美术工程内抽出并发往H盘,姑且定为放于 H:\电脑名\地块编号 下。

2. 执行完1后,将每个地块的Build请求发予服务机。

3. 接收到服务机的某地块Build完毕信息后,找到 H:\客户机电脑名\地块编号\export 下的pcg结果数据,引擎编辑器工具对其解析、导入。

最后,对于农场机:

1. 开发一套服务,当服务机给到Build命令,该服务按图索骥,启动Houdini、pcg.hip,更入参数。

2. pcg.hip文件cook完毕,并将结果输出到H:\客户机电脑名\地块编号\export 后,该服务告知服务机已完成Build命令,并关闭Houdini。