itchio / butler

🎩 Command-line itch.io helper
MIT License
745 stars 52 forks source link

Sharing binary data between builds #186

Open kavika13 opened 5 years ago

kavika13 commented 5 years ago

Is there currently a way with Butler to share common data between different platform builds, so we can just upload the shared game data once, even when supporting 3 OSs?

My company has a game with about 20GB of identical assets that are shared between all platforms (Windows, OSX, Linux), and only about 10MB of executables/dlls that are unique for each OS. Having to upload the whole 20GB 3 times, and then do delta calculations against the shared 20GB 3 times per new build seems a bit excessive, if it can be avoided.

If this is not possible to do, it's not that big a deal. Maybe this isn't that common a use case for games on itch? But it seemed best to ask about this before setting things up incorrectly.

FYI, we are able to do this on Steam w/ the concept of different repos being overlayed on top of each other. A repo each for Windows, Linux, OSX, and Data. Windows users get Windows + Data, etc. We have 4 repos to update then instead of three, and our build system is a tad bit more complicated due to this, but it minimizes the delta calculations for each new build we do, so builds + upload go faster for us.

fasterthanlime commented 5 years ago

It's quite late here, but doing a quick reply just so you're not stuck waiting for hours:

Is there currently a way with Butler to share common data between different platform builds, so we can just upload the shared game data once, even when supporting 3 OSs?

No, there isn't a way to do that currently

FYI, we are able to do this on Steam w/ the concept of different repos being overlayed on top of each other. A repo each for Windows, Linux, OSX, and Data. Windows users get Windows + Data, etc.

Yep, that's how I'm planning on implementing this (no ETA).

There's a few constraints we need to solve first: for example, games can be downloaded via the website (without the client), so, we'd have to generates "already overlaid" archives for download.

The granularity is also wrong: as far as butler is concerned, 1 upload = 1 channel = 1 push target. As far as itch.io/app is concerned, 1 upload = 1 install target. But in truth, install targets can be made of multiple push targets, so for example I'd much rather have:

Than the flat structure we have now. That's not necessarily a simple transition though, so we need to think about a good way to do this. Also, we're taking care of many other issues, so that one is not the highest priority.


TL;DR thanks for asking! Overlays aren't there yet.

kavika13 commented 5 years ago

Thanks for the quite hasty reply :) I wasn't strictly blocked, but now I can go ahead and proceed without any concern about having to redo it any time soon!