AppsWire
3D квест "Фестиваль ИИ" v1.1.3

3D квест "Фестиваль ИИ"

Интерактивная лаборатория ИИ — 3D-квесты

3D-квесты об искусственном интеллекте и информационной безопасности для школьников. Каждая игра самостоятельная: играй когда захочешь. Игра — один HTML-файл, который открывается двойным кликом и работает без интернета (на компьютере и интерактивной доске).

Игра Тема Возраст
TEMA_1 «Фестиваль ИИ: правда и слухи» Искусственный интеллект и как с ним общаться безопасно 11+

Для игрока

Что нужно

Только браузер. Больше ничего устанавливать не нужно: игра — один файл TEMA_1.html, внутри него уже всё — 3D-школа, картинки, голоса, шрифты. Интернет во время игры не нужен.

Браузер Скачать Установка в Windows (командой)
Google Chrome (рекомендуем) https://www.google.com/chrome/ winget install Google.Chrome
Яндекс.Браузер https://browser.yandex.ru/ winget install Yandex.Browser
Microsoft Edge уже есть в Windows 10/11; https://www.microsoft.com/edge winget install Microsoft.Edge

Игра проверена в Chrome и Яндекс.Браузере; Edge работает на том же движке. В Firefox и Safari игра не проверялась. Команды winget выполняются в «Терминале» или PowerShell (Windows 10/11).

Требования к компьютеру

  • Windows 10/11 (или macOS, Linux с одним из браузеров выше).
  • Видеокарта с поддержкой WebGL — подходит встроенная графика большинства компьютеров и ноутбуков последних 8–10 лет.
  • Экран от 1366×768 (проверено на 1366×768 и 1920×1080), интерактивная доска — тоже подходит.
  • Колонки или наушники — в игре есть голоса и звуки.

Как получить и запустить

  1. Скачайте TEMA_1.html: на странице проекта на GitHub откройте файл в списке и нажмите кнопку скачивания (Download raw file). Или возьмите его из архива выпуска.
  2. Откройте файл двойным кликом — он запустится в браузере. Если открылся не браузер, а другая программа: правый клик по файлу → «Открыть с помощью» → Chrome / Яндекс / Edge.
  3. На интерактивной доске включите полный экран — клавиша F.

Файл можно скопировать на флешку и запускать на любом компьютере без установки.

Управление

Клавиша Действие
Клик по полу, WASD или стрелки идти
Пробел дальше в диалоге
G идти к цели (автопилот)
Q список станций, сменить цель
B блокнот: карточки правды, щиты, энциклопедия
Ctrl + E зарядка для глаз (Совёнок предложит её сам через 20 минут игры)
F полный экран
M звук
Esc закрыть окно
Колесо мыши приблизить или отдалить
Зажать колесо или правую кнопку и вести мышь повернуть вид

Сохранение и выход

  • Если страницу перезагрузили или закрыли посреди игры, при следующем открытии на титуле будет «Продолжить» — с того же места. Сохранение хранится в браузере этого компьютера: если данные браузера очистили, игра начнётся сначала.
  • Выйти из игры — подойти к дверям школы или нажать «Закрыть игру» на экране окончания.

Если что-то не работает

Что случилось Что сделать
Вместо 3D-школы пустой или чёрный экран Обновите браузер. Включите аппаратное ускорение: Chrome → Настройки → Система → «Использовать графическое ускорение (если доступно)» (в Яндексе и Edge — так же), перезапустите браузер
Файл открывается как текст или в другой программе Правый клик → «Открыть с помощью» → браузер
Нет звука Проверьте колонки и клавишу M; звук включается после нажатия «Начать»
Игра тормозит Закройте лишние вкладки и программы; на слабом компьютере лучше Chrome
Пропала кнопка «Продолжить» Данные браузера были очищены — начните игру заново

Для разработчика

Что установить

Чтобы менять и собирать игру, нужны программы ниже. Достаточно Node.js и Git; остальные — для отдельных задач.

Программа Зачем Скачать Установка в Windows (командой)
Node.js 20+ (лучше LTS) сборка игры, dev-сервер, проверки — обязательно https://nodejs.org/ru/download winget install OpenJS.NodeJS.LTS
Git скачать проект и сохранять изменения — обязательно https://git-scm.com/downloads winget install Git.Git
Python 3 архив выпуска (tools/make_release.py) https://www.python.org/downloads/ winget install Python.Python.3.12
FFmpeg подготовка записей голоса (npm run assets) https://ffmpeg.org/download.html (для Windows — сборки gyan.dev) winget install Gyan.FFmpeg
Google Chrome или Microsoft Edge сквозной тест (npm run test:e2e); Edge уже есть в Windows https://www.google.com/chrome/ winget install Google.Chrome
Visual Studio Code (по желанию) редактор кода; проект уже содержит его настройки https://code.visualstudio.com/ winget install Microsoft.VisualStudioCode

winget встроен в Windows 10/11 (команды выполняются в «Терминале» или PowerShell). После установки закройте и снова откройте терминал, затем проверьте версии:

node -v      # v20 или новее
npm -v
git --version
python --version   # если нужен архив выпуска
ffmpeg -version    # если готовите голоса
macOS и Linux
# macOS (Homebrew: https://brew.sh)
brew install node git python ffmpeg
# Ubuntu / Debian
sudo apt install git python3 ffmpeg
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt install -y nodejs

Сборка из исходников

git clone https://github.com/Recyavik/GAME_AI.git
cd GAME_AI
npm ci                      # библиотеки проекта строго по package-lock.json (нужен интернет, один раз)
npm run build -- TEMA_1     # → dist/TEMA_1.html и TEMA_1.html в корне

npm ci сам скачивает все библиотеки проекта (three.js, Vite, шрифты, sharp, puppeteer-core) в папку node_modules — отдельно их ставить не нужно. Готовая игра потом работает без интернета.

Живая разработка с автообновлением: npm run dev -- TEMA_1.

Сайт игры на сервере (Docker)

Стартовая страница (описание для ученика, герои, блоки «Учителю» и «Разработчику», счётчик «В игру сыграли») и сама игра — в одном контейнере. Регистрации нет: несколько человек играют одновременно, у каждого своё сохранение в его браузере.

Нужен Docker Desktop (https://www.docker.com/products/docker-desktop/, winget install Docker.DockerDesktop).

docker compose up --build -d     # собрать и запустить → http://localhost:8090
docker compose logs -f           # журнал
docker compose down              # остановить (счётчик сохранится в томе counter-data)

Порт меняется так: SITE_PORT=8181 docker compose up --build -d. Без Docker: node web/server.js (Node.js 20+, порт 8080, переменные PORT, DATA_DIR). Файлы сайта — в папке web/: web/public — страница, web/server.js — сервер и счётчик, игра берётся из TEMA_1.html. На сервере с доменом контейнер обычно ставят за nginx/Caddy с HTTPS.

Команды

Команда Что делает
npm run dev -- TEMA_N dev-сервер, игра в браузере с автообновлением
npm run build -- TEMA_N собрать игру в один файл: dist/TEMA_N.html и копия TEMA_N.html в корне
npm run build:all собрать все игры из games/
npm run games список игр
npm run assets -- <папка исходников> games/TEMA_N/assets подготовить картинки (PNG → WebP) и записи голоса (MP3, нужен ffmpeg)
npm run check проверить данные игр: картинки и звуки на месте, вопросы по 4 варианта с одним верным, ссылки между этапами, персонажами и точками мира
npm run test:e2e -- dist/TEMA_N.html пройти игру целиком в браузере (автопилот + решение станций): без ошибок, внешних запросов и новых вкладок. Нужен Chrome/Edge (путь — в переменной CHROME)
npm test всё сразу: проверка данных, сборка всех игр, прохождение TEMA_1
python tools/make_release.py архив выпуска releases/ai-quest-NNN.zip (нужен Python 3)
python tools/make_release.py --check dist/TEMA_N.html проверить, что в сборке нет внешних ссылок

Как устроен проект

GAME_AI/
├─ TEMA_1.html          ГОТОВАЯ ИГРА — открыть двойным кликом
├─ src/                 общий движок для всех игр
│  ├─ engine/           сцена, персонажи, HUD, этапы и цели, живой мир, финал и тест
│  │  └─ widgets/       мини-задания станций
│  └─ styles/           оформление интерфейса
├─ games/               КАЖДАЯ ИГРА — В ОТДЕЛЬНОЙ ПАПКЕ
│  └─ TEMA_1/           игра «Фестиваль ИИ: правда и слухи»
│     ├─ scenario.js    данные: тексты, персонажи, этапы, задания, тест
│     ├─ world.js       мир: комнаты, мебель, точки станций, живой мир
│     ├─ images.js      подключение картинок
│     ├─ voice.js       подключение записей голоса
│     └─ assets/        картинки (WebP) и голоса (MP3) игры
├─ tools/               сборка, подготовка ассетов, проверка данных (check), сквозной тест (e2e), выпуски
└─ docs/                архитектура движка (docs/02_architecture.md)

Сборка берёт одну игру по псевдониму @game → games/<TEMA_N> (см. vite.config.js), поэтому в файл попадают только её данные и картинки.

Новая игра

  1. Создать папку games/TEMA_N/ по образцу TEMA_1: scenario.js, world.js, images.js.
  2. Подготовить картинки: npm run assets -- <папка исходников> games/TEMA_N/assets.
  3. Если не хватает возможностей — расширять общий движок в src/engine/, а не копировать его в игру.

Принципы содержания

  • Всё на русском; реплики короткие; факты достоверные и проверенные.
  • Без реальных брендов, людей и персонажей фильмов.
  • В заданиях — по 4 варианта одной длины и формы, порядок перемешивается; подсказок к ответу нет.
  • Сквозной принцип курса: «Совет даёт ИИ, а решает человек».