Everything on this page was checked against the thing it describes, and everything on it is yours to use without asking. If a number is here, it was measured. If it could not be measured, it is not here.
The quickest way to know whether this is worth your column is to play the first contract. Fifteen minutes, one browser tab, and it asks you for nothing.
Play it →No account, no install, no download. Progress stays in your browser.
du -sb dist-steam): an 8.7 MB executable with the whole game
inside it, plus Microsoft's 1.7 MB WebView2 bootstrapper, which only runs
on a machine that is missing the runtime.npm run coverage, not a claim.npm run test:missions reports
100 missions playable end to end; the other three run against real Docker
containers and are covered by npm run lab.Quote any of these verbatim. The character counts are measured, not estimated.
You run the attack. Then you triage the alerts.
You run the attack. Then the game seats you on the night shift of the SOC the client outsources to, and your own actions are in the queue you triage, mixed into the office's ordinary traffic. The terminal is simulated; the commands are not. 103 contracts, English and Turkish, free, in a browser.
Signal / Noise is a security game in which you do the job, and then have to find yourself in the log. The terminal is hand-written and the commands in it are real: nmap, hydra, ssh, curl, grep, sha256sum, with no invented syntax and no flag that is accepted and does nothing. Objectives do not check what you typed, they check what you read, so there is no phrase to guess and no walkthrough to copy. When a contract ends the game sits you down on the night shift of the SOC the client outsources to, with the last hour of alerts in front of you and your own rows sitting between a cron job, a 400 from a web server and a sudo that was supposed to happen. There are 103 contracts across four acts, written separately in English and Turkish. It runs in a browser, it is free, and it asks for no account.
Stated as a mechanic rather than as a genre, because the genre sentence has been written a hundred times and the mechanic has not.
Your own attack becomes the alert queue you triage. Finish a contract and the game moves you to the night shift of the SOC the client outsources to. The rows you left are in the queue, decoded into rule IDs and severities, sitting between the office's ordinary traffic. Telling them apart is not a matter of reading harder: three logins can be the same rule at the same severity. What separates them is knowledge you brought from outside the log, because you are the one who put one of them there.
The same evening, on the night shift of the SOC the client outsources to. Something in this queue is yours. TIME RULE LV SOURCE 13:04:11 5501 3 10.0.0.4 PAM: session opened (cron) 13:11:39 31101 5 10.0.0.211 Web server 400 error code 13:20:00 100010 5 10.13.37.5 Many connections to closed ports 13:20:05 100012 6 10.13.37.5 Service banner probing pattern 13:52:02 5402 3 10.0.0.4 Successful sudo to ROOT One source in this queue mapped the block. What is its address?
The game's own output, taken from the first contract. The two highlighted rows were produced by the player's own port scan a few minutes earlier.
The commands are real. The
terminal is simulated; what you type into it is not. nmap, hydra, ssh, curl,
grep, sha256sum, with no invented syntax anywhere. A flag the shell accepts
does something: grep -v returns the lines that did not match,
nmap -sV gives you versions, and grep on a file that is not there
says so. A test called npm run test:hints takes every command the
game displays to a player and runs it through the shell, so the game cannot
print advice its own simulator would refuse.
Objectives grade what you read, not what you typed.
Reading a specific file on a specific machine fires a discovery, and the
discovery is what completes the objective. cat,
head, tail and grep all work, and none
of them is the answer: the game only cares that you now know the thing. There
is no magic phrase, which means there is no walkthrough worth copying.
Three layers, one campaign. Layer 1 is the written simulator. Layer 2 runs the same contracts against real Docker containers with the real tools inside them. Layer 3 feeds the blue phase from real log lines and real decoders instead of invented ones. The campaign does not change shape when it moves down a layer.
The loop splits between two people. A finished run
packs into a string small enough to paste into a chat window,
SN1.checksum.body. Whoever opens it plays a shift derived from
your run rather than from a script. No server, no account, no matchmaking, and
an edited handover is refused rather than quietly graded wrong.
Signal / Noise was written by Berkay Hapcioglu, in Turkey, in Turkish and in English. Copyright 2026 Berkay Hapcioglu.
Contact: [email protected]. Questions about the design, the curriculum mapping or the layer-2 lab are welcome, and so is a request for a build, a still, or a longer answer than this page has room for.
You may use it. Any screenshot or recording of the game, the name, the wordmark, and every word of text on this page: use them in coverage without asking and without a fee. Crop them, re-caption them, put them next to a review that dislikes the game. There is no approval step.
Taking your own is the fastest route. The game opens at samerule.com/oyna with no account and no install, so any screen in it is one browser tab away. The desktop build draws a 1440 by 900 window and the stills are captured from it at exactly that size, which is what to match if you want yours to sit beside them.
The image pack is signal-noise-press.zip - six screenshots at 1440 x 900 and the same thirteen seconds of play cut three ways: vertical, landscape and square. All of it is the running game, captured from the desktop build by replaying the first contract's own documented solution. Nothing in it is a mock-up. Two things worth knowing about what is in the pictures: the typefaces are IBM Plex Mono and IBM Plex Sans Condensed under the SIL Open Font License, and every log line, banner and rule identifier in the game was written for it. No vendor's log corpus is redistributed here.
The dates come from the repository, one line per thing that changed what the game is.
Nothing above is a plan. Every line is a change that is in the repository and in the build you can play right now.