Adapting to an existing file system unlike SG's default schema

I am faced with configuring SG to match an existing file system, which does not resemble SG’s out-of-the-box file structure.

I face two major hurdles:

1.) Local file system root varies between users.
We use perforce and do not enforce identical drive & directory names for user clients.
Our existing (non SG) pipeline tools all support this via environment variables.
SG has no way to use an environment variable in a storage root. (seem like a significant oversight)

My thought based on other posts
is that we must insert a special token in config/core/roots.yml such as %GAME_SOURCE%
and modify tk-core and maybe the tk-framework-desktopserver to consume this special token.
Is that sensible or foolish?

2.) Or asset tree is separated by departments, with “department” as a parent of “asset_type”

for example we might have
source/modeling/characters/goblin/… for zbrush and substance files
source/animation/characters/goblin/… for Maya rigs and motion files

the default for SG is asset_type/asset/pipeline_step(department)
while ours is better described as pipeline_step(department)/asset_type/asset/…

It seems as though this will require adding a custom entity for “department” so that it can be added before the asset_type.
Is that sensible or foolish?

I am new to SG so I may be missing some other, superior way to customize it to our file system, if so please let me know.

I think it sort of does:

Not sure how well this works.

There is also a Shotgrid Perforce integration:

1 Like

Thanks for sharing. The documentation implies that environment variables are intended to be an exception rather than the rule.

It states that environment variables can be used in 2 cases:

1.) “If a local storage doesn’t define a path for the operating system you are currently using”

2.) “If you are trying to resolve a file:// URL on a different operating system from the one where where the URL was created”

It goes on to encourage explicitly enforcing an identical root location on all machines ( a non starter for my project)

So it is unclear of an environment variable would simply “always work” in a file system schema. It does not appear to be designed that way.

I must say I am surprised at how baked in the default schema seems to be.
This is frustrating as the toolkit seems entirely reliant on the schema,
I don’t think we can leverage tk unless we can beat the schema into our needs.

You could use tk-config-basic which as far as I know does not rely too much on schema.
Also you could probbaly edit something that would make the system look at a template string instead of a path and therefore prepend the local storage path.

Or make sure that your workspace folder is mapped as a networ drive (windows, not sure what the alternative on Mac/linux is)

What DCC software are you using and wanting ot use with SG?

Thanks for the suggestion. We’re using Maya predominantly though we might want Z brush or substance asset tracking as well.

tk-config-basic seems to mostly work - no obvious crashes , but it is clear that there is some schema operating: it overrides our MAYA_PROJECT env vars with a local schema path. I need to stop that. I guess tk-maya is the place to look.

I don’t think the basic config will work for us. we want to control the file system schema.