ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗«Твояк» — веб-викторина для компании в духе «Своей игры». Ведущий открывает комнату на ноутбуке или телевизоре, игроки и зрители заходят с телефонов по QR-коду или четырёхбуквенному коду. Приложение ставить не нужно, аккаунты не нужны.
Ведущий сам не играет. Это либо человек в комнате, либо бот. Бот читает вопрос голосом браузера (Web Speech API) и сам засчитывает ответ. Живой ведущий может поправить вердикт с экрана.
clock_timestamp()) пишет ответ. Верный даёт стоимость и право выбора, неверный всегда снимает стоимость, кнопка открывается остальным. Если никто не взял вопрос, эталон показывают всем.ANSWER_CHECK_USE_LLM=true — OpenRouter.Сроки на сервере: 15 секунд на кнопку, 20 на обычный ответ, 25 на «кота», 60 на ставки, 45 на финальный ответ.
Вопрос может быть картинкой, видео или музыкой. Ролик — YouTube с началом и концом, если он не открылся, плеер пробует VK Video и затем Rutube. У музыки бывает шторка: картинки не видно, звук идёт. У живого ведущего есть галочка «Трек включает ведущий».
game_states.version растёт на каждом изменении, чтобы клиенты не затирали друг друга.Экраны опираются на портфолио Đặng Trung Thắng, 22–23: тёмное поле и серая сетка. Страница Behance из этой среды не открылась (403), палитра снята с публичных копий кадров. Свой акцент — лимонная полоска на кнопках и метках. Текст: Manrope и Literata, оба с кириллицей. Ячейка переворачивается, очки догоняют новое значение; при prefers-reduced-motion анимации нет.
Нужны Docker, Node.js 20.9 или новее и Supabase CLI.
npm install
supabase start
supabase status -o env
cp .env.example .env.local
Из вывода supabase status -o env перенесите в .env.local:
| В статусе | В .env.local |
|---|---|
API_URL | SUPABASE_URL |
ANON_KEY | SUPABASE_ANON_KEY |
SERVICE_ROLE_KEY | SUPABASE_SERVICE_ROLE_KEY |
OPENROUTER_API_KEY и OPENROUTER_MODEL для лобби не нужны. Service role остаётся только на сервере.
npm run dev
Откройте http://127.0.0.1:3000 и создайте комнату. На экране ведущего появятся код и QR, список игроков обновляется сам.
Телефон в той же сети не откроет localhost. Запустите сервер так:
npm run dev -- -H 0.0.0.0
Зайдите в браузер ведущего по http://<адрес-компьютера>:3000. QR соберётся из этого адреса.
Дальше на телефоне или во второй вкладке откройте /play/КОД, введите имя и роль. Ник появится у ведущего без перезагрузки. «Ответить» в лобби отвечает, что вопрос ещё не открыт, и показывает серверное время.
Тот же сценарий против локальной базы:
npm run verify:lobby
Скрипт создаёт комнату, сажает 10 игроков, проверяет отказ одиннадцатому, зрителя, что anon не видит эталон ответа и секреты, и что из двух одновременных нажатий побеждает более раннее серверное время. В конце тестовая комната удаляется.
curl -s http://127.0.0.1:3000/api/answer-check \
-H 'content-type: application/json' \
-d '{"given":"Ёлка!","expected":"елка"}'
{
"correct": true,
"method": "exact",
"similarity": 1,
"llmUsed": false,
"scoreEffect": "add"
}
Сначала текст нормализуется: регистр, ё → е, кавычки, дефисы, лишние пробелы. Потом нечёткое сравнение. Если ответ близкий, но не достаточно, и в окружении ANSWER_CHECK_USE_LLM=true (или 1), сервер спрашивает модель через OpenRouter. Без флага, ключа или модели вызова нет. scoreEffect: "subtract" значит, что ошибка снимает очки; сами очки в M0 ещё не пишутся в счёт.
Это заглушка: эталон приходит в теле запроса. В игре он останется в базе, клиент его не увидит.
Тесты нормализации:
npm test
npm run dev — разработкаnpm run build и npm start — сборкаnpm test — нормализация и нечёткое сравнениеnpm run lint — ESLintnpm run format — Prettiernpm run verify:lobby — лобби и buzz на локальном SupabaseПосле правки .env.local перезапустите npm run dev: URL и anon-ключ попадают в браузерный бандл при сборке страницы.
Уже применённый каркас:
supabase/migrations/20261028120000_init.sqlДальше строго по имени файла:
supabase/migrations/20261028200000_gameplay.sql — ход игры, секреты ответов, представление question_boardsupabase/migrations/20261028200100_question_bank.sql — пул вопросовsupabase/migrations/20261028210000_media.sql — картинка, видео, музыка, шторка, «трек включает ведущий»supabase/migrations/20261028210100_media_questions.sql — медиа-вопросыsupabase/migrations/20261028220000_packs.sql — пачки и протоколы проверки여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗