AFISync is a simple tool for downloading and distributing Arma 3 mod sets (aka repositories).
- P2P:Uses torrent protocol for file sharing
- Robust: No single point of failure like FTP server. Even if AFISync fails to start mods can still be downloaded with regular torrent client.
- Delta patching: Uses XDelta3 binary delta tool and 7z compression for delta patch generation
- Simple: Activate repository, wait for download to finish and click "Join Server"
- Fast start-up: Starts within few seconds, identical start-up times with any light weight torrent client like qBittorrent.
- No need for servers: See setting up
- Free Software: AFISync is released under MIT license.
- Download pre-configured AFISync from your community web site
- Start AFISync
- Activate repository
- Wait for the download to finish
- Click "Join Server"
- Download AFISync from releases section
- Create torrent files from mod directories. Torrent file should be named in the following way: _.torrent, for example: @cba_1.torrent and have at least one tracker configured. Whenever mod is updated its torrent version number should be incremented.
- configure settings\repositories.json according to the example. key should either contain url to the torrent (http://example.com/@cba_1.torrent) or relative file path "torrents/@cba_1.torrent". In the former case torrents should be hosted on HTTP-server. In the latter case torrents should be distributed with the AFISync package.
- Create zip out of the new configuration of the AFISync and distrubute it.
- Run AFISync mirror on the server: afisync_cmd.exe --mirror . This should seed the torrents.
- Optional updateUrl configuration defines HTTP-adress to the online repositories.json . It can be updated when required.
AFISync requires following: MSVC-14, libTorrent 1.1.1 or later and Boost 1.63.0 or later. For simplicity you may use makeDynamicDeps.bat script inside build-scripts directory which compiles all the required DLL's. libtorrent-rasterbar-1.1.1.7z and boost_1_63_0.7z need to placed inside ..\src directory in order for it to work. Example directory structure:
afisync\afi-sync (files pulled from git)
afisync\src (sources for libraries)
afisync\src\libtorrent-rasterbar-1.1.1.7z
afisync\src\boost_1_63_0.7z
afisync\lib (compiled dll files)
afisync\personal (Developer's AFISync installation)
afisync\zip.exe
afisync\bzip2.dll
After setting up files, build DLL's: build-scripts\makeDynamicDeps.bat
This should copy required DLL files into lib directory and AFISync should now compile inside Qt Creator
For Linux mirror set-up AFISync needs to be compiled first.
- Install dependencies: Boost, Qt and libTorrent (rasterbar) dev-packages: libboost-dev, qtbase5-dev, qtbase5-dev-tools, qtdeclarative5-dev, qt5-default, libtorrent-rasterbar-dev
- Fetch sources:
git clone https://github.com/haikion/afi-sync.git
- Compile AFISync:
qmake && make
- Run mirror: ./AFISync --mirror
Delta patches can be generated with afisync_cmd.exe.
Example: afisync_cmd.exe --old-path D:\mods\@cba --new-path D:\update\@cba --output-path D:\mods\afisync_patches
Patches torrent should be named:afisync_patches_<version>.torrent
, example afisync_patches_1.torrent
deltaUpdates-setting inside repositories.json defines the HTTP url to the patches torrent.