We’re using perforce as well. Perforce does a delta changes update, so only the files which get changed get synced. It’s not the only option out there, but it works for us.
The best thing you can do is to keep your online depot as minimally small as possible. That means you don’t want to upload the whole entire project, just the files which are necessary for building the project. The general rule of thumb I use is to run a “Clean” on the project in visual studio. It should clear out any generated intermediate files, OBJ files, and binary files. Just make sure to double check this happens correctly.
You’re not going to get around having to copy assets and source code around though. The best advice I can give in this regard is to be smart about your asset file sizes. If you’re creating a texture in game which will occupy 100x100 screen space, there’s no reason to create a 1000x1000 version of it. If your internet connection is super slow and spotty, you might want to look into doing your syncs overnight and planning with your team mates how frequently you’re going to do syncs and what assets/sections of the game each person is going to work on to avoid potential merge conflicts.