Кейсы 6 мин чтения

НЮТАГ: онлайн-симулятор жизни села на 3D-карте с входом через MAX

Собственный продукт: многопользовательская игра на 3D-карте настоящего села Узон в Забайкалье. Жители входят через MAX или Telegram, устраиваются на работу, получают зарплату из бюджета села, строят дом и хозяйство. Игра работает на nutag.chimitdorzhi.tech, к ней снят промо-ролик, постеры и рилсы из кадров самой игры.

кейсбраузерная играMAXTelegramthree.jsпромо-ролик

Коротко (TL;DR)

  • НЮТАГ это моя игра: 3D-карта настоящего села Узон в Дульдургинском районе Забайкалья, где все игроки живут в одном мире в реальном времени. Название от бурятского «нютаг», родные места.
  • Житель входит через MAX или Telegram, работает сменами по часам Читы, получает зарплату из бюджета села, ремонтирует дом, ведёт хозяйство, учится, голосует за главу.
  • Игра работает на nutag.chimitdorzhi.tech, вход через MAX проверен вживую. С 4 ноября мир запущен заново с нуля, поэтому цифр по жителям здесь нет.
  • Для продвижения снял ролик на 60 секунд в двух форматах, 17 постеров и рилсы по функциям. Всё собрано из кадров самой игры.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Обсудить бота

Игра началась 23 октября как градостроитель на карте одного села. Через день я переделал её в симулятор жизни: людям интереснее найти свой дом, выйти на смену и заработать, чем расставлять здания. Дальше рассказываю, что внутри, где было трудно и что пока не проверено.

Задача

Хотелось сделать игру про родные места, где карта узнаваема до улицы. Житель открывает её с телефона, видит своё село, реку Иля, школу, дацан у трассы, свой дом. Устанавливать ничего не нужно, вход через мессенджер. Первым выбрал MAX, Telegram добавил позже.

Условия я поставил такие. Один общий мир на всех, без отдельных копий у каждого. Экономика, в которой работа главный доход, а бюджет села не пустеет и не раздувается. Карта только из открытых источников, без копирования коммерческих карт.

Что я сделал

Сервер на Node.js держит мир в памяти и рассылает изменения по WebSocket, данные лежат в SQLite. В папке сервера 42 модуля: вход, жители, работа, хозяйство, земля, семья, учёба, выборы, состязания, поддержка, журнал ошибок. Клиент рисует карту на three.js, без WebGL включается плоский режим.

Карту я перевёл из OpenStreetMap в сетку 204 на 235 клеток по 16 метров: дома, улицы, река, контур села. 28 октября дома встали точно по контурам: раньше сдвиг был в среднем 7 метров и 35 зданий терялись. Рельеф окрестностей взят из открытой модели высот Copernicus, земля под картой из снимков Sentinel-2 под каждый сезон: зимой снег, осенью жёлтая трава. День и ночь идут по часам Читы, погода подтягивается из open-meteo для Дульдурги.

Вход через MAX работает двумя способами: мини-приложение из кнопки бота или код через бота, если игра открыта в браузере. С 27 октября то же есть для Telegram. Аккаунты MAX и Telegram у одного человека пока раздельные. Как один код обслуживает два мессенджера, я разбирал в статье про бота сразу в Telegram и MAX.

Внутри игры 33 должности, из них 12 онлайн. Каждая смена это мини-игра: вопросы, ритм, пары карточек, доставка почты по карте. Смены идут по окнам суток, до трёх работ в разных окнах. Зарплату платит бюджет села, прибавку за сытость, настроение и серию дней доплачивает район. Есть участки по 6-15 соток, огород, теплица, скот, рыбалка и охота по сезонам, ремонт дома в шесть уровней, двор с украшениями и рейтинг лучших дворов. Ещё учёба с дипломами, транспорт, семья с общим бюджетом, шахматы, выборы главы раз в месяц, наадан по субботам, Сурхарбан и Сагаалган по датам.

Для управления сделал админку: игроки, рассылка через бота, журнал ошибок сервера и браузеров, аналитика по дням с удержанием на первый и седьмой день. Раз в 10 минут сканер сам чинит данные, например отрицательные монеты или зависшие смены. Сторож раз в минуту проверяет здоровье и перезапускает службу после двух промахов.

Промо из кадров игры

Ролик на 60 секунд собран в Remotion в двух версиях: 1920 на 1080 и вертикальная 1080 на 1920. Кадры снимал скриптом Playwright с локального стенда на чистом мире, без данных настоящих жителей. Скрипт подменяет время в браузере, поэтому камера летит ровно 30 кадров в секунду без рывков. Смены сцен стоят на долях трека, звук сведён к -14 LUFS. Отдельно вышли 17 постеров для сторис, рилсы по 10 секунд про каждую функцию и вертикальный пролёт над осенним селом. Про сборку видео из шаблонов есть разбор про Remotion. Картинку похожего села, сгенерированную по тексту, в рекламу не взял: зритель должен видеть настоящую игру.

Что было сложно

Карта. В OpenStreetMap у Узона около 300 домов и ни одной подписанной улицы, в коммерческих картах домов больше, но их условия запрещают переносить данные. Названия восьми улиц я поставил сам, а недостающие дома жители отмечают в игре: заявку подтверждает глава или администратор, и житель переезжает в свой настоящий дом вместе с ремонтом и двором.

Первый показ. Жалоба была простая: «тормозит, карта белая». Я затемнял почву под лесом 12 тысячами мелких операций с размытием, и первый кадр ждал 13,6 секунды. Переделал на одну маску, собрал шейдеры заранее и стал показывать карту по слоям. После правки первый вход из Дубая занимал 6,3 секунды, повторный 2,4. На телефоне карта в покое рисуется 12 кадров в секунду, а при среднем кадре дольше 22 мс игра сама включает лёгкий режим.

Экономика. Первая версия давала перекосы: охоту и разведение норок пришлось урезать, а казна села копилась быстрее, чем её тратили. Я написал модель на 730 игровых дней с тремя типами игроков и гоняю её после каждой правки цен. Принцип такой: смены главный доход, двор вторичный, дорогие вещи требуют содержания каждый день.

Связь с Telegram. С сервера до API Telegram доходит не каждое соединение: на последнем замере примерно 6 из 8. Поэтому бот повторяет неудачное подключение через несколько секунд и держит постоянное соединение по IPv4. MAX работает напрямую.

Что изменилось к ноябрю

С 4 ноября мир игры запущен заново с чистого листа. Адрес прежний по смыслу: nutag.chimitdorzhi.tech, теперь без порта, с новым сертификатом. Оба бота, MAX и Telegram, подключены заново, а вход через мини-приложение MAX я проверил вживую уже в новом мире: первый житель вошёл, права администратора выданы.

Старые цифры по жителям и тестерам к новому миру не относятся, поэтому я их убрал. Карта, рельеф и снимки со спутника по сезонам остались теми же, что описаны выше, а проверки, нагрузочный замер и сквозной тест относятся к самому коду игры и не зависят от числа жителей.

Что получилось

ЧтоСостояние
Адрес nutag.chimitdorzhi.techработает, мир запущен заново 4 ноября
Вход через MAXпроверен вживую в веб-версии MAX 24.10 и в новом мире 4.11
Вход через Telegramвыложен 27.10, бот отвечает на /start, токен подключён заново 4.11
Сквозной тест двумя браузерами24 из 24 шагов на чистом мире
Нагрузка на стенде150 онлайн 3% ядра, 400 онлайн 20%, предел около 600-700
Проморолик 60 с в 16:9 и 9:16, 17 постеров, рилсы по функциям

Не проверено: работа карты на слабом телефоне по видеокарте, пуш-уведомления бота в MAX вживую. Темп игры уже менял по отзывам тестеров: хозяйство растёт вдвое быстрее, ремонт втрое.

Что дальше

Главное сейчас это люди: мир нужно заселять заново. Каждого пришедшего прошу позвать ещё двоих по своей ссылке. Когда онлайн подойдёт к нескольким сотням, нужно сжать стартовые данные (476 КБ на вход) и сделать рассылки адресными, сейчас они идут всем. В политике данных не хватает реквизитов оператора, это закрою до широкого запуска. Ещё хочу дорисовать дома в OpenStreetMap по снимку и связать аккаунты MAX и Telegram одного человека. Как мини-приложения в MAX помогают бизнесу, я писал отдельно: мини-апп в MAX.

Частые вопросы

Нужно ли что-то устанавливать?

Нет. Игра открывается в браузере или как мини-приложение из бота в MAX и Telegram. Гостям карта видна без входа.

Можно ли сделать такую карту для другого места?

Да, если место есть в OpenStreetMap. Карта собирается скриптом из открытых данных, рельеф и снимки тоже открытые. Дорисовать недостающие дома можно в OSM по спутниковой подложке. Про 3D в браузере есть статья о three.js.

Как быть с фото и данными детей?

Фото на аватар можно загрузить только взрослому и только с согласием, школьникам доступны нарисованные аватары. Браузер сам уменьшает снимок до 256 на 256 и убирает из него геометку.

Коротко о главном

Узнаваемая карта держит всю игру: свой дом, своя улица, своя река. Больше всего времени ушло на скорость первого показа и баланс экономики, функции добавлялись быстрее. Промо, снятое из самой игры, честнее красивой генерации.

Если вам нужна браузерная игра, мини-приложение или бот с входом через мессенджер, я соберу такой проект для Telegram и MAX. Напишите в Telegram, MAX или VK.

Всё о мессенджере MAX в одном месте

Эта статья — часть кластера материалов о MAX: разработка ботов и мини-аппов, продвижение канала, воронки, отраслевые сценарии и кейсы с реальными результатами.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх