Giter Site home page Giter Site logo

stgatilov / zipsync Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 0.0 2.21 MB

Second attempt at new differential update tool for TheDarkMod game. This one is strongly based on zip format.

License: Boost Software License 1.0

CMake 0.91% Python 1.55% C++ 94.62% C 2.92%
http differential-updates zip

zipsync's Introduction

zipsync

This library allows to update a set of zips in local directory to match the set of zips stored on remote HTTP servers. In order to reduce amount of data downloaded, zipsync uses multipart byterange requests from HTTP 1.1 to download individual files from remote zip archives. Note that every file inside a zip archive takes contiguous segment of bytes, which makes such partial downloads possible. In order to detect which files must be downloaded, remote set of zips must have a "manifest", storing attributes and BLAKE2 hash of every file. The only steps necessary to share a set of zips by zipsync are 1) creating a manifest and 2) performing some normalization of zips. If several versions of the set are shared, then it is possible to store all versions except one as differentials, reducing storage requirements on server.

The system was originally designed and implemented for TheDarkMod game, but contains no code specific to it. The game is based on Doom 3 engine, which stores all its assets in zips archives. As of now, TDM contains more than 20000 files of total size 3.5 GB. The zipsync library allows to publish frequent beta and developer versions without wasting 3 GB per version both on server storage and download bandwidth.

The library is fully included into TheDarkMod source code repository as subdirectory.

zipsync's People

Contributors

stgatilov avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.