Everything you need to build, run and finish a quest game. Read it top to bottom once, then come back to the part you need.
Angry Mouse exists to make quest games available to everyone.
A quest normally means an agency, a contract and a bill with a lot of zeros. It should not. The same engine should run a corporate game for a hundred people and a small, warm quest you build for one person as a birthday present — with a clear interface, wide room for customisation, and a price that does not make you think twice.
You do not need to be a programmer. You need a story, a few hiding places and an hour of your time.
Your first working game, in the order the engine expects:
Teams see nothing until the start time arrives, and everything closes at the end time. A game with no start time set is not running at all.
A team is a login. Everyone in the team uses the same one, so several phones can be signed in at the same time — one person reads the task, another types the code. The engine keeps them in sync automatically.
Two of them pressing SUBMIT on the same code at the same instant is normal and safe: the task is counted once, the bonus is awarded once, and the slower phone is told plainly that a teammate was a moment faster. The same goes for the red cover button and the last chance — pressed by three people at once, they still happen once.
Team logins are unique across the whole engine, so a plain one like
dragons may well be taken already. Pick another and move on:
the message tells you nothing about who has it, and it tells them nothing
about you. Team names are yours alone — call a team whatever
you like.
Logins are case-sensitive. Dragons and
dragons are two different logins — and so are two
different passwords. This catches people out on a phone, where the
keyboard capitalises the first letter by itself. If a team swears the
login is right and the engine disagrees, look at the very first letter
before looking anywhere else.
Codes inside tasks are the opposite: MOON, moon
and Moon all count as the same code, and spaces at the very
beginning or end are ignored. A space inside a code still
matters — CODE 123 and CODE123 are
different answers, and that is on purpose.
A set is a folder. Tasks live in sets so that a long list stays readable and so you can reuse a whole set in another game. Click a set to open its tasks; click again to close it.
A task is one step of the game: some text, maybe a picture or a video, and the codes that open the way forward. The same task can be used in many games at once — editing it later does not touch the results of games that are already finished.
A game ties everything together: which teams play, in which order, from when until when. Two games can run at the same time with the same teams and the same tasks — they never mix.
Each team gets its own order of tasks. That is deliberate: sending two teams around the same location in different orders keeps them from following each other and from queueing at the same hiding place.
In the assigned list, parallel tasks sit in their own group at the top — they have no position in the queue. Everything below is the main chain, numbered in the order the team will play it.
The body of a task is built from blocks, in any order and any number:
Pictures and video only: png jpg jpeg gif mp4 webm mov, up to
50 MB a file and 300 MB for your whole account. The engine looks inside the
file, not just at its name, so renaming something else to .jpg
will not get it in. Nothing else is accepted — and that is on purpose:
a file type that can carry instructions would run in the browser of every
team playing your game.
Blocks are collapsed by default and open one at a time — the editor shows you the outline of the task, not a wall of fields. Move them with ↑ ↓, put one inside the spoiler above it with →, take it back out with ←. Dragging with the mouse works too; the arrows also work on a phone, where dragging does not.
A code is what the team types in. Every code belongs to a task and has a kind, a bonus or a penalty, and optional alternative spellings.
Every passing code has a number. The team sees it in its CODES
list — 1. FOUND, 2. NOT FOUND — and that is the whole
of it. Sometimes it matters for the puzzle itself: the team needs to know
which of the three words it found is the first one.
The number does not force anything. A team can enter the third code first, and it counts exactly the same. If a task must be solved in a set order, build it that way — put the next step behind a spoiler that the previous code unlocks.
A passing or check code can carry a bonus — seconds taken off the team's result. A false code carries a penalty — seconds added. This is how you reward the team for finding the optional, harder things without blocking anyone who misses them.
Comma-separated. MOON with alternatives ЛУНА, LUNA
accepts all three. Case never matters: MOON, moon
and Moon are one code. Everything else does — including a space
inside the code. CODE 123 and CODE123 are
two different codes, and the engine will not guess that 0 was
meant to be O. That is on purpose: precision is part of the game.
If you want both spellings accepted, list one as an alternative of the other.
The one exception is spaces at the very beginning and the very end — those are cut off on both sides, in what the team types and in what you saved. Nobody can see them, so they cannot be part of a puzzle: a phone keyboard adds a trailing space by itself, and a stray space left in the code field when you built the task would otherwise make that code impossible to enter at all.
An attempt is spent only by a mistake: a code the engine does not recognise at all, or a false code entered for the first time. Passing codes, check codes, spoiler codes and codes that unlock parallel tasks are free. Any repeat is always free — entering the same code twice changes nothing, gives no second bonus, costs no second penalty, and says so plainly in the log.
Spoilers are the most useful thing in the editor, and the least obvious. They do three different jobs.
Put the hint in a spoiler that opens after a delay. The team sees a closed box with a countdown and chooses whether to wait for it. You keep them from getting stuck without giving the answer away to everyone.
A task with four photographs and a page of text is unreadable on a phone. Put each part in its own spoiler, open immediately: the team sees a short list of headings and opens what it needs.
This is the powerful one. A spoiler can open by its own code — a code that is not a passing code and does not finish anything. So one task can be a chain:
Task: “The old library”
Visible text: Find the shelf where the year on the spine is not a year.
Spoiler “Stage 2”, opens by code 1789:
Behind that book is a key. What is written on it?
Spoiler “Stage 3”, opens by code ROOM4:
Room 4 is locked. The caretaker leaves at eight.
Passing code: CARETAKER
The team walks through three stages inside one task, each step opening the next, and none of the intermediate codes finishes the task or costs an attempt. From the outside it looks like a whole quest in a single step.
A spoiler's own code is never shown to the team — not on the screen and not in the page source. The engine strips it before sending the task.
If you pick a condition and leave its field empty, the engine refuses to save: a spoiler set to open by a code it does not have would never open at all, and a task built around it would be impossible to finish. You would find that out during the game.
A normal task blocks the queue: the team does it, finishes it, gets the next one. A parallel task runs alongside the chain. The team sees it in its own orange frame at the same time as the current task, and can do it whenever it likes.
Use them for things that are not part of the route:
A parallel task has its own duration, or lives until the end of the game. Its time never counts towards the team's result — it ran alongside the chain, and that time is already counted there. The team gets only the bonuses of its codes and the penalties it earned.
In the statistics table parallel tasks are always the last columns, after the whole chain.
A game can be made entirely of parallel tasks unlocked by codes. The team then has no queue at all: it wanders, finds codes, and each code opens another piece. The code field stays available even when nothing is on screen.
A team stuck on one task can burn the whole game there. Last chance is the way out: the team presses the red button inside the task frame, and the task loses its timer and moves aside — the team gets the next one immediately and can come back to the old one whenever it wants.
The price:
One rule, used everywhere an average is counted:
The average is only final once the game is over. Before that the statistics show it as provisional — it changes as more teams finish that task.
The team's screen is deliberately short. From top to bottom:
On a phone the code row sticks to the top of the screen: however long the task, the field and SUBMIT are always within reach. The reply to a code disappears by itself after five seconds, or on a double tap.
This is the part worth reading twice — it decides who wins.
The engine has no clock of its own — it works out where everyone stands the moment anybody asks: a team's page, your statistics, the status strip. The times are always calculated from stored moments, so the answer is the same whether you look during the game or a week later.
Everything that happens live — the event feed, the team status strip and the game chat — lives in its own panel on the right, pinned to the window and scrolling on its own.
That is the point of it. You never leave the page to see what is going on: while you are editing a task, fixing somebody's sequence or writing down a manual penalty, the whole game keeps running in front of you — who is stuck, who just took a code, who is asking something in the chat. You answer them from the same screen, in the middle of whatever you were doing, and go back to it. No tabs, no switching, no losing your place.
Bottom right. One line per team: name, which task it is on and its number in the chain, how many codes it has taken of how many needed, how many last chances it has left, how long it has been on the task and how long is left. Yellow under five minutes, red under two. A hidden team turns the whole line red and shows its return code.
Every code entry and every event, newest first, colour-coded: green for a code accepted, red for a wrong or false one, grey for a repeat, orange for something unlocked, magenta for last chance. Scroll to the bottom and the next portion loads by itself. FULL TABLE opens everything in a separate window with a spreadsheet export.
If a game has the chat enabled, teams and you write in it. In the side panel it sits under the feed, folded, with the game picked right there — so you can write into any game without opening its settings first. The same chat is also inside the game settings, whichever is closer to hand.
You write as the admin, and your messages are marked as such. You can also delete any message: it is not erased without trace but replaced with a note that the admin removed it, so nobody wonders where it went.
One row per team, one column per task, sorted by result. Each cell shows when the task started and ended, how long it actually took, the bonuses and penalties, and the task total. Failed tasks say why they failed. The two columns on the left stay put when you scroll sideways, so you always know whose row you are reading.
Teams see nothing until you allow it. Two separate switches in STATISTICS: the results table and the full game log. Open one, both or neither.
Their own log is different: each team can export its own events to a spreadsheet as soon as the game is over, without waiting for you.
The engine only knows what it recorded. It does not know that a team was held up by a guard, that a hiding place turned out to be locked, or that a picture failed to load. Three tools for that, all in STATISTICS:
What goes into the result is the average and nothing else: the bonuses and penalties that team earned on that task stop counting. They stay visible in the table, and they come back if you remove the average.
One consequence worth knowing before you press it. The team you give an average to drops out of the pool the average is worked out from. So if it was the only team that solved the task, there is suddenly nobody left to count by — and the average for everyone on that task becomes the full task duration. Remove it again and the old number comes back. That is not a glitch: your decision changes the source data, not just one cell.
All three are written into the live feed, so a decision that changes the outcome leaves a trace. The first two ask you for a reason and show it in the results table; excluding a whole column does not — it is one tick, instantly reversible, and what happened is plain to see.
Sometimes attention is unwelcome — a guard, a passer-by, someone who should not see what the team is doing. The red ⚠ COVER MODE button at the bottom of the team's screen hides the game instantly: the screen becomes a plain location map with a code field and nothing else. No tasks, no timers, no logo.
What happens behind it:
To come back the team enters a six-digit code shown once when the button is pressed. You can see that code in the team status strip, in case they forget it. A wrong code looks exactly like a wrong task code.
Hiding costs the team the task they were on, and that is deliberate. It used to grant the average time of the other teams instead — which made the red button cheaper than a last chance: a last chance only pays out if you actually solve the task, while cover mode paid out no matter what. A team could press it a minute before the timer ran out and save time on every single task. The button is for safety, not for scoring, so now it simply fails the task.
If a team hid for a genuine reason and you want to soften the result, you can do it yourself after the game: AVERAGE TIME in the statistics section counts that task by the teams that solved it, and you say why. Whether the reason was genuine is a judgement call, and the engine should not be making it.
You can edit a running game — that is normal, and the engine is built for it. What matters is knowing what each change does.
Once a game is over its results are frozen. You can still edit the tasks themselves — they belong to your library and are used by other games — and the finished results will not move.
Press TEST on the sign-in screen and you get the whole engine for 15 minutes, with no limits and no limit on teams. Nothing to fill in: no login, no password, no payment. Build a task, run it as a team, look at the statistics.
When the time is up the test account is deleted with everything in it — games, tasks, teams, the lot. The test is for looking, not for preparing a real game in advance. A countdown at the top of the screen tells you how much is left.
Press CREATE ACCOUNT on the sign-in screen. A login and a password, typed twice, and that is all we ask for. No e-mail, no phone number, no confirmation link.
Which has one consequence you should take seriously. There is nowhere to send a forgotten password to, and the chat that would let you ask us is inside the cabinet you cannot get into. So there is no recovery at all: lose the password and you lose the account, with everything in it. Write it down before you finish signing up — the form has a Show password tick so you can read back what you actually typed.
You can change both your login and your password yourself from the cabinet at any time, as long as you can still sign in.
| Game size | Price |
|---|---|
| up to 2 teams | $1 |
| up to 5 teams | $3 |
| up to 20 teams | $5 |
| more than 20 teams | $10 |
One price, one game, no subscription and nothing to cancel. Pick the size by how many teams will actually play: the engine stops you from adding a team beyond what you paid for.
That last step is the point of the whole arrangement. Pay on Tuesday evening, sit down to build on Saturday morning, press START then — and none of your 72 hours were burned in between. The clock is yours to start, and it starts when you are actually ready.
It cannot be paused or stopped once started, so press it when you mean it.
A game that is already running is never cut off. Not by the end of your 72 hours, not by anything else. Teams keep playing to the end, you keep watching the live feed, awarding and deducting time, ending the game when you decide to.
What closes is building: no new games, tasks, teams or sequences. Everything you built stays exactly where it is and stays readable — go through the statistics with your teams the next day, show them the results, read the log. When you want to run another game, order again.
Through the chat in your cabinet. That is the only channel: no e-mail, no phone, no messenger. It keeps the whole conversation in one place, attached to your account and your orders. Questions about the engine, about an order, about a payment that has not been confirmed — all there.
It works even when your access has expired, which is exactly when you are most likely to need it. When we answer, a badge appears next to your name at the top of the panel and a note pops up in the corner, so you will not miss it while you are working on a task.
Everything on this list, and nothing beyond it:
No e-mail address. No phone number. No analytics, no tracking scripts, no advertising, no third-party services of any kind. Nothing about you leaves this engine, because there is nowhere for it to go.
Your teams give the engine even less: a name, a login and a password you invent for them. The engine never asks a player for anything about themselves.
Ask in the chat and we delete your account. That takes everything with it — games, tasks, teams, played history, uploaded files and the conversation itself. There is no archive and no backup copy kept aside for you afterwards, so make sure you have the results you wanted before you ask.
In theory 72 hours is enough for more than one game. We are counting on your decency. We can see how the engine is being used, and a finished game plus another full one starting the next day is easy to notice — that is grounds for closing your access.
We would rather be honest with you than sound impressive.
Behind this engine there is no company, no support department and no rota of people on duty. That is precisely why a game costs a few dollars instead of a few hundred. The trade is deliberate, and you should know which side of it you are on: you get an engine that can do a great deal for very little money, and in return you do not get a guaranteed answer within the hour.
What we promise is effort, not speed. We work to keep things from breaking, we fix what breaks, and we answer what matters as fast as we honestly can. We do not promise how fast that will be. The engine is provided as is.
A practical consequence: do not schedule your game so that it depends on us being reachable. Type it in early, run a test pass the day before, and keep a plan B for the evening itself. That advice is worth following with any tool, and here it is worth following twice.
CODE 123 will not accept CODE123. Check the
code on the task card and add the spellings your teams are likely to try
as alternatives.
Still stuck? Write in the chat in your cabinet. Include the game name and roughly when it happened — with that we can find the exact moment in the log.
← TO THE ENGINE