Jump to content

Setting up workflow for game development


Recommended Posts

Hello! 

We are using plastic at Dark Crystal Games for almost two years now and are pretty happy. But I wanted to improve couple of things for my team going into 2020 and I need some advises on that.

TLDR:

How to use cloaking or other config to prevent certain folders from downloading from the cloud into the local repo?

----

Full version

First of all we will need some sort of overview how we use plastic. 

  • We use cloud edition hosted by, well, Codice Software of course
  • We are using fully distributed approach, I assume, when everyone have a branch and we push it all into a cloud. Half of the team uses replication method (so they have local repo) and half of the team only has workspace copy and works with a cloud directly.
  • We create all sorts of things - code, scripts, levels (unity), binary 3d art files (max etc).

So now we face a problem that our working copy is above 25 GB of content (not counting history) while we still do not sync all the file types with plastic. We don't sync sound and music files and also source files of 3d models and textures (those can weight hundreds of megabytes each). We need to use other tools like Dropbox and Mega to sync those sources (we easily have 400 GB of licenced sound assets and only few hundred of megabites of those are used to produce "designed" sfxs which are actually used in the game). 

We want to sync EVERYTHING with plastic and have a full history of it. But then we face the issue that the user must download 500 GB project which is a bit questionable, right?

The structure of the project is something like this

  • UnityProject - this is actuall game (you will get a game build if you build this folder), it only contains final artwork, like .png and .fbx, scripts, levels etc - things the game is made from
  • FMODProject - this is a project for sound middleware of FMOD. It consists from events (text mostly) and "designed" pieces of sound and music. Those things are built in banks and banks are copied into the UnityProject
  • Sound - this is our entire Sound library and it is HUGE
  • Art - this is our entire Art drive which contans PSD and MAX files and it is HUGE too.

So normall user only actually needs UnityProject if he wants let's say do level design and never integrates new assets. While ART folder is only needed to artists and those who integrate MAX files in the form of final FBXs and add those into the game. And there is only one person who works with sound. But at the moment every user is forced to download EVERYTHING.

----

This sounds like something you can solve by cloaking certain repositories or file types, but unfortunetely it does not. Cloaking only affects Update command and to run update when you use replication approach you first need to download a branch (so those 450 GB) and then you will cloack it locally.  This does not solve the problem...

Am I missing something? Perforce has a system for this problem (I think it is called _views_ but correct me if I'm wrong)

Thanks

en_pr.png

Link to comment
Share on other sites

I believe this is what you need: https://www.plasticscm.com/documentation/administration/plastic-scm-version-control-administrator-guide#Chapter17:Transformableworkspaces

 

Although it would be cool to be able to work with only certain parts of the repo just like perforce handles it with their GUI, and to be able to see the repo and the folders/files before downloading them (and selecting which folders/files are going to be downloaded).

Link to comment
Share on other sites

10 hours ago, Kurono said:

I believe this is what you need: https://www.plasticscm.com/documentation/administration/plastic-scm-version-control-administrator-guide#Chapter17:Transformableworkspaces

 

Although it would be cool to be able to work with only certain parts of the repo just like perforce handles it with their GUI, and to be able to see the repo and the folders/files before downloading them (and selecting which folders/files are going to be downloaded).

Hello, thank you!
Remove rules looks like something that may be helpful, but again looks like you need to download everything before applying this rule... so same problem as with cloaking.

Link to comment
Share on other sites

We are in a similar situation. We have chosen to put data into different repositories with names like 'OurGame.UnityProject', 'OurGame.SourceAssets' etc. Then we use the Plastic SCM against the game project, and Gluon against the source assets repo. Gluon allows partial workspaces (choose which folders to sync). We do not use replication & distributed workflows at all, so I don't know how that would fare together with partial workspaces. 

Link to comment
Share on other sites

Hi, it's important to differentiate if you are following:

- Centralized workflow: Your workspace is directly pointing to a central repository. You are not running the Plastic sync operation but the update operation. If you are using Gluon, you can select the files to download. If you are using Plastic GUI, you can use a "cloaked.conf" to avoid downloading file revisions.

- Distributed workflow: Your workspace is pointing to a local repo and then you sync (push/pull) against the central repo. You can use a sync view and this way only sync/replicate the desired branches. You can also use the" nodata" replicas to perform lighter clones.

Regards,

Carlos.

Link to comment
Share on other sites

- Distributed workflow: Your workspace is pointing to a local repo and then you sync (push/pull) against the central repo. You can use a sync view and this way only sync/replicate the desired branches. You can also use the" nodata" replicas to perform lighter clones.

Yeah we use this one. Thank you calbzamwe will try nodata replicas. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...