游戏开发团队与 NetDrive——流式传输大型资源库
游戏工作室如何用 NetDrive 将 S3 托管的贴图与构建资源库挂载为盘符,避免在本地同步数百 GB 的二进制文件。
一家中型工作室的贴图美术师需要检查一张 4K 法线贴图与上周版本相比效果如何,但共享资源库存放在一个已增长到跨两个项目、超过 3 TB 的 S3 存储桶中。将整个存储桶同步到工作站并不现实,而通过浏览器控制台逐个下载文件又会打断在引擎中实际工作的节奏。NetDrive 会将该存储桶挂载为一个盘符,这样引擎的资源浏览器和美术师的文件资源管理器都会将其视为本地存储,只是恰好从云端流式传输数据。

将资源库挂载为盘符
NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。
- S3 托管的贴图与构建产物以本地驱动器的形式出现——无需完整同步
- 后台上传队列处理大型导出,不会阻塞工作站
- 文件锁定可防止两名美术师同时覆盖同一资源
免费试用。提供终身与订阅方案。
为什么完整同步不适合游戏资源
基于同步的工具必须先将整个文件夹树拉取到本地磁盘,之后其中内容才能使用,这与资源库的实际使用方式不匹配——任何一次工作会话可能只会用到数万个文件中的几个。NetDrive 的按需流式传输避免了这个问题:挂载存储桶后会立即显示完整的目录结构,但只有真正打开某个文件时才会传输它。在 Windows 资源管理器中浏览材质文件夹的贴图美术师,可以立刻看到每一个可预览缩略图的资源,而不必等待长达数小时的初始同步。
这一点对那些让游戏资源库变得庞大的文件尤为重要——未压缩的源贴图、高模雕刻导出文件,以及每个可能达到数 GB 的平台专用构建产物。NetDrive 可调节的本地缓存(100 GB 到 1 TB)能让最近打开过的资源快速重新打开,而无需将整个工作站硬盘都用来保存存储桶的本地副本。

将构建产物与源资源分开存放
一种常见做法是并排挂载两个存储桶——一个用于源美术资源(PSD 文件、雕刻文件、原始音频),另一个用于 CI 流水线在每次自动构建后推送的编译构建产物。两者都以各自独立的盘符出现,因此获取最新夜间构建的 QA 测试人员不必在美术师使用的源文件目录树中翻找。由于每个驱动器都是独立连接的,可以在工作时间为构建产物驱动器设置带宽上限,而不会影响正在使用源资源库工作的美术师。

避免共享资源被覆盖
两名美术师同时编辑同一个绑定或材质文件,是那种很容易无意中发生、事后又难以理清的冲突。NetDrive 的文件锁定——适用于所有文件类型,而不仅是 Office 文档——允许一名美术师在处理文件时将其锁定;其他人打开该文件时会看到它处于只读状态,直到锁定被释放。对于没有针对二进制美术资源专用版本控制流水线的团队来说,仅这一项就能防止最常见的工作丢失情况。

设置共享团队驱动器
- 打开 NetDrive 的驱动器管理器,然后点击 + Add Drive。
- 选择 Amazon S3(或工作室已在使用的其他对象存储),输入访问密钥、密钥和存储桶名称。
- 分配一个盘符——团队内保持一致(例如用
T:表示 “textures”)可让引擎资源路径在不同机器间保持可移植。 - 启用 Team Drive,如果多名工作室成员需要在受管许可下访问,这样凭据和驱动器设置就能发布给整个团队,而不必在每台工作站上手动配置。
导出内容的后台上传
当美术师完成一批处理过的贴图,或 CI 生成了新的构建时,将内容推送回存储桶的过程会在后台进行,而不会阻塞工作站。大型导出会排队并上传,美术师可以继续在引擎中工作,进度会显示在系统托盘中,而不是需要一直保持打开的对话框里。

总结
将资源库挂载为盘符,能把一个数 TB 的 S3 存储桶变成引擎、文件浏览器以及工作站上其他任何工具都能当作普通本地存储来对待的东西——无需定制同步客户端,也无需等待完整下载才能开始工作。关于这套方案所依赖的协作功能,请参阅 NetDrive 中的团队驱动器与共享驱动器 和 NetDrive 中的 Office 文件锁定。
— Jay, NetDrive