NAME
sideout — survival pong for eight, played over ssh
SYNOPSIS
$ ssh ssh.antics.gg
Any username. No password, no account, nothing to install. The name you type is your name in the arena and on the board, so pick a good one.
Windows: Windows Terminal with the built-in OpenSSH client. Everything else already has ssh.
DESCRIPTION
SIDE OUT is Pong with eight sides. Every player owns one wall of an octagon and a paddle in front of it. A ball past your paddle costs a life. Two lives and your side is gone: the arena reshapes to seven sides, then six, and so on, until one side is standing.
Over ssh you play CLASSIC against whoever else is connected, with bots filling the octagon to eight bodies. Connect, land in the lobby, press Enter, play. A round runs about a minute and a half.
Being out is not spectating. The moment your side goes you get a crosshair and a cooldown, and you drop hazards into the arena for the survivors: a peg that deflects, a well that bends, a spinner that swats. Sabotage is how you keep playing.
Three rooms, eight seats each. When every seat is taken you queue, watch the busiest room, and get seated at the end of its round. Players who have sat the longest rotate out to the back of the queue, so the queue always moves.
There is a leaderboard. It is keyed by the name you typed, and anyone can type any name. It is an honour system. Treat it as one.
CONTROLS
- ← → or A D
- move your paddle
- mouse
- move to steer; once you are out, hover to aim and click to drop
- Enter
- ready up in the lobby
- q Esc Ctrl-C
- quit; your terminal is put back the way it was
SECURITY
Should you ssh into a server you do not know? Fair question. Here is exactly what this one does, so you can decide rather than trust.
The game is the ssh server. One Node process, using the ssh2 library, owns port 22 under its own user inside a hardened systemd sandbox. There is no sshd on that port and no shell behind it. Nothing you type reaches a command line, because there is not one.
Ports 80 and 443 on the same host are Caddy, and its entire configuration is a redirect to this page. It serves nothing else.
What it answers to your client. A connection gets one session channel, a terminal, and the game. Everything else is refused:
| session | accepted, one per connection |
|---|---|
| pty-req, window-change | accepted, the game needs a terminal |
| shell | accepted, this starts the game |
| exec, subsystem, sftp | rejected |
| auth-agent-req | rejected, agent forwarding never happens, even with ForwardAgent yes in your config |
| x11-req | rejected |
| tcpip-forward, direct-tcpip, streamlocal | rejected, no port forwarding in either direction |
| env | rejected, your environment stays yours |
Authentication is none. Every OpenSSH client tries the none method first, and this server accepts it, so your client never offers a key and the server never asks for one. Password and keyboard-interactive are refused outright.
What it writes to your terminal. Every frame is built from this fixed set of escape sequences and nothing else:
- alternate screen on and off
?1049 - cursor hide and show
?25 - line wrap off and on
?7 - mouse reporting on and off
?1000 ?1003 ?1006 - cursor home, clear screen, cursor position
H 2J - 256-colour foreground and reset
38;5;n 0m - one OSC 8 hyperlink around each of the three links printed on exit, with the URL itself as the visible text
It never queries your terminal, never touches your clipboard or window title, and sends no DCS or APC sequences. On exit it reverses every mode it set, in the opposite order.
VERIFY
The host key is ED25519. It was generated once and is never regenerated, so your client pins it on first connect. The fingerprint is:
SHA256:8kHhB9JHHCPzSu4fDoDWm4VoTTKeKSjN4/7ITKwBq/Y
If your client shows anything else, do not accept it, and tell us.
Ask the server who it is before you connect. It identifies itself as sideout, not as OpenSSH:
$ nc -w 2 ssh.antics.gg 22 </dev/null
SSH-2.0-sideout
Watch the handshake. Without a terminal the server says so and hangs up, which makes this a two-second check: authentication completes with the none method, and no key is offered.
$ ssh -vT ssh.antics.gg 2>&1 | grep -E 'remote software|^Authenticated'
debug1: Remote protocol version 2.0, remote software version sideout
Authenticated to ssh.antics.gg ([35.174.19.33]:22) using "none".
Belt and braces. These flags turn off agent and X11 forwarding on your side, so what the server would answer stops mattering:
$ ssh -a -x ssh.antics.gg
LOGGING
One line when you connect: the name you typed, your IP address, your terminal size, and the room you were seated in. One line when you leave. Round results, by name, for the board. That is the whole log. It stays in the service journal on that box, and nothing inside the terminal reports to anyone.
This web page carries Google Analytics. The game does not.
REQUIREMENTS
- terminal
- at least 80×24. From 100 columns you also get side labels and the board
- colours
- 256, which is every terminal made this decade
- mouse
- optional; xterm mouse reporting, which every terminal made this decade does
- limits
- 4 connections per address, 10 per minute. Ten idle minutes and you are dropped, reconnect any time
SEE ALSO
The full game, with SURVIVAL, the big arenas, and your friends in the same room:
- antics.gg/sideout-presale
- iOS and Android, Founder Packs before launch
- store.steampowered.com/app/5146540
- Steam wishlist
- antics.gg/p/side-out-94df7d
- play in your browser right now
- discord.gg/RzQCJBv5n
- the Discord, for bugs and for gloating