Horizon is a file monitor designed to maintain snapshots of the files whenever the files within a user-specified directory change. When the user desires, the snapshots can be used to revert the files to their previous versions with in the directory.
The software has been designed to compensate for the lack of save slots in indie games but its applicability is broader than games and may apply generically to different usages.
The source is licensed MIT and can be checked out from:
Credits for the icons goes to flaticons.com.
Horizon has been created in order to create snapshots of save game files for modern games where the saving is handled automatically by the game itself. The purpose thereof, ranges from maintaining terse backups of saves (especially given that lengthy games are a lot of work), through the ability to restore an earlier save whilst still maintaining the current state of the game, and ending with attempting to reverse-engineer game save files.
However, Horizon is designed as a general purpose tool, without any special semantics that would involve games, such that it is perfectly feasible to have Horizon back up snapshots of your work. One interesting application is writing books, or large documents where, for some reason, you would be interested to see and preserve the evolution of your work over time. In such cases, just pointing Horizon at the location of your files will do the trick and Horizon will keep incremental backups of your work.
Note that contrasted to auto-save, which is a a more general feature included in right about every software package, Horizon maintains a history of saves, such that you can go back at any point in time. This is extremely useful also if you create presentations of various works, where it would be interesting to memorize some point within the work or game that you are playing, in order to be able to return back and demonstrate that particular point in time.
Horizon also contains a text editor that might be interesting or useful to use in order to make changes to the snapshots themselves before restoring them.
Rows can be colored in order to set a quick marker and to be able to remember a snapshot that might have been important. If more terse note keeping is necessary, the row can be clicked and the option "Edit Note…" selected in order to assign a note to the selected snapshot.
The option in question can be accessed from the "Settings" menu and then by following "Watchers". When the "Watchers" menu unfolds, the user will be given the option of selecting various file watching criteria that will trigger Horizon to take a snapshot of the current files it is monitoring in the directories configured with the "Manage Folders…" option.
By default, the "LastWrite" and "Attributes" options are selected, which should be sufficient for most programs, but sometimes selecting "Size" will help raise better notifications on file change for various software that handles its files differently.
For instance, the Pacific Drive game handled save-files differently such that "Watchers" and "Manage Folders…" is insufficient to raise a filesystem notification when a save file is updated such that the "Size" flag must be enabled as well in order to correctly take snapshots.
The snapshot delay configurable in "Manage Folders…" when a folder is added, is the time elapsed after a filesystem notification is raised, which, in turn is managed via these flags.
It is also possible to transfer snapshots across the network by using the "Share With" option from the menu after right-clicking a row that is populated by machines that have been scanned from the network. In case other machines on the network are running Horizon, then snapshots can be transferred to those machines by using the "Share With" menu and then selecting the machine from the drop-down menu. All you need to do is to install Horizon on both machines and then you can transfer files back and forth between Horizon instances.
Horizon is essentially an Apple "Time Machine" or a Microsoft NTFS old file versioning system but one that is designed to run in user-space and with a lot of features and options provided to the user.
Horizon is licensed under the MIT license.