DEADNET:在亡友舊電腦上展開的謀殺懸疑故事
DEADNET: a murder mystery on a dead friend's old computer
DEADNET 是一款以已故女子舊電腦為場景的短篇謀殺懸疑遊戲,玩家透過訊息、電郵和照片查明事件。案件證據與答案固定,角色由開放權重模型演繹,而且只知道玩家展示給她的內容。遊戲可透過 Ollama 在本機以 Gemma 運行,離線遊玩並保護對話私隱。
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine.
What I Built
DEADNET is a short murder mystery that takes place on a dead woman's computer.
Nora Vale died in her room on Halloween night, 1999. The police called it an accident. You play Adam, her friend. Her neighbour Mara leaves you Nora's old computer with a note asking you to take a look before it's collected.
The computer is a late-90s desktop with ordinary apps: Messenger, Mail, Photos, a Calendar, My Computer, a Trash Bin and a few games. There are no clue files or puzzles. You learn what happened by reading her messages, emails and photos, and noticing where people's stories don't line up.
Her last conversation in Messenger is with you. You didn't answer it in time.
Then her account comes back online, in a window called Unknown Signal. You can talk to her and show her what you've found. She's played by an open-weight model, and she only knows what you've shown her, so she can't just tell you the answer.
When you think you've worked it out, you open the Casebook on your recovery USB and answer three questions: who came into the room, why, and how they got in. A wrong answer doesn't end the game. It just tells you something doesn't fit.
Demo
Play it in your browser. It takes about 15 minutes. Each visitor gets their own copy of the case, and progress saves automatically. If nobody has played for a while, the first load can take up to a minute while the server starts.
If you get stuck: compare the times in Mail, and look closely at the photo captions.
Code
sea-deep
/
deadnet
The internet survived humanity. Nobody told the accounts. A local Gemma society inside a haunted desktop.
DEADNET — Room 317
Mara gives you her dead friend’s computer. You are Adam Moore. The last message Nora sent was to you.
Insert your recovery USB, turn on the computer, and look through Nora’s Messenger, mail, photos and calendar. Get to know the person who lived here. When her account signs in again, show her what you find. Her memory is uncertain; the things she left behind can contradict it.
Play online · The story behind it (DEV) · Source · Scripted static exhibition · Credits and licenses
Run
Node 22.13+ and npm:
npm ci cp .env.example .env npm run dev
Open http://127.0.0.1:3000. Insert the USB, then power on. The computer fills the browser; the tray also offers browser fullscreen. Windows drag, resize, minimize and maximize. On phones, a single tap opens an app and each window fills the available space.
For live dialogue, add OPENROUTER_API_KEY to the…
MIT licensed. Borrowed code, fonts, images and sounds are credited in CREDITS.
How I Built It
The desktop is React with 98.css. A small Node server stores each player's case and talks to the model, so no API keys reach the browser.
The main design decision was splitting what's fixed from what's live:
- Fixed: the evidence and the solution. Every player gets the same messages, timestamps and photos, and the same answer.
- Live: the characters. The model decides what Nora remembers, how sure she is and what she asks you.
I did this because language models are good at sounding unsure and bad at keeping facts straight. If the model could change the evidence, it could also accidentally solve the case for you, or make it unsolvable.
So each character only sees what they've actually been shown. Replies come back in a fixed format and get checked before they're saved. If a reply mentions evidence the character hasn't seen, it's rejected.
What I changed along the way. My first version was a file hunt: log files, a damaged backup you had to unlock, and at one point you had to play mini-games to recover it. It worked, but it felt like an escape room rather than someone's computer. I rebuilt it around what a real person would actually have on their PC: chats with friends, emails, a photo album, a calendar. The clues are in there, mixed in with ordinary life.
Hosting. It runs on Render. Each browser gets its own private case, so players never see each other's conversations. The game autosaves, and you can save to a file, load it back or start over from the Start menu. If the free AI models are busy, it tells you and offers scripted replies so you can still finish.
There's also one voice clip: Nora's last voicemail, recorded once with ElevenLabs and cached, with a transcript next to it.
Why Does Open Innovation Matter?
It keeps the game playable. The story is about a computer that keeps answering after its owner is gone. With open-weight models, Nora doesn't depend on one company keeping one model available. The prompts and rules are in the repo, and any compatible open model can play her.
It can run privately. You can run the whole thing locally with Gemma through Ollama, so your conversations never leave your machine.
It's free to play. The hosted version uses free open-weight models, so nobody has to ration their messages.
A closed frontier model would probably write better dialogue. But it would still need the same limits, because the hard part was never the writing. It was stopping the model from changing the facts.
Prize Categories
- Best Use of Render: the game is hosted on Render as a web service, with a private case per visitor, automatic saving, and API keys kept on the server.
- Best Use of Gemma: Gemma runs the characters locally through Ollama, so the game works offline and privately.
- Best Use of ElevenLabs: Nora's last voicemail, an important clue, is an ElevenLabs recording, cached and shown with a transcript.
All characters and events are fictional. I used AI coding assistants while building DEADNET and while writing this post.
來源:DEV Community · dev.to



