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), интерактивная доска — тоже подходит.
- Колонки или наушники — в игре есть голоса и звуки.
Как получить и запустить
- Скачайте
TEMA_1.html: на странице проекта на GitHub откройте файл в списке и нажмите кнопку скачивания (Download raw file). Или возьмите его из архива выпуска. - Откройте файл двойным кликом — он запустится в браузере. Если открылся не браузер, а другая программа: правый клик по файлу → «Открыть с помощью» → Chrome / Яндекс / Edge.
- На интерактивной доске включите полный экран — клавиша 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),
поэтому в файл попадают только её данные и картинки.
Новая игра
- Создать папку
games/TEMA_N/по образцуTEMA_1:scenario.js,world.js,images.js. - Подготовить картинки:
npm run assets -- <папка исходников> games/TEMA_N/assets. - Если не хватает возможностей — расширять общий движок в
src/engine/, а не копировать его в игру.
Принципы содержания
- Всё на русском; реплики короткие; факты достоверные и проверенные.
- Без реальных брендов, людей и персонажей фильмов.
- В заданиях — по 4 варианта одной длины и формы, порядок перемешивается; подсказок к ответу нет.
- Сквозной принцип курса: «Совет даёт ИИ, а решает человек».