{"id":19478572,"url":"https://github.com/justin-credible/hld-save-transfer","last_synced_at":"2025-09-05T02:15:15.724Z","repository":{"id":66348410,"uuid":"56404557","full_name":"Justin-Credible/hld-save-transfer","owner":"Justin-Credible","description":":video_game: Tool that lets you transfer your save games for Hyper Light Drifter between computers.","archived":false,"fork":false,"pushed_at":"2017-12-22T19:04:54.000Z","size":27,"stargazers_count":10,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T23:23:12.120Z","etag":null,"topics":["game-tool","nodejs","save-editor","typescript"],"latest_commit_sha":null,"homepage":"http://justin-credible.net/2016/04/17/save-transfer-tool-for-hyper-light-drifter/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Justin-Credible.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-16T20:39:22.000Z","updated_at":"2024-11-29T16:52:38.000Z","dependencies_parsed_at":"2023-02-26T23:30:44.910Z","dependency_job_id":null,"html_url":"https://github.com/Justin-Credible/hld-save-transfer","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Justin-Credible%2Fhld-save-transfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Justin-Credible%2Fhld-save-transfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Justin-Credible%2Fhld-save-transfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Justin-Credible%2Fhld-save-transfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Justin-Credible","download_url":"https://codeload.github.com/Justin-Credible/hld-save-transfer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250844213,"owners_count":21496524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-tool","nodejs","save-editor","typescript"],"created_at":"2024-11-10T19:50:35.230Z","updated_at":"2025-04-25T15:30:46.689Z","avatar_url":"https://github.com/Justin-Credible.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Save Transfer Tool for Hyper Light Drifter\n\nThis is a quick command line tool I put together so I could transfer my save game for [Hyper Light Drifter](http://www.heart-machine.com/) between computers.\n\nNormally you can just move save files between computers. Unfortunately, the game uses an encoding scheme prevents copying files by adding a header to the save that is unique to the machine on which it was created.\n\nThis is a simple tool that extracts the save data out of a save file and creates a new save file with the unique header from the machine to be transferred to. This leaves the target save file's unique header intact and therefore allows the save to be used on the other machine.\n\n## Usage\n\nYou need two save files; one from the computer that you want to transfer from (source save), and one from the computer you want to transfer to (target save).\n\nIf you don't have a save on the machine you want to transfer to yet, you can simply start a new game and watch the intro. Once the intro is complete the game should auto-save.\n\nThe save game locations are:\n\n* Windows: `%LocalAppData%\\HyperLightDrifter`\n* Mac: `~/Library/Application Support/com.HeartMachine.HyperLightDrifter/`\n* Linux: `~/.config/HyperLightDrifter` (Ubuntu 16.04)\n\nNext, you'll need [NodeJS](https://nodejs.org) installed. I'm using 4.2.2, but any 4.x version should work.\n\nOnce you have both save files on the same machine, open a terminal/command window, install this tool, and use it to create your new save.\n\nMac \u0026 Linux:\n````\n$ cd /tmp\n$ npm install https://github.com/Justin-Credible/hld-save-transfer\n$ cd node_modules/hld-save-transfer\n$ node ./bin/hld-save-transfer \u003csource\u003e \u003ctarget\u003e \u003coutput\u003e\n````\n\nWindows:\n````\n\u003e C:\n\u003e mkdir C:\\tmp\n\u003e cd C:\\tmp\n\u003e npm install https://github.com/Justin-Credible/hld-save-transfer\n\u003e cd node_modules/hld-save-transfer\n\u003e node ./bin/hld-save-transfer \u003csource\u003e \u003ctarget\u003e \u003coutput\u003e\n````\n\nThree parameters are required, all are file paths. The **source** is the save from the machine that contains the data you want to transfer. **Target** is the save from the machine that you want to transfer to. And **output** is the path to where the newly built save file will be written.\n\nOnce you've created your new save you can copy it to the save location on your target machine and start the game. If everything worked you'll save your save data in the Load Game menu.\n\n## Supported Platforms\n\nI've tested this tool on Windows 10 and Mac OS 10.11.3 (my specific use case was moving my save from my Windows machine to my Mac).\n\nIt has been reported to work on Linux too (when moving from Linux to MacOS).\n\n## Save Format\n\nThe save file format is JSON prepended with a unique header and then Base-64 encoded.\n\nThe tool works like this:\n\n1. Open save with the data to be transferred (source save)\n2. Base-64 Decode the file\n3. Extract the JSON data\n4. Open the save from the machine to be transferred to (target save)\n5. Read the header from the target save\n6. Combine the header and save data to write a new save file (output save)\n\n\n## Making Changes\n\n```\n$ npm install\n# Makes changes to: src/hld-save-transfer.ts\n$ npm run build\n$ npm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustin-credible%2Fhld-save-transfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustin-credible%2Fhld-save-transfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustin-credible%2Fhld-save-transfer/lists"}