Hyper Light Drifter

Hyper Light Drifter

View Stats:
Save Game Modifications
1. Find your save game location. It is likely in your user directory's AppData - for instance, something like C:\Users\Account\AppData\Local\HyperLightDrifter
2. Open up the save file in Notepad. The file will be named HyperLight_RecordOfTheDrifter_X.sav.

This is Base-64 encoded data. The underlying format appears to be JSON.

3. Paste the text here : http://www.motobit.com/util/base64-decoder-encoder.asp (alternately, find another base-64 encoder/decoder - this was the first one I found)
4. Decode the data.
5. Change values at will.
6. Re-encode the data.
7. Paste encoded text back in to text file.

Notes :

Be sure to leave in the characters before the JSON list when you re-encode.
Compare your re-encoded values with the previous encoded string. At least the beginning of the file should be the same, and for most people, you should see very few differences.
Be careful with character sets. If, after decoding and re-encoding, you see too many differences, you may be using the wrong character set.

The decoded data will likely start out like the following :

§ôó­:÷ÑÝöo¿wóµëžy{F¼éí½ëxmï}ã^Û—ß^}i§8s§6~]{Î;{V´k¾{ "mapMod": "174=2&>210=2&>", "fireplaceSave": 0.000000, "tutHeal": 0.000000,

Here's a formatted view of my save game's JSON data. Note that the JSON formatter I used converted numbers to integers, so this won't look quite right.

{
"mapMod": "174=2&>210=2&>",
"fireplaceSave": 0,
"tutHeal": 0,
"checkBat": 96.686667,
"scK": "1=13>",
"successfulCollectTimes": 0,
"permaS": "-1505630=2>-1394233=2>",
"cShells": "0+",
"healthKits": "-1937135+",
"scUp": "1+",
"values": "ValuebadassOfficeState=2>ValueaptLight=1>ValuedashHS=5>",
"warp": "4+0+",
"eq00": 1,
"specialUp": 1,
"checkCID": -1378013,
"checkRoom": 62,
"gameName": "GAME",
"badass": 0,
"cSwords": "0+",
"cape": 0,
"rooms": "46+79+47+48+49+50+60+61+68+69+66+64+67+70+65+209+210+211+212+214+213+217+218+215+216+171+172+173+174+175+63+62+",
"enemies": "",
"dateTime": 42460.450422,
"checkY": 1857,
"cCapes": "0+",
"bosses": "",
"checkX": 504,
"playT": 70.198889,
"wellMap": "2+0+",
"hasMap": 1,
"sc": "1+",
"drifterkey": 0,
"cl": "0=91880&115024&124387&111315&133144&152754&-272376&-278035&-1363522&-1372159&&&&&&&&&&&&&-11888972050264014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00&&&&&&&&&&&&&0.00&&-0.00&&&&0.00&50331650&&&-11888972050264008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00&&&&&&&&&&{ }&&0.00&0.00&0.00&0.00&0.00&0.00&0.00&0.00&0.00&0.00&&-11888972050264008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00&&&&&&&&&&1530587461802186700000000000000.00&&&&&&&&&&&&&0.00&&&&&0.00&&undefined&>9=101387&>7=-255100&>13=-1518851&>",
"CH": 0,
"tablet": "",
"events": "-1534214+-1517669+-1994950+-1497664+-1392839+175246+-252694+",
"well": "",
"sword": 0,
"successfulWarpTimes": 1,
"halluc": 1,
"healthUp": 0,
"destruct": "135390=213&36.24&>141920=214&49.73&>141767=214&49.73&>91576=209&25.21&>174563=217&46.76&>-247382=175&58.20&>-277656=172&57.77&>-1785659=214&49.73&>-1785680=214&49.73&>93042=209&25.21&>-1937330=62&66.17&>-1782676=217&46.76&>142056=214&49.73&>-266678=173&55.59&>-1784051=215&48.68&>-1358675=64&52.56&>-243043=175&58.20&>-244626=175&58.20&>-285525=171&53.22&>142102=214&49.73&>145530=214&49.73&>-1365691=63&63.14&>-255797=174&57.50&>171449=217&46.76&>-258802=174&57.50&>-263136=173&55.59&>-1345040=65&21.66&>-281677=171&53.22&>145095=214&49.73&>-253672=174&57.50&>-1786557=213&36.24&>-1376031=62&66.17&>-1374136=62&66.17&>-252206=174&57.50&>-1378737=62&66.17&>147565=214&49.73&>-244561=175&58.20&>132760=213&36.24&>176883=217&46.76&>144890=214&49.73&>134697=213&36.24&>147348=214&49.73&>141417=214&49.73&>145069=214&49.73&>-1343002=65&21.66&>141461=214&49.73&>97740=209&25.21&>146773=214&49.73&>-256695=174&57.50&>-1367865=63&63.14&>-1934025=65&21.66&>-271951=172&57.77&>92727=209&25.21&>142614=214&49.73&>-1366902=63&63.14&>142716=214&49.73&>-1993500=64&52.56&>-1352945=64&52.56&>-272270=172&57.77&>172619=217&46.76&>-1785279=214&49.73&>142004=214&49.73&>-285831=171&53.22&>-1352464=64&52.56&>141587=214&49.73&>94832=209&25.21&>-1372799=62&66.17&>144902=214&49.73&>-1375522=62&66.17&>-278755=172&57.77&>-1342223=65&21.66&>171339=217&46.76&>-1982722=172&57.77&>144911=214&49.73&>-1782599=217&46.76&>-1346881=65&21.66&>-256623=174&57.50&>145253=214&49.73&>-1979001=209&25.21&>172493=217&46.76&>-1785679=214&49.73&>171649=217&46.76&>137115=213&36.24&>132581=213&36.24&>-1782838=217&46.76&>142755=214&49.73&>176052=217&46.76&>132110=213&36.24&>-1352131=64&52.56&>-274723=172&57.77&>-1343807=65&21.66&>-1343360=65&21.66&>141641=214&49.73&>171190=217&46.76&>94506=209&25.21&>177161=217&46.76&>144429=214&49.73&>91885=209&25.21&>-1356823=64&52.56&>135201=213&36.24&>132376=213&36.24&>145977=214&49.73&>-1935517=64&52.56&>-1345835=65&21.66&>146102=214&49.73&>146588=214&49.73&>177981=217&46.76&>135464=213&36.24&>-1362978=63&63.14&>-1937194=62&66.17&>-265894=173&55.59&>174405=217&46.76&>-285175=171&53.22&>-255878=174&57.50&>143460=214&49.73&>-1363461=63&63.14&>-1348112=65&21.66&>-1993476=65&21.66&>172601=217&46.76&>173736=217&46.76&>146970=214&49.73&>-1395458=60&50.50&>-1936754=63&63.14&>171982=217&46.76&>-1346806=65&21.66&>-1362612=63&63.14&>-254568=174&57.50&>-1935062=64&52.56&>-287232=171&53.22&>142923=214&49.73&>143496=214&49.73&>144529=214&49.73&>176300=217&46.76&>-1367892=63&63.14&>145621=214&49.73&>177499=217&46.76&>144213=214&49.73&>-1828684=171&53.22&>-1828020=171&53.22&>177916=217&46.76&>-1785189=214&49.73&>173004=217&46.76&>-1342883=65&21.66&>145625=214&49.73&>144220=214&49.73&>-1786352=213&36.24&>92517=209&25.21&>171410=217&46.76&>-262302=173&55.59&>-1785122=214&49.73&>175144=217&46.76&>-1785413=214&49.73&>-255147=174&57.50&>-1348134=65&21.66&>146975=214&49.73&>145461=214&49.73&>-1354798=64&52.56&>-267954=173&55.59&>137138=213&36.24&>-1398211=60&50.50&>-1786576=213&36.24&>95338=209&25.21&>-257366=174&57.50&>145973=214&49.73&>176929=217&46.76&>176691=217&46.76&>-1345138=65&21.66&>146671=214&49.73&>175910=217&46.76&>-1374951=62&66.17&>174452=217&46.76&>-1936562=63&63.14&>174105=217&46.76&>131012=213&36.24&>176520=217&46.76&>147535=214&49.73&>-1358075=64&52.56&>172477=217&46.76&>-1364434=63&63.14&>-1937286=62&66.17&>131182=213&36.24&>141852=214&49.73&>146001=214&49.73&>132017=213&36.24&>-252142=174&57.50&>-1345966=65&21.66&>172071=217&46.76&>97204=209&25.21&>147373=214&49.73&>-1365444=63&63.14&>145792=214&49.73&>",
"checkHP": 5,
"skill": "4+1+",
"checkAmmo": 0.993237,
"charDeaths": 8,
"gear": 10,
"gearReminderTimes": 0,
"checkStash": 2,
"noSpawn": "",
"cues": "-1383674+-276126+",
"compShell": 0,
"successfulHealTimes": 5,
"gunReminderTimes": 0
}
Last edited by General Woundwort; Mar 31, 2016 @ 4:02am
< >
Showing 1-15 of 26 comments
Lexxx20 Mar 31, 2016 @ 4:03am 
Thanks... I guess? What's other use for it except cheating?
Last edited by Lexxx20; Mar 31, 2016 @ 4:03am
General Woundwort Mar 31, 2016 @ 4:15am 
Aside from cheating, this does show you what values are tracked. I only understand the obvious ones (such as 'charDeaths'). I'm curious about what some of these mean - 'destruct' is very interesting. I may wipe it out to see if destructible crates come back. Or enemies.
And, on top of that, discovering how things work is fun!
Last edited by General Woundwort; Mar 31, 2016 @ 4:16am
MrPengu Mar 31, 2016 @ 9:34am 
This doesnt work for me, the saved game dissapears instead
AuburnRDM Mar 31, 2016 @ 9:41am 
Perhaps that would let you change your avatar into the Kickstarter bonus costume?
MrPengu Mar 31, 2016 @ 9:43am 
I Just wanted to do it so i could move my save file because just copying it over doesnt seem to work
punkonjunk Apr 2, 2016 @ 12:15am 
Excellent work. I'm assuming the initial garbage string is what is required to be correct to port save data. However, I cannot find a character set that reencodes successfully.
Have you compared character count before decoding and after reencoding at all?
Because in all attempts, it's MANY more after.
I've noticed the it will fail over to the last valid save, from the backup folder in the same directory. To truly test it and make sure it's working, delete the backup folder, move it, or rename it.
If it didn't work, there will be NO save data.

This was the case for me after many, many, MANY attempts.

I just want to port my save from work to home.
Ishkabo Apr 2, 2016 @ 4:50am 
I tried to make this work but got nowhere. Anyone else able to make this work? Any tips? I also made the mistake of starting on a different computer than I plan to play mostly on and would like to move the save.
neowindir Apr 2, 2016 @ 5:21am 
Originally posted by Ishkabo:
I tried to make this work but got nowhere. Anyone else able to make this work? Any tips? I also made the mistake of starting on a different computer than I plan to play mostly on and would like to move the save.

This is how I've got it work:
  1. You have to play utill the first autosave so that you get a HyperLight_RecordOfTheDrifter_0.sav in your second computer too.
  2. Copy paste the content of the file to a base64 decoder for example: https://www.base64encode.org
  3. Copy somewhere your unique ID which is the first few characters before the { "mapMod": part.
  4. Do the same thing with your save form your first computer, but from here you will need everything else after the unique ID.
  5. Merge the two strings into one (ID from 2nd computer + everything else from 1st computer).
  6. Encode the merged text back to base64 with for example: https://www.base64encode.org
  7. Overwrite you save file with the text you got this way.
  8. Done.
punkonjunk Apr 2, 2016 @ 11:33am 
Finally got it to work.
A lot of the online converters would not take my 2nd PC save file.
SO I opened two tabs in notepad++
used this info:
http://www.mickgenie.com/encode-or-decode-base64-encoding-with-notepad/
To decode both, slap the string where it goes, and reencode within notepad++ and save-in-place. BAM.
PLAYING AT HOME.
Goodbye, entire weekend.

Thanks for all the the work and help so far, everyone!
General Woundwort Apr 2, 2016 @ 11:53am 
Edit : For most people, the Notepad++ method is the best way to do things! My script below will work for people who don't want to play around. But I highly, highly recommend playing around!


I went back and built a one-line powershell script that will take the first saved game and change the chain dash achievement value to 999 (which will allow you to get the second outfit).

This works for me, but I may be making a faulty assumption : the few save games I've seen all start with 60 characters of non-JSON data. If you have a save game that has more than 60 characters before the JSON data... THIS WILL RUIN THE SAVE GAME.

So.

First : BACK UP YOUR SAVED GAME.

Next, cut-and-paste the entire line into a command prompt.

powershell -Command "$file='%USERPROFILE%\AppData\Local\HyperLightDrifter\HyperLight_RecordOfTheDrifter_0.sav';$origbytes=[System.Convert]::FromBase64String([IO.File]::ReadAllText($file));$text=[System.Text.Encoding]::ASCII.GetString($origbytes[60..($origbytes.length)]);$replace=[System.Text.RegularExpressions.Regex]::Replace($text,'ValuedashHS\=\d+\>','ValuedashHS=999>');$replacebytes=[System.Text.Encoding]::ASCII.GetBytes($replace);$fulloutput=[System.Convert]::ToBase64String($origbytes[0..59]+$replacebytes);[IO.File]::WriteAllText($file,$fulloutput);"


Here's the code you see above, with comments.


$file='%USERPROFILE%\AppData\Local\HyperLightDrifter\HyperLight_RecordOfTheDrifter_0.sav';
<# Set $file to the name of your save game. #>

$origbytes=[System.Convert]::FromBase64String([IO.File]::ReadAllText($file));
<# Read the save game and convert the data from base 64 to a raw byte stream. #>

$text=[System.Text.Encoding]::ASCII.GetString($origbytes[60..($origbytes.length)]);
<# Convert the text starting at position 60. #>

$replace=[System.Text.RegularExpressions.Regex]::Replace($text,'ValuedashHS\=\d+\>','ValuedashHS=999>');
<# Find the 'ValuedashHS' value and set it to 999. #>

$replacebytes=[System.Text.Encoding]::ASCII.GetBytes($replace);
<# Get the byte array with the new ValuedashHS=999 text. #>

$fulloutput=[System.Convert]::ToBase64String($origbytes[0..59]+$replacebytes);
<# Take the first 60 bytes of the original, add the text replacement from the previous line, and convert the whole thing to a base-64 string. #>

[IO.File]::WriteAllText($file,$fulloutput);
<# Write the result out to the original file. #>
Last edited by General Woundwort; Apr 2, 2016 @ 12:08pm
Ishkabo Apr 2, 2016 @ 2:07pm 
Originally posted by neowindir:
Originally posted by Ishkabo:
I tried to make this work but got nowhere. Anyone else able to make this work? Any tips? I also made the mistake of starting on a different computer than I plan to play mostly on and would like to move the save.

This is how I've got it work:
  1. You have to play utill the first autosave so that you get a HyperLight_RecordOfTheDrifter_0.sav in your second computer too.
  2. Copy paste the content of the file to a base64 decoder for example: https://www.base64encode.org
  3. Copy somewhere your unique ID which is the first few characters before the { "mapMod": part.
  4. Do the same thing with your save form your first computer, but from here you will need everything else after the unique ID.
  5. Merge the two strings into one (ID from 2nd computer + everything else from 1st computer).
  6. Encode the merged text back to base64 with for example: https://www.base64encode.org
  7. Overwrite you save file with the text you got this way.
  8. Done.

Thank you for the detailed yet concise post. This is precisely what i did but the game doesn't recognize the save. I will try the notepad+ thing and check back in. I am highly optimistic that I will be able to figure this out now with all the other success stories.
Ishkabo Apr 2, 2016 @ 2:42pm 
Bingo got it. I was trying to do the same thing with Notepad++ but running into the same problems. So I figured the issue was the copy pasting of the strange characters in the key wasn't working so instead I copied the JSON data from my old save to the new native save and then it worked! Same method probably would have done it with the online editors too.

Yay everyone thanks!
Criminon Apr 2, 2016 @ 3:21pm 
When trying to use notepad ++ I get this error: "length of selected text to be decoded is invalid it should be mod 4"

When using the online version, It decrypts propperly, but it ignores the save and uses the backups.

Edit: got it to work. I wasn't highlighting before decrypting.

A good thing to note is that if you add 11+ onto your sCape, it gives you the hardmode cloak. However when equipping it, it disables your ability to change cloaks.
Last edited by Criminon; Apr 2, 2016 @ 3:39pm
Originally posted by Criminon:
A good thing to note is that if you add 11+ onto your sCape, it gives you the hardmode cloak. However when equipping it, it disables your ability to change cloaks.

That's interesting! Also, for some reason, my save game has 'cCape'.

For those looking, to get all of the outfits, try the following settings :

"cShells": "0+1+2+3+4+5+6+7+8+9+10+"
"cSwords": "0+1+2+3+4+5+6+7+8+9+10+"
"cCapes": "0+1+2+3+4+5+6+7+8+9+10+"

Criminon's adding 11+ to all of those and getting a black cloak that you cannot change out of. (I get the same thing.)
XavierEstrago Apr 3, 2016 @ 3:49pm 
Originally posted by General Woundwort:
1. Find your save game location. It is likely in your user directory's AppData - for instance, something like C:\Users\Account\AppData\Local\HyperLightDrifter
2. Open up the save file in Notepad. The file will be named HyperLight_RecordOfTheDrifter_X.sav.

This is Base-64 encoded data. The underlying format appears to be JSON.

3. Paste the text here : http://www.motobit.com/util/base64-decoder-encoder.asp (alternately, find another base-64 encoder/decoder - this was the first one I found)
4. Decode the data.
5. Change values at will.
6. Re-encode the data.
7. Paste encoded text back in to text file.
____


}


None of this is working for me. I'm trying to modify the Dash Challenge♥♥♥♥♥♥to 999 and the save file doesn't show up after I copy over the re-encoded modifying values

https://gyazo.com/19f33abd108f9f5058f49011df089e87

https://gyazo.com/51616f787ccc4554ba1b3a7eb39b05fe
Last edited by XavierEstrago; Apr 3, 2016 @ 3:49pm
< >
Showing 1-15 of 26 comments
Per page: 15 30 50

Date Posted: Mar 31, 2016 @ 4:00am
Posts: 26