НЮТАГ: онлайн-симулятор жизни села на 3D-карте с входом через MAX
Собственный продукт: многопользовательская игра на 3D-карте настоящего села Узон в Забайкалье. Жители входят через MAX или Telegram, устраиваются на работу, получают зарплату из бюджета села, строят дом и хозяйство. Игра работает на nutag.chimitdorzhi.tech, к ней снят промо-ролик, постеры и рилсы из кадров самой игры.
Коротко (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 минут.


