From Game Detectives Wiki
Jump to: navigation, search
Active since 2019-4-5
Heartbound poster 1mb.jpg
An ARG created around the game Heartbound.
Type Official
Creator Pirate Software
Discovered 2019-4-5

Main Page > List of Investigations > Heartbound

Heartbound is an ARG created around the game of the same name. The ARG was discovered on April 5th, 2019 which started by finding the trailhead page on any of the pages on Pirate Software's website for the game.

Chapter 1


The first page to Chapter 1 can be found in the bottom-right corner of the About, Cast, and FAQ pages of the site. Clicking on the glitched crack will open the first page titled "Glowbringer".

The translation guide for the glyphs.

On the page, there are 2 sets of guardian glyphs. They translate to:

    This body is an illusion
    This mind is a collective

In the source code, a puzzle can be found. This sets the pattern for pages like this. The source code reads:

<div class="@Party | @....">
    <!-- GsvWzipmvhhVmxilzxsvh -->
<!-- No matter how bright their hearts seem. -->
<!-- Do not trust them. →

This can be split into 2 parts. The first part being the div class, the second being the 2 comments below. The comments don’t seem to relate to anything necessary to solve this part. The div class however is the puzzle. "@Party | @...." is the hint to solving the comment inside. Another word for a party, is a bash. Add @ before bash and you end up with Atbash which is the cipher used on the text in the comment. So throwing GsvWzipmvhhVmxilzxsvh through an atbash decoder will get TheDarknessEncroaches. If you add that phrase onto the end of the URL for this page, you will get this page which will lead players to the next part.


The second page to Chapter 1, “Darksider”, features the same glyphs found in the first, translating them gives the following:

    We are closer to the source now
    Memory is the key to this mind

In the source code for the page, another puzzle can be found, and it reads:

<div class="Signal">
    <!-- *%%$*$%*%*$****$%%%$%%%$***$*$%***$%%%$%$**** -->
<!-- Keep your head down and keep moving. -->
<!-- This is the way it should be. -->

Just like the first page, it can be divided into 2 parts. The div class, containing the puzzle and a hint, and the 2 comments below that don’t offer help for this particular part. Taking a look at the div class, ”Signal”, which is a hint to the two different signal durations found in morse code. Looking at *%%$*$%*%*$****$%%%$%%%$***$*$%***$%%%$%$**** it’s obvious that the standardized characters have been switched, with “*” being a dot, “%” being a dash, and “$” acting as a space between sequences, switching the characters for the standardized ones we get .-- . -.-. .... --- --- ... . -... --- - ...., running that through a morse code decoder you will get WECHOOSEBOTH. Like the first puzzle, adding that to the end of the URL for this page, gets “Guardian”, which leads to the 3rd puzzle.


This page follows the same pattern as the 2 before it.The glyphs translate to:

    This world is our undoing
    This world is our beginning

The source code this time reads:

<div class="13 + 64">
    <!-- ITuyEzylp3ECMxI2MKW5I29lMN -->
<!-- This will never work. -->
<!-- You are making a mistake. -->

As before, the 2 comments below the div don’t help with the puzzle. The hint for the puzzle is "13 + 64", and this is hinting towards using Rot13 and Base64 together. First, applying rot13 to ITuyEzylp3ECMxI2MKW5I29lMN and then putting it through a base64 decoder. The output will be TheFirstOfEveryWord. Once again, if adding that to the end of the URL will lead you to the next page.

The Virtue

“The Virtue”, unlike the other pages, doesn’t feature an image but instead is completely black. This page’s source code reads:

<div class="Have">
    <!-- 22NBK4456824048 -->
    <!--  6*;48†5(7 -->
<!-- Will you listen to me now? →

This time the div class contains 3 puzzles that result in one phrase, ”Have” is the first one and it’s exactly what it says, so the first part of the word is Have, taking a look at the second puzzle, 22NBK4456824048, they can be recognized as MGRS coordinates, which is the geocoordinate standard used by NATO militaries for locating points on Earth, searching them on Google Maps takes you to “Patience”, in French Guiana, “Patience” being the solution to the second puzzle we get the second part of the word, making it HavePatience, the last puzzle 6*;48†5(7, due to the use of “†” it was identified as the Gold-Bug cipher, which was created by Edgar Allan Poe and featured in the short story by the same name, running the encrypted text through a decoder you will get InTheDark, this concludes the set of puzzles making the word HavePatienceInTheDark. Adding that to the end of the current URL will take you to the last page of Chapter 1, “Don’t Hit That Button”.

Don’t Hit That Button

This is the final page for Chapter 1. The source code includes a puzzle again along with 2 more comments:

<div class="25615185 235 3151420914215>
    <!-- 8592 8592 8593 8595 8594 8595 8595 8595 8592 8594 8594 8593 8593 -->
<!-- I had hope for this one. -->
<!-- Time to start again. -->

This time, the hint isn’t as straightforward. The hint is a letter-number cipher and if breaking it up gets 2 5 6 15 18 5 / 23 5 / 3 15 14 20 9 14 21 5. This then decodes into Before we Continue which is a hint for what to do with the next part.

The comment in the div shows some HTML character entities, which when decoded display a sequence of arrows: ← ← ↑ ↓ → ↓ ↓ ↓ ← → → ↑ ↑ .

Chapter 2

See me Say me

The achievement gained after inputting the code in the game.

Using the code given at the end of Chapter 1 mixed with the hint leads players to input the code when first launching the game before pressing the continue button. Once the code has been successfully inputted, a faint laughter will be heard and the player will gain an achievement (steam version only) titled “Laughing Man”. After this happens, all the guardian glyphs that appear ingame will be translated so you can read them, as well as the game dropping a new file into the save directory named SeeMeSayMe.thor.

Save folder location:

Windows: %localappdata%\Heartbound
Linux: ~/.config/Heartbound
Mac: ~/Library/ApplicationSupport/com.piratesoftware.heartbound

Opening this file with a text editor will show a huge string of characters.

The “==” at the end gives it away that it is base64 encoded, but running it through a base64 to text decoder will result in garble text. Instead, a PNG header can be found when looking at the top. With this new info, running the code through a base64 to image decoder (as opposed to text), yields this image:

The image after decryption.

This puzzle is similar to another one made by Jason “Thor” Hall (The game director and founder of Pirate Studios and the person behind this ARG) in 2015, called “Play Rude”. The name of the puzzle itself is a reference to the Playfair Cipher, but this one has a couple of twists, it features 4 tables and the encrypted text is in clusters with repeated letters. Taking a look at the encrypted text, it was found that the letters repeat 4 times at max, this was used to quickly deduce that the number of times a letter repeats was a indication to what table to use out of the 4 available. Because of this, the coded text, NNIII - UUUMMM - SSQQ - VVVVNNNN - YSSSS - QBBB - TIII - TTTLLL - YYXXXX was translated to DI - AN - RF - KL - SU - IE- DN - EC - RE, reading the first letter of each grouping, then the second one or writing the sequence vertically like so:


Will result in the string Darksider Influence, like in Chapter 1, putting this string right at the end of the HeartBound URL will give you a new page, in this case it’s called “Pact”.


This page is the first puzzle page of Chapter 2 and, like Chapter 1, taking a look source code reveals this message:

<!-- Phase 2 - Pact -->
<div class="NotMyName">
   <!-- What HE calls me... -->
<!-- Can you feel it...? -->
<!-- That growing power... -->
<!-- Like static in your veins... -->
<!-- Reach out... -->
<!-- Take it... -->

Here the puzzle consists of ”NotMyName” and What HE calls me…, with a bit of knowledge of the game’s story progression and using a part of the URL, Darksider Influence, as a hint, it was discovered that “HE” refers to a character ingame named Binder and “NotMyName” is The Artifact referencing to itself because the first time the player encounters Dark Lore is when the main character, Lore, first encounters The Artifact. Inputting TheArtifact at the end of the page’s URL will get you the next puzzle, Why are you here, usurper...?.

Why are you here, usurper...?

Looking at the source code for this page, it will read:

<!-- A child... in this prison? -->
<!-- Waking me from my slumber... -->
<div class="Why are you here, usurper...?" -->
    <!-- TheyDancin.png -->

Here the puzzle consists of the mysterious file, TheyDancin.png - the first thing to do is to find it. Having a look at the game’s files turns up with nothing in return, but taking a deeper look at the code it was found that the website’s assets are stored in URLs of similar nature to:

http://www.gopiratesoftware.com/games/Heartbound/assets/images/Artifact_1.png (example from the same page this puzzle is found in)

Following the URL format, this image with drawings of dancing men was found, it was assumed this was text encrypted with the Dancing Men Cipher and the encrypted text was translated to BinderSentMe, adding that to the end of the URL will lead to the “What is it you want then...?” page.

What is it you want then...?

Here, the source code reads:

<!-- You pitiful creature of flesh... -->
<!-- Doing the bidding of an old man... -->
<div class="What is it you want then...?">
    <!-- +4 | +2 | +0 | -2 | -4 -->
    <!-- 18 | 07 | 05 | 02 | 16 -->
    <!-- 19 | 21 | 01 | 20 | 01 -->
    <!-- XX | 10 | 09 | 11 | XX -->

Taking a look at the 5x4, the first line features +’s and -’s, this will be used later to decode it, while the other 3 contain various numbers but none go over 26, making it safe to assume that the numbers are supposed to be translated to letters, but writing them as letters as they are will result in a string of random letters because the numbers are still encrypted, to decrypt them we go back to the first line, +4 | +2 | +0 | -2 | -4, this was used to encrypt the numbers in the respective columns, so by switching the signals from + to - and vice versa you get what you need to decrypt the numbers, -4 | -2 | +0 | +2 | +4, applying this to the respective columns, so 18-4 is 14 and so on will give a new grid:

14 | 05 | 05 | 04 | 20
15 | 19 | 01 | 22 | 05
XX | 08 | 09 | 13 | XX

Rewriting this new grid as letters will result in the text NeedToSaveHim, where “XX” are nothing, adding this to the end of the current URL will result in the page “Who will benefit from this...?”.

Who will benefit from this...?

The source code of this page reads:

<!-- To save him...? -->
<!-- He owns these mistakes... -->

<div class="Who will benefit from this...?">
  <!-- 853396807703048194 -->
  <!-- HearMe.Thor -->

Looking at the number, it can be determined that it is very similar to a Tweet ID from Twitter. Inputting the number into a twitter url reveals this image.

Looking at the image, some white pixels can be seen on the dog's nose. Zooming in shows a pattern of pixels.

The pixels are formed in 8 groups, with every 2 groups having a clear space between another 2 groups. If you count the number of pixels in every 2 groups, you get 23, 9, 12, 12. Using the letter numbers cipher, this gives the output will.

Secondly, looking at the Thor file, if it is put through a spectrometer, then the word Both can be seen.

Putting both words together gives BothWill, and this can be added to the end of the url to give the next puzzle "You will help me first."

You will help me first.

This page's source code reads:

<!-- If that is your true desire... -->
<!-- I will help you... -->

<div class="You will help me first.">
  <!-- ThatGuy + ThatOtherGuy-->
  <!-- XpnwHfZolKvtp -->

ThatGuy and ThatOtherGuy can be appended to get 2 new urls. ThatGuy gives a picture of Binder, while ThatOtherGuy gives a picture of Baron.

Using the vigenere cipher with the key BinderBaron on XpnwHfZolKvtp gives WhatDoYouWish.

This can be appended to give the next puzzle, Do you agree?

Do you agree?

The source code reads:

<!-- To leave this place... -->
<!-- Free me from this prison... -->

<div class="Do you agree...?">
  <!-- Up each step to the Theatre of Pompey. -->

The "Theatre Of Pompey" line is a reference to the place where Julius Caesar was assassinated, which infers that a caesar cipher must be used. However, a normal caesar cipher does not give a reasonable output.

"Up the step" implies that each character must be shifted by a different amount, with the first character being shifted by 1, the 2nd character being shifted by 2, and so on. Doing this gives the output of ContractAccepted. As before, this is appended to get the next puzzle, Strings.


The source code reads:

<!-- The contract has been sealed. -->
<!-- Leave me alone while I prepare. -->
<!-- While I pull the necessary... strings. -->

"pull the necessary... strings" implies an instrument is being played. However, appending "strings.wav" to the usual url will give a 404 error. Instead, by searching through the Heartbound game files, a file called STRINGS.wav can be found.

In it, clear DTMF notes can be heard. Decoding these gives 3 444 2 555 33 3 444 66. Decoding this using a phone keypad cipher gives DIALEDIN.

This can then replace "DARKSIDERINFLUENCE" to give a new url and a new Chapter: Breakdown.

Chapter 3


Here the source code reads:

<!-- Chapter 3 Breakdown -->
<!-- You ruined everything. -->
<!-- Why would you stop me? -->
<div class="12410162315372">

Counting the amount of letters in DHPHBAAJKEPTBGACUKKTKGRFULKDKAGFDLTDSAGJ, tells us that there are 40 characters in it, using this information and dividing 12410162315372 into the biggest possible without passing 40, we get 12 4 10 16 23 15 37 2, now if we take out every letter in the position referenced by the numbers, so 12 will be the 12th letter and so on, we get THECRASH, appending that to the end of the URL will take you to “The Sound Of Silence” puzzle.

The Sound Of Silence

Here the page is completely black and there is no sound, the source code is the following:

<!-- There is still time. -->
<!-- We must pickup the pieces. -->
<!-- Finally end this charade... -->
<div class="Go On">
    <!-- Ride The Wav -->

With nothing to go on, and with the hint being Ride The Wav, it was suspected that it was sound related, remembering how the URLs for stored sound files were formatted, this was found. Upon opening DTMF tones could be heard again, but this time it was in a different sequence, decoding them with a tool or manually through a spectrogram comes up with 1235 1 235 235 2345 134 1345 145 156 1234 134, the presence of numbers that never go over 6 and the groupings led to believe this is Braille, but attempts of decoding this with the normal format,

1 4
2 5
3 6

Didn’t work out, instead we have to use a format like this:

1 2
3 4
5 6

Decoding with this format gives the text PASSTHROUGH, appending that to the URL will take you to the next puzzle, “Into The Abyss”.

Into The Abyss

Here the source code reads:

<!-- There is only one way forward. -->
<!-- Meet at the crossroads. -->
<div class="Bifurcation">
    <!-- Quick Foxes -->
    <!-- Lazy Dogs -->
    <!-- Not a Triffid -->
    <!-- ZMREIMSGNK -->

The div class, Bifurcation and Not a Triffid leads to believe that the cipher used to encrypt the text was a Bifid Cipher, the other part of the source code, Quick Foxes and Lazy Dogs hints towards the pangram, "The quick brown fox jumps over the lazy dog" which was the alphabet key used, throwing ZMREIMSGNK through a Bifid decoder with the alphabet key will result in the deciphered text DIVERGENCE. Switching DIALEDIN with DIVERGENCE in the URL will lead to the first puzzle from Chapter 4, “The Choice”

Chapter 4

The Choice

Here the source code reads:

<!-- Chapter 4 - Divergence -->
<!-- Choose fate. -->
<!-- Control destiny. -->
<!-- The pages lay before you. -->
<div class="Gridlocked">
    <!-- 92 75 73 21 81 17 65 15 64 13 -->
    <!-- 16 94 27 75 96 72 -->
    <!-- 91 11 27 44 94 16 78 43 33 -->
    <!-- 88 36 52 73 25 28 42 75 86 87 34 21 -->           
<div class="On The Path">

This time we have two puzzles. Looking at ”Gridlocked”, the name suggests that there is a grid involved and counting the characters that are present in the string UEZPPXJNCLKMEDMWGFPUYTAQIBXHBCIVIPMOHFBYWSRJWSHNQVGFEODRQKDLUNMCFJZUXIIPGJYACTVVWPGTUSALQH, gets us a total of 90 letters, with these two bits of information we can make a 9x10, like so:

1 2 3 4 5 6 7 8 9
1 U E Z P P X J N C
2 L K M E D M W G F
3 P U Y T A Q I B X
4 H B C I V I P M O
5 H F B Y W S R J W
6 S H N Q V G F E O
7 D R Q K D L U N M
8 C F J Z U X I I P
9 G J Y A C T V V W
10 P G T U S A L Q H

Now using each number, we can determine to what letter they refer to by separating them into coordinates and locating them in the grid, so 92 becomes 9 across and row 2, that will give us F and so on, repeating this for every sequence will give us, FRIENDSHIP for 92 75 73 21 81 17 65 15 64 13, SORROW for 16 94 27 75 96 72, CURIOSITY for 91 11 27 44 94 16 78 43 33 and INDIFFERENCE for 88 36 52 73 25 28 42 75 86 87 34 21, each of these can be append to the end of the current URL.


Friendship takes us to an image that is reminiscent of the Animus area ingame. The source code reads:

<!-- You fool. -->
<!-- This will only end badly. -->


Sorrow takes us to an image that is reminiscent of the Tower area ingame. The source code reads:

<!-- Empty hearts -->
<!-- Empty heads -->
<!-- Run the wheel -->


Curiosity takes us to an image that is reminiscent of the “Fire” area ingame. The source code reads:

<!-- Surrounded by passion. -->
<!-- They're going to hurt you.-->


Indifference takes us to an image that is reminiscent of the “Ice” area ingame. The source code reads:

<!-- Cold and alone. -->
<!-- Can you see their worth now? -->

The "On the Path" puzzle seemed like it required another key, so people instead focused on decoding the darksider glyphs at the end of each ending in the demo. These read:

Animus ending (Friendship): DONOTTRUSTTHEM
Tower ending (Sorrow): GIVEUPGIVEINGIVEOUT
Fire ending (Curiosity): BURNBRIGHTBURNOUT

Combining these strings in the order shown and then appending them to the URL after DIVERGENCE gives a new page, lucky.


This page contains the source code:

<div class="Francis">

Francis suggests that a Baconian cipher should be used, since the creator of the cipher was Francis Bacon. Substituting E for A and G for B, the text translates to "NINETEEN".

This then suggests to do something to the previous text on "On the Path" with relation to 19. Using a Caesar cipher with the key of 19 changes the text to "IWISANEXJXWLMSNBTXBGKMHMTYOWIXKIAVHUEFUBCLGUSFASNAGIEEGLRSMNOYABFYZVVLSNJGAB".

Then, after noticing that the length of the ciphertext and the long concatenated string from before have the same length, it was assumed that a One Time Pad should be used. Finally, using a One Time Pad with a pad of DONOTTRUSTTHEMGIVEUPGIVEINGIVEOUTBURNBRIGHTBURNOUTSOMETIMESWHENYOUWINYOULOSE on the ciphertext gives the result of "FIVEHUNDREDEIGHTYTHREEMILLIONTWOHUNDREDTWENTYONETHOUSANDFOURHUNDREDNINETYSIX", shortened to 583221496.

This number immediately made people think of the keypad in the Tower Ending of the demo. Inputting this code into the keypad would result in the same laugh heard after inputting the arrow code in Chapter 2. After inputting the code, the drawer in the south-east corner is unlocked. When interacting with it, a message appears, stating that a picture of a pirate with a lavender beard is in the drawer.

Appending LAVENDERBEARD to the URL after DIVERGENCE gives the next chapter, Lucky.

A message in the source code reads:

<!-- RING RING -->
<!-- OSCAR -->
<!-- FACE -->
<!-- LOCATION -->
<!-- CHAPTER 6 -->