Xenocide is cooperative. Everyone at the table is losing or winning together, and until now the only thing a seat could communicate was the move it made.
There is a Signal button on the action bar now, and eight lines behind it.
The obvious version of this feature is a text box. I did not build one, and the reason is not moderation. It is that a table of four people typing at each other is a different product, and this one is a card game where the interesting information is on the board.
So the list is fixed, and every line on it had to pass one test: is this something a teammate would want to hear? That ruled out most of what a taunt list would carry, because there is no opponent here to taunt. What is left is the vocabulary of a group working on the same problem.
Some are a warning. Some are an offer. Two are what you say when it has gone well, and one is what you say when it has not. None of them can be used to needle the person who just made a bad play, which was the design constraint I cared most about.
They are also written in the game’s own language rather than in ours. The Unbound are not scholars. They are people counting how much Ruin a thing absorbs before it stops, and the lines sound like it.
A signal appears beside your seat and in the ticker at the top, and it fades after eight seconds. There is a short gap enforced between two signals from the same seat, which is the whole of the anti-spam design, because a fixed list of eight cooperative lines is not much of a weapon.
They do not appear in a solo game. There is nobody to signal to, and the server says so rather than showing you a button that does nothing.
It does not carry state. A signal is a sentence, not a move, and nothing about the game changes when you send one. If a line ever needs to mean something mechanical, it will be a mechanic with a name rather than a saying that quietly does something.
The eight are copy, so they live in one file and can be rewritten without touching the rules. The keys the server knows are separate from the words you read, which is the same split the rest of the game uses: the engine never depends on what a sentence says.