2PlayerGame/detective-game
UndecimoDia cb93544793 Fixes
2026-08-15 18:04:59 +03:00
..
casegen fixes 2026-08-15 15:37:54 +03:00
public Fixes 2026-08-15 18:04:59 +03:00
.gitignore Pre-bugs fix 2026-08-15 14:07:39 +03:00
package-lock.json Pre-bugs fix 2026-08-15 14:07:39 +03:00
package.json Pre-bugs fix 2026-08-15 14:07:39 +03:00
README.md fixes 2026-08-15 15:37:54 +03:00
server.js Fixes 2026-08-15 18:04:59 +03:00
test-server.js Pre-bugs fix 2026-08-15 14:07:39 +03:00

Невпізнаний — детектив на двох, розділ 3

Процедурний детектив у дусі Shadows of Doubt: тіло без імені, вбивці немає в списку підозрюваних, і кожен код сесії — цілком нова справа. Кооператив для двох у локальній мережі.

Запуск

npm install   # один раз (єдина залежність — ws)
node server.js

Порт за замовчуванням — 3002. Обидва гравці відкривають адресу з консолі, вводять однаковий код сесії і різні ролі. Код сесії — це seed справи: той самий код — та сама справа та її автозбереження (грати можна кілька вечорів), новий код — нова справа.

Ролі

  • Польовий детектив — ходить районом (WASD/стрілки, E — увійти), обшукує місця, стукає у квартири, говорить з людьми. У приватне житло — лише з ключем або ордером.
  • Аналітик — база мешканців (пошук за іменем з клавіатури — досить початку слова, регістр не важить; фільтри за слідами: взуття, зріст, одяг, відбитки), мапа району з напарником наживо, системи (оператор, банки, камери, криміналістика, лабораторія) і шифри: Цезар, base64, PIN, злам md5-пароля за фактами з досьє.

Два типи справ

  • Вбивство (~75%): тіло без імені. Акт I — встановіть особу жертви. Акт II — ХТО, ЯК і ЧОМУ.
  • Викрадення (~25%): людини нема, але вона ще жива. Особа відома із заяви про зникнення; з'ясуйте, ХТО забрав людину, ДЕ її тримають і ЧОМУ. Фінал — рапорт на штурм: правильне ім'я і місце = заручника рятують. Помилка = штурм іде не туди.

Правила

  • У справі-вбивстві: Акт I — встановіть особу жертви. Акт II — хто, як і чому.
  • Мотивів у пулі — одинадцять: від ревнощів і боргів до спадку, старих гріхів, одержимого переслідувача, кримінального бізнесу, викупу і серійного патерну з підписом на тілі.
  • Обшуки знаходять і докази, і дрібниці — чек, запальничку, чужий записник. Що з цього справа, а що мотлох — вирішуєте самі (викреслюйте і ховайте зайве на дошці).
  • Кожен мешканець має плітки про район — здебільшого шум, але серед балачок трапляється правда.
  • Сліди з місця злочину — це фільтри для бази мешканців. ДНК порівнюють лише зі звуженим колом.
  • Ордер дає прокурор — і лише коли доказ прямо вказує на особу.
  • Стережіться хибних слідів: вони правдоподібні, але спростовні.
  • Звинувачення одне. Хто, чим, чому + закріплені 📌 докази; підписують обоє. Помилка — звільнення і правда, яку ви не розкрили.

Міні-ігри

  • Польовий: вилучення доказів твердою рукою (зафіксуй пінцет у зоні; промахи розширюють зону); сейф із кодовим замком — код не підбирається, а виводиться з деталі десь у квартирі; пошук оголошення-акростиха в місті (див. 3301).
  • Аналітик: гель-електрофорез ДНК — звузьте коло і зіставте смуги доріжок оком; дактилоскопія — відбиток зі знаряддя знято під кутом, порівняйте візерунки; архів камер — оберіть, КОЛИ дивитися плівку (час смерті є в матеріалах); тріангуляція — три вежі, три дуги на мапі: клацніть будинок на їх перетині, щоб звузити коло до тих, хто там буває. Помилковий вибір у лабораторії чесно каже «ні».
  • Інструменти дешифрування (вкладка «Шифри»): Base64, перебір усіх зсувів Цезаря, Hex→текст, Binary→текст. Інструменти механічні — думати, що і куди вставляти, доведеться самим.

Шифри — в кожній справі й не лише на ноутбуці. Крім сюжетних (щоденник під Цезарем, акаунт у Base64, PIN телефона), кожен кейс має ще два: пошту жертви під md5-паролем і записку-шифр (ротація Base64/Цезар/Hex/Binary). Це необов'язкові дрібниці — але саме там ви набиваєте руку на кожному типі.

Підказки — приховані

Усі підказки сховані за кнопкою 💡 Підказка (і в шифрах, і в лабораторії, і в сейфі). Промт описує лише артефакт і дає хеш/рядок — думайте самі, розкривайте підказку, лише коли справді застрягли.

Паролі (крек латиницею)

Паролі до пристроїв — завжди латиницею, у промті показано md5-хеш: беріть свій hashcat/john і будь-який словник (напр. rockyou.txt). Алгоритм дає два стилі порівну:

  • Особистий — виводиться з досьє: кличка собаки чи ім'я жертви, транслітеровані в латиницю (у досьє вони кирилицею — це і є робота), інколи + рік народження. Швидше здогадатися, ніж брутити (Баронbaron, Лола+рік → lola1985).
  • Випадковий — жодного зв'язку з жертвою, реальний запис зі словника. Тут лише перебір: hashcat -m 0 <hash> rockyou.txt знайде cookie, ginger, letmein

Пароль флешки 3301 теж латиницею: акростих оголошення транслітеруєте й додаєте рік.

CICADA 3301

У кожній справі захована чотиришарова головоломка в дусі Cicada 3301 (прості числа, шари шифрів, «оголошення в місті» замість плакатів): скринька з кодовим замком (код — на гравіюванні десь у квартирі) → картка з рядком Base64-поверх-Цезаря → інструкція веде до оголошення в місті → перші літери рядків + чотири цифри = пароль до флешки. Нагорода — особистий архів жертви: найкоротший шлях до правди. Ланцюжок необов'язковий: справа розв'язується і без нього.

Перевірка

npm test

Fair-play валідатор ганяє 300 випадкових справ: кожна розв'язна від стартових фактів, кожен хибний слід спростовний, усі шифри чесні. Інтеграційний тест проходить справжню справу двома ws-клієнтами до розкриття (і до звільнення).

Генератор як бібліотека

casegen/ не залежить від сервера й DOM: generateCase(seed) → мешканці, жертва, вбивця, мотив, граф доказів, шифри; solve(cs) — симулятор досяжності; checkAccusation(...). Можна брати в будь-який інший проєкт.