Version control question

Hi
I’m working on a multiplayer project with someone who is helping me program remotely. We are looking into options for version control and I’m having a very hard time making sense of the options available. It seems like a lot has changed lately too so a lot of googling gives older options.
​​​​​​
We were thinking p4v but I’d like all the files to be in the cloud so I can access them at home and in the studio and have it so my partner can also access everything anytime and anywhere and we don’t have to worry about a personal server going down.
The project is around 6 gigs and it’s just two users.
Does anyone have advice on how to set up some cloud based version control?
Thanks!

I might say something obvious / too simple for what you’re looking for but you can setup a GitHub repository (and pay for it if you need more space than the free account).

Thanks so much for the advice. GitHub could be good but it seems like even the pay accounts only give you a gig and you have to use LFS if you’re going to have files over 50 megs. Or am I wrong? I couldn’t find anything about options to host large repositories. Anyone have experience with this?

For unreal and more than one user, Perforce is a better choice.

Setup a node on DigitalOcean and install P4 on it.

Can access it from anywere.

Perforce Free version is all you need if you only have 2 people.

I’m posting only because recently the game project I worked at my company encountered repository issues. However, I want to preface I’m not a git expert and have minimal git knowledge and use source tree as my main interface. So when I talk about git commands, I’m only talking about them to my level of understanding and not an absolute.

This last week our game hit a 2gb hard cap limit with our bitbucket service using a git-based repository. To resolve this we worked on implementing the Large File System in our current project and this is what I learned in point form.

If you’re going to use git do these and be aware of the downsides.

  • git according to bitbucket starts having degraded performance with repositories 2g and larger
  • git history( I assumed p4 history also) uses up your storage space. The history recording of our project we found out is 500mb for 6 people over a year of work. That’s 500 against our repo limit.
  • Use LFS before you start a project
  • Use LFS on files 5mb+
  • git is built for text revisioning. In this way, git is really good at storing only the changes of the file, and not different iterations of a text file.
  • git is not good a binary revisioning. Git keeps whole copies of a binary revision.( when I refer to binaries I refer to compressed based files, psd, wav, obb, png…etc). This means if I install Googe Play Games 10.1 and then update to 10.2. both set’s of aars/jars will exist in your repository.
  • git doesn’t play well with removing files from the git storage. Doing so from my knowledge requires re-writing history(we were required to do this). History re-writes are not compatible any continue working projects.
  • using LFS on an existing project is a pain as LFS alone doesn’t remove the old files from the repo and puts them into the LFS storage. This requires using tree-filter or use of a java app called BFG.
  • IOS SDK’s such as ad networks can use 200mb, so updates to this stack up and use space very quickly.
  • If you need to delete files permanently( ie an ios SDK your not using because you upgraded), get everyone to save their work. And do the delete of files when no one is working. Once complete everyone will need to re-clone the entire repo.
  • git does updates are stored based on differenced between commits,
  • git LFS feels like a band-aid solution to keep game developers using git.

During the week of running commands that took hours, I did some research into other repo options. So I will champion OptimisitcMonkeys suggestion. Use perforce and run it on a cloud-based service. Here is what I discovered, but as above I’m not an expert and I’m less knowledgeable about perforce.

  • Perforce can handle repo’s around a terabyte or more.
  • perforce has a different model of revision tracking. I believe it’s per file, rather than git’s per set of changes since the last commit.
  • perforce is more designed for large file revisioning
  • Allows more options as to what you’re tracking. Such as only track by the game project folder. This allows artists and audio engineers to have their own root folders and not track each other. Whereas git works with the entire repository as a whole. Though in git you can link repositories to each other. This seems extra work rather than selecting what folders to track
  • perforce offers the obliterate method. This is a permanent file delete from the repository. Using this won’t impact your current developers or require them to reclone. their client will only inform them that the file is not tracked anymore. It’s far more convenient. This also makes it more convenient to update SDK’s and not quickly bloat your storage space.

Since your project is 6gb. I again suggest doing what OptimisticMonkey’s idea and save your self some pain. Sorry, kinda ranting my pain that this week brought, and to save someone else a headache :D. I just want to add. I reallly do enjoy git/sourcetree. I just wouldn’t use it for game development. If your doing a small game and your not going to use a lot of “binaries” git is just fine. If your doing an application git is still fine.

wow thanks so much everyone for the help!
two quick questions:
-On digital ocean, does anyone know what the Transfer part of the droplet is? So the cheapest option says 1TB transfer. Does that mean I could only transfer 1TB of data back and forth per month? Does anyone have any experience with the cheapest option? Is it too slow?

-To be clear - Perforce is not a hosting service as well, right? Do they offer that? We would have to buy some cloud space like digital ocean, install ubuntu server on that and then install the perforce server? Then we install perforce client software on our PCs? I think that’s how it works but just want to make sure!
Thanks again!

Yep - that is how it works. Perforce is free up to like 20 workspaces 5 users or something

hey man, iv’e been using perforce and www.vultr.com
very happy with the service i get. i pay $5/month for a 1vcore, 512MB, 125GB storage. it has 1TB transfer at pretty decent speeds

Awesome thanks everyone for the help.
I got everything up and running. seems like a bit of a learning curve but i think we’ll get there.
-Weirdly all my enumeration blueprints i made are no longer setting now…so all this behavior tree stuff is not working. Pretty weird. Anyone have this happen ever? At first all the BPs with the Enum variables were throwing errors. I just right clicked on the variables and did “refresh.” That got rid of the errors but now it’s just like the engine is ignoring them.

-I made the typemap after i uploaded everything. is there anyway to apply the typemap to everything now? (I didn’t understand the Unreal instructions until after playing around for awhile)
Anyway…thanks again!