Signal Cipher by Shiiro 10psi
The goal of this game is to decode the ten signal words. The first word is always signal.
All ten words are shifted according to the same 15 number noise pattern, beginning at randomly assigned indices from 0 to 9. Therefore, each word shares the shift pattern of its last five characters with the first five of another word, except for the words at the end of the pattern.
The noise pattern begins with a value between -5 and +5, and a velocity between -1 and +1. Between each step in the pattern, the velocity is added to the value, then the velocity is adjusted by -1,0,or +1.
Eight note pages are provided. The complete list of potential signal words is included in the last tab of this panel.
| Link | https://shiiro10psi.itch.io/signal-cipher |
| Original URL | https://ldjam.com/events/ludum-dare/59/signal-cipher |
Ratings
| Overall | 672th | 3.184⭐ | 21🧑⚖️ |
| Fun | 633th | 3.026⭐ | 21🧑⚖️ |
| Innovation | 383th | 3.447⭐ | 21🧑⚖️ |
| Theme | 445th | 3.711⭐ | 21🧑⚖️ |
| Given | 58🗳️ | 1🗨️ |
Providing note sheets is a really great idea. I would love to see that more often in puzzle games!
we hate you
and also we are not sure if there is a mistake or we are just too tired to finish the puzzle
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.
```
# Add shift value from known cipher in the positive form.
# ex: 'rgdjvf -> signal' would be [1, 2, 3, 4, 5, 6] (r = 18, s = 19)
cur_shift = [0, 0, 0, 0, 0, 0]
max_num = 122 # z in ascii
min_num = 97 # a in ascii
# List of unsolved ciphertext from the game. Use lowercase
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.

- 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.
