Jump to content


Member Since 20 Apr 2019
Offline Last Active Apr 23 2019 06:46 PM

Topics I've Started

Is Perforce the right choice for my workflow?

20 April 2019 - 08:30 AM


I am trying to wrap my head around Perforce recently, maybe some more experienced users can help me decide whether it's the right tool for my
workflow :)

Our immediate goal is to improve our projects cost scalability (multiple clients) by reusing assets from a single source of truth, however our assets
usually need to live in a folder structure that is maintained by the game engine (Unity3d) for editability and meta file generation.
I already had a look at GIT submodules and deemed them unfit for the task as we are missing control over the folder hierarchy and included content
(there is sparse checkouts though), apart from that contributing back into submodules is a pain because of constant detached head state.

A usual Unity project contains the following folder structure in order to work with the engine:
/Project Settings

Under /Assets lives the content the project uses, its our main concern to reuse Assets (Art & Code) from these Project I call Producers. For sake of
reuse ability I am prepared to put the essential reuse artefacts into one folder e.g. /Assets/__Export if necessary.
An Producer's folder hierarchy below /Assets might look like this:
With the folders except /__Export  possibly existing under /__Export as well to keep things organized there  e.g. /__Export/_3D

So these  Producer projects contain Assets that should be reused by other projects as well which I call Consumers.
A Consumer folder structure below /Assets might look like this:

In theory this should be no problem with Perforce's Workplace View or Stream Mapping, however I have some questions whether the following things
will work at the same time:

A) Can I keep the revision of content in /'REUSED fixed until I manually choose to allow this workplace newer revisions, I saw there is a revision
feature in the form of @1000 in one example but I am confused since Perforce gives Assets individual revisions and some in the same folder might be
at Rev 5 while others are still at Rev 2 which might make it hard to give a common upper limit.

B ) Can I keep some path mappings readonly while other can be contributed to (e.g. write to the Consumer Path and to /Assets/`Reuse1 but not to /
Assets/`Reuse2)? I read about Include and Include+ but it seems to be a stream-only feature? So maybe the actual question is whether Streams are
the way to go and work with these other points...

C) Give collaborators a nice way to check out one Consumer Project Folder Mapping? Streams seem to do exactly that and Workspace Views seem
to be shareable.

D) I can see things get complicated with Perforce when one of our Producer Projects has essential dependencies without the /__Export would not
work but we would like to keep centralized and not dublicated e.g. In a Producer:
Which is basically a Subrepo in Subrepo problem, for this Perforce seems to have no simple solution. Streams in Streams are not possible right? So I
would need to keep track of the dependencies of my Producers manually and include them manually in every Consumer?

E) Will a still have solid merging with all points considered, even without Streams?

Thank you very much to those who have taken the time to read to this point, it took also some time to write this post and I hope you can see my
honest interest in trying to understand Perforce, I would be very glad if you could show me a way so this could work out :)

Kind reagrds,