How to develop a project in a cloud drive?

I have a large cloud drive (2TB) that works on my computer like an external hard drive, and I’d like to create and develop a project inside of it, rather than on a local drive, for a couple of reasons. First, I have a lot more free space on this cloud drive than on my local drive. In addition to that, I’m a university student, and I’d like to be able to work on my project at home on my PC and at uni on my laptop.

I’ve tried this before but encountered a few problems. First, Unreal had an extremely difficult time packaging the project in a cloud drive. Second, I like modifying engine code to better suit my game’s needs, but only the project files were saved on the cloud drive. The Unreal application was installed locally on both my PC and laptop, so any changes I made to the engine on one device did not transfer over. Lastly, since the engine was different on my PC and laptop, there were a lot of problems with my solution, since the engine didn’t know which engine to load.

Does anyone know the correct way to do this, or if there’s a better alternative I should be considering instead?

Thanks in advance!

Hey @ThatNerdFury!

I don’t mean to be a debbie downer, but you really probably shouldn’t try to do it all ON the cloud drive. The reason for that is the pure amount of data that would have to go back and forth at all times, and having to interact with your local hardware to build on a distant drive. Instead, you should look into setting up your cloud drive to be your Source Control!

Basically, the way it works is the “Prime” version is stored on the cloud. Then, say at Uni, you have your laptop updated to match the cloud version. You change a few things on your laptop version, and you submit all changes at once. You go home, hit update, now on your home PC it is identical.

In essence, as many working copies as you want, ONE true version.
Also build on your beefiest pc, from your beefiest pc. It’s very hardware dependent.

2 Likes

I’ve worked with source control before, but I’m wondering how much of the project should/can I keep there? Should I only be putting source code in the repo, or should I put my uassets and everything else there too? Also, is there a way to make it so that when I edit engine source code on one device, it can transfer to another, since I think I’d only be putting the actual project files into the repo?

This walkthrough for using perforce marks the folders perfectly for what needs to be put into the source! :slight_smile: Anything else, no reason to have identical between workstations.
(Upload all Green, Binaries is optional, do not upload Build, DDC, Intermediate, or Saved)

image

Now as far as I know, there is no way to AUTO-update (say submit from machine 1 to cloud, machine 2 auto-updates). That has to be done on location, but to be honest I’ve only really delved truly deep into Perforce. Others like Git may allow that but I don’t think so. Maybe with some sort of launcher/background app it could.

2 Likes

The answer is: You don’t.

You get another external drive, ideally a SSD, and put your project there.
If you want to back up to some space in the cloud, you either copy the files to the cloud drive (which is slow and inefficient over time,) or you set up some source control host (like git) and push your changes to that host regularly.
To sync back to the other computer, you then pull back the changes from that source control host.
The host can be a public GitHub repository if you don’t have a copyright problem, and don’t plan to store large assets. Else it has to be some paid provider, or perhaps a shell server you lease in the cloud.

Or, and hear me out: Some source control systems can have a “remote” repository, that’s simply another path. Git can do this. So you can initialize the project on a local or USB SSD drive, and then add a git remote thats “Z:\yourproject” where “Z:” is your cloud drive. Then when you “git push” and “git pull” from that, it will get synced. This could probably work reasonably, too, if you can’t find a suitable online host.