最近几年,我经常会在工作之余参与一些小项目的研发和制作。我们的团队成员虽然共同努力,但地理位置却相隔甚远,跨省沟通协作是常态。这样的远程工作模式无疑为项目管理带来了额外的挑战:任务分配、文件管理以及版本更新等问题在非集中式的工作环境中变得更加复杂。
在寻求解决方案的过程中,我尝试了众多工具和软件,其中既有付费的商业产品,也包括免费的开源工具。但必须明确的是,至今为止我尚未找到一套完美的解决方案——我所指的是能像工业流水线一样高效管理项目并确保生产交付的系统化方法。如果我们只讲求手动操作,哪怕是使用像百度网盘这样的工具,也能勉强应付。
先梳理一下需求:
- 因为是异地,所以需要线上可以管理项目。
- 管理系统中可以完成任务创建和分配,以及跟踪各任务的状态以及反馈信息。
- 同样因为异地,需要保证工程文件的同步,版本迭代。
- 项目种类多样,许多属于转包项目,路径和命名规则需要符合甲方要求,不同项目会有不同的规范要求,所以路径和命名要高度可定制化。
- 同样因为项目的不同规范,造成各阶段 publish 的要求各不相同,同样也需要较高的可定制化。
- 尽可能的自动化,从命名到资产和镜头的组装,素材的自动加载,各类设置预设的自动加载。
下面我先简单分析一下目前可以用的工具和可能存在的问题。
专业的项目管理系如 ShotGrid 和 Ftrack 都很强大,基本上提供了完整的解决方案,从项目的任务管理到客户端的 DCC 接口,但是问题也很明显:
- 成本较高。
- 在线托管需要自己单独设置项目存储。
- 文件管理要自己想办法。
- DCC 工具较为简陋无法适用于当前的生产流程。
- 一些需求和定制功能需要专业 TD 二次开发,不适合于普通人。
国产的 CGTeamwork 成本较低,使用门槛也低,但也有一些致命缺陷:
- 文件同步功能太过简陋。
- DCC 接口同样非常简陋,基本没有可用价值。
开源的 Kitsu 成本最低,但缺点与 ShotGrid 和 Ftrack 差不太多,而且还只提供了 Blender 等少数 DCC 的接口。
当然如果不差钱,可以随便挑选一种顺手的,找个第三方团队帮助开发一些功能来补全缺陷。
但对于小团队来说,成本往往是第一位要考虑的事情,毕竟项目也挣不了多少钱啊::(汗)。
下面介绍一下我前段时间使用的方案,整个结构如下图所示

为了满足既要还要的需求,又避免二次开发,因此将各功能拆解,每个功能由现成的方案去实现,保证最低的成本,同时也满足了实际的项目生产。
其中核心的部分是使用了免费的 AYON(OpenPYPE 的升级产品),当然也可以使用之前的 OpenPYPE,它们都是由 Ynput 团队开发的,完全开源和免费。OpenPYPE 可以替代之前如 ShotGrid 和 Ftrack 的本地客户端,也就是各 DCC 的接口,它的优势就是具备完善的定制选项,在没有 TD 的情况下,就可以完成各类项目设置。而且基本覆盖支持了绝大部分的 DCC 工具。
另一个问题是文件管理,虽然拥有了 OpenPYPE 这种强大的工具,但是因为涉及异地办公,文件同步是非常必要的,之前我有经历过使用 Git 和 SVN 进行文件同步和版本管理,但这两个虽然开源免费,可本身并不太适合于传输美术资源,而且也会存在文件同时被人编辑的情况,容易产生文件冲突。最近两年我开始使用 Perforce,它更适合于美术制作人员使用,传输也非常快速,最重要的是可以 checkout 文件来保证团队中其它人员不会去编辑同一文件。Perforce 的免费版可以使用 5 个帐户。
最后项目管理系统可以采用 OpenPYPE 所支持的任何一款,显然为了成本更低,优先考虑使用 Kitsu。
从任务管理系统 Kitsu,到 OpenPYPE 以及 P4 全部选择部署在云端,项目工程文件也采用云端存储。
另外 Kitsu 也实现了在线审片与反馈的可能性,方便甲方直接操作。
基本的工作流程:
-
创建项目配置及目录 - 创建 P4 的项目库及根目录和相关插件、脚本工具、配置文件等。
-
创建任务清单 - 制片及项目管理者,将镜头表等数据录入 Kitsu 并创建对应环节的任务,分配人员。
-
同步任务 - OpenPYPE 中同步 Kitsu 中的任务数据,完成项目的各类定制选项的修改。
-
同步配置及工作区 - 制作人员拉取 P4 文件,映射工作路径。
-
开始制作 - 制作人员通过 OpenPYPE 客户端启动 DCC 获取对应任务并创建工作文件,制作人员开始制作。
-
提交文件 - 制作人员通过 P4 上传提交文件,Kitsu 自动更新任务状态。
-
任务通知下达 - 下游阶段制作人员收到 Kitsu 的任务状态通知拉,从 P4 拉取新文件,开始下一阶段的制作。
其中 OpenPYPE 是可以完成各环节的文件最终提交以及下一环节的组装工作。OpenPYPE 和 Kitsu 的数据是双向同步,当 Kitsu 创建任务及分配任务,OpenPYPE 就会对应收到新的数据,制作人员可以从 OpenPYPE 客户端获取到新的任务。OpenPYPE 客户端发布任务后,Kitsu 也会同时收到相应的信息并自动修改任务状态,通知相关人员下一步的工作。
在之前的文章中已经讲过 Kitsu 的部署,在之后的文章中将会具体讲 AYON 的部署,P4 的部署以及项目的设置。