mountaingoose 2026-04-20 14:56
Very clean aesthetic. I have to admit I'm struggling to understand how to go about solving the puzzles, but I'm also very tired! I'll give this another go after another coffee :)
Foon → Ludum Dare Explorer → LD59 → Signal Cipher
By shiiro-10psi
| Category | Rank | Score | Count | |
|---|---|---|---|---|
| Overall | 670 | 3.18 | 21 | |
| Fun | 632 | 3.02 | 21 | |
| Innovation | 382 | 3.44 | 21 | |
| Theme | 445 | 3.71 | 21 |
Very clean aesthetic. I have to admit I'm struggling to understand how to go about solving the puzzles, but I'm also very tired! I'll give this another go after another coffee :)
Very cool project! The style looks well polished and appealing. The sound design also draws you in right away. Providing note sheets is a really great idea. I would love to see that more often in puzzle games!
Capture d’écran 2026-04-27 à 02.02.01.png
we hate you
and also we are not sure if there is a mistake or we are just too tired to finish the puzzle
finished.png
I have finally conquered the beast. Through a mix of translation, python scripting, and brute forcing I managed to get all the words as well as the 'post velocity noise' pattern. I'll put the python script I used below; maybe it'll help others ;)
The way I used the script is by first manually calculating the shift value from the first word, then plugging those into 'cur_shift'. Then I put all the unsolved words into 'word_list' and ran the script. It prints out possible answers showing which direction it shifted the cipher and noise pattern. 'left-to-right' starts from index 0 of cur_shift, and moves along the ciphered word from left to right. 'right-to-left' starts from index 1 of cur_shift, and moves along the cur_shift values.
```
cur_shift = [0, 0, 0, 0, 0, 0] max_num = 122 # z in ascii min_num = 97 # a in ascii
word_list = [] for to_shift in word_list: # Print the original print(f"Original: {to_shift}") start_pos = 0 end_pos = 0
print("left-to-right") while start_pos < 3: shift_pos = start_pos arr_pos = 0 cur_word = "_" * shift_pos while shift_pos < len(to_shift): temp_num = ord(to_shift[shift_pos]) # Shift w array temp_num += cur_shift[arr_pos] while temp_num > max_num: dif = temp_num - max_num - 1 temp_num = min_num + dif cur_word += chr(temp_num)
#Increment shift_pos +=1 arr_pos += 1 start_pos += 1 # whats the word print(f" {cur_word}")
print("right-to-left") while end_pos < 3: # Don't need to check full 6 sub end_pos += 1 shift_end = len(to_shift) - end_pos shift_pos = 0 arr_pos = end_pos cur_word = "" while shift_pos < shift_end: temp_num = ord(to_shift[shift_pos]) # Shift w array temp_num += cur_shift[arr_pos] while temp_num > max_num: dif = temp_num - max_num - 1 temp_num = min_num + dif cur_word += chr(temp_num)
#Increment shift_pos +=1 arr_pos += 1 cur_word += "_" * end_pos start_pos += 1 # whats the word print(f" {cur_word}")
# Break between words print() ```
Definitely not the best or most thorough helper script, but it worked for me™️
Apart from the helper script, I must say I really did enjoy this game. I love challenging 'ciphers' like this, even though they definitely aren't for everyone. If anything, a good/convenient addition may be an interactable noise tool in game. One where the user could input values for the noise, and they could enter/move the ciphered text along noise positions to check for words/parts of words. That could 'gamify' it a bit.
example.png
A couple minor inconveniences: - The game resolution is too large to view in my browser. - For the notes tabs, CTRL-C / CTRL-V / CTRL-F doesn't work, and arrow keys go to the previous note - The word list is not sorted alphabetically. This makes it hard to verify if a word is possible.
For the game itself, it would probably be good to start with a simpler setup to introduce the concepts, like two pairs of words with the same shift patterns instead of 8 words. And you could also add some interactible UI like for each answer word have 6 boxes with a letter in each, and up and down arrows to shift these letters.
I think the strategy to solve this is to apply the 6-part shift pattern from SIGNAL to all of the other words with some index offsets and use this to learn slightly more of the cipher key. So I get 433443 and then try ?43344 and 33443?. But I don't want to do that by hand, so a spreadsheet or something is necessary.
I found one word this way as a proof of concept, but I'm not sure that I want to go through and do the rest. spreadsheet letter offsets.png