mars.frontier

mars.frontier

Разработчик с 2000-х. Велосипедист. Автогонщик. Фотограф. Сейчас пилим @mars_frontier_bot в Telegram. Это игра про освоение Марса, добычу ресурсов, производство и торговлю. За короткое время игра стала популярной и ежедневно растет на 5%, вся разработка открыта, есть теплый ламповый чатик, люди делятся идеями, мыслями и лайфхаками :)
Пикабушник
Дата рождения: 1 ноября
220 рейтинг 6 подписчиков 18 подписок 16 постов 1 в горячем
10

Что будет, если снять скафандр на Марсе?

Что будет, если снять скафандр на Марсе? Планета, Вселенная, Космос, Астрофизика, NASA, Планета Земля, Марс, Колонизация Марса, Астрономия, Факты

Это не шутка, а голая физика.
Атмосферное давление на Марсе — примерно в 100 раз ниже, чем на Земле. Даже на вершине Эвереста человеку всё ещё можно выжить (с трудом), а вот на Марсе — уже нет.


Что произойдёт, если снять шлем?

Кислорода нет — это очевидно. Но главное не это.
При таком низком давлении жидкости в организме начнут закипать при температуре тела. В первую очередь — слюна, слёзы и… кровь в капиллярах. Это явление называется вакуумная декомпрессия.

Ты не взорвёшься, как в плохом sci-fi, но… продержаться больше пары минут — нереально.


Почему так мало давления?

  • На Марсе почти нет атмосферы.

  • Там всего около 600 Паскалей, против земных 101 000.

  • Воздух — разреженный углекислый газ, который не способен ни удержать тепло, ни защитить от космической радиации.


Интересный факт:

Чтобы человек мог выйти на поверхность Марса без скафандра, атмосфера должна быть утолщена примерно в 50–100 раз. Теоретически — можно создать купол, накачать его воздухом… но это уже уровень колонизации.


В телеграм-игре Mars Frontier , которую я делаю вместе с увлеченными коллегами, игроки не умирают без скафандров 😄
Но тема выживания, ресурсного ограничения и атмосферы — в прямом смысле задаёт тон. Сейчас мы тестируем механику бурения, а в будущем — возможно, и систему жизнеобеспечения в суровых зонах.

Марс не прощает ошибок. Даже в игре.

Показать полностью
2

Как мы делали мини-игру про ровер на Марсе внутри Telegram WebApp

«Хочется сделать простую карту, чтобы листать её в Telegram». С этого всё и началось. А закончилось — изометрическим движком, авторизацией по WebApp, системой энергии, покупкой участков и боевым ровером с шестью колёсами.

🚀 С чего всё началось?

В начале всё было очень просто.
Мы сделали простенького бота, о котором я уже как-то тут писал, и бэк рендерил картинки с кусочком карты, где ты находишься.

В целом, даже эта идея была вполне рабочей и первые 300 пользователей с разных источников легко собрались. Мы даже провели на 9 мая конкурс "найди звезду победы" и выплатили победителю небольшой приз :)

Но само собой, что бот - не предел мечтаний, нужно было пилить полноценный мини-апп.

На боте лишь проверили гипотезу, отладили механики, типа уменьшения энергии, подзарядки аккумулятора в течении времени, пока не заходишь в игру.

Первый шаг в сторону мини-аппки - сделали вебстраничку, где можно было листать мышкой или пальцем — просто ради визуализации. Прямоугольная сетка, тайлы, немного стилей. Telegram WebApp проглатывал HTML5 на ура. Тогда не было никакой логики, просто подгрузка текстур и картинка под пальцем.

Вот как это выглядело:

  • Пользователь заходил и видел карту Марса.

  • Никакого взаимодействия — только “глянуть”.

🎮 А потом захотелось интерактивности

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

вот краткое и понятное объяснение, как строится изометрическая карта из квадратных тайлов:


🧠 Основная идея:

Каждый квадратный тайл поворачивается на 45° и масштабируется по вертикали, чтобы получился ромб (изометрическая проекция). Вместо привычной сетки (x, y) мы рассчитываем экранные координаты (left, top) по формуле:


📐 Формулы для отображения:

При размере одного тайла T:

  • W = T * sqrt(2) — изометрическая ширина (диагональ квадрата).

  • H = W / 2 — изометрическая высота (высота ромба).

  • WX2 = W / 2, HX2 = H / 2 — половинки для смещения от центра.

Переход от логических координат (dx, dy) к пиксельным:

isoX = (dx - dy) * WX2 + centerX; isoY = (dx + dy) * HX2 + centerY;


🧩 Что это даёт:

  • (dx - dy) — смещает тайл по горизонтали.

  • (dx + dy) — смещает тайл по вертикали.

  • centerX, centerY — центр экрана, чтобы карта строилась относительно игрока.


🎯 В результате:

  • Из обычной квадратной сетки (x, y) формируется ромбовидная карта, где видны и горизонтальные, и вертикальные соседние тайлы.

  • Центральная клетка (текущий игрок) — всегда по центру, а остальные располагаются вокруг.

    Ну а дальше уже дело техники - придумали алгоритм перемещения в 8 направлениях: вверх, вниз, влево, вправо, плюс диагонали.

    Подключили ранее обкатанный в чатботе расход энергии за каждый шаг, и разный расход за диагональные движения, в сравнении с линейным. Плюс небольшой рандом :)

    Задали запреты на воду, скалы и занятую клетку, чтобы не было “читов”.

🔐 Само собой - авторизация

Чтобы пользователь не “прыгал” по чужим роверам и участкам, мы внедрили Telegram WebApp InitData (это такая строка с хешем, которую фронт передает нам в бэк, а мы - уже на сервере телеграм с токеном бота валидируем подпись. Если сошлась - то пользователь зашел к нам через телегу. Если нет - скорее всего он просто открыл веб-страницу как сайт, или что-то пытается поломать, подделать :)

Если кратко:

  • Telegram сам отдаёт токен с подписью.

  • Мы проверяем подпись на бэке по HMAC SHA256.

  • Получаем ID пользователя, сохраняем его в сессии.

Теперь всё честно: ровер – только твой, кристаллы – только твои.

🪐 Стало красивее: добавили кристаллы и рамки

Потом появились:

  • Кристаллы на клетках — можно собирать.

  • Подсветка клеток: белая рамка — твоя, красная — чужая.

  • Имена владельцев, чтобы было видно, кто что захватил.

    В планах: Покупка участков за кристаллы. Это было в текстовом боте. И ползая по карте, даже видны купленные тобой (белым) и оппонентами (красным) участки.

⚡️ Оптимизация и загрузка ассетов

Мы поняли, что каждая картинка может тормозить игру на слабом устройстве, и:

  • Добавили прелоадер, который подгружает PNG-шки перед игрой.

  • Сделали показ спиннера на любом действии (движение, загрузка).

  • Кэшируем тайлы и обновляем только при движении.

🤖 Как выглядит сейчас

Игрок:

  • Заходит в Telegram Mini App.

  • Авторизуется за доли секунды.

  • Видит изометрическую карту с ровером, кристаллами, участками, рекламными баннерами.

  • Может двигаться по клеткам, собирать кристаллы (в будущем - бурить и находить ресурсы, торговать ими, покупать землю).

А мы — всё это рисуем прямо в DOM.
Никаких Canvas, WebGL, или тяжелых движков. Только HTML, CSS и немного магии на JS.


💬 Если интересно — покажу, как это выглядит вживую.
Тестить можно тут. А если зайдёт — добавим NFT, фермы и квесты на выживание 😄

Показать полностью 3
62

Самая высокая гора в Солнечной системе — и она не на Земле

Многие удивляются, но высочайшая гора в Солнечной системе — не Эверест, а Олимп (Olympus Mons), расположенный на Марсе.

Самая высокая гора в Солнечной системе — и она не на Земле Опрос, Gamedev, Космос, Разработка, Программирование, Марс, Telegram, Наука, Факты

Это не просто гора — это гигантский потухший вулкан, возвышающийся над поверхностью почти на 22 километра. Для сравнения:

  • Эверест — 8,8 км,

  • А Олимп — 21,9 км, если измерять от подножия до вершины.

Диаметр основания Олимпа — около 600 км, то есть он бы закрыл всю Францию, если его поставить в центре Европы.


Почему он такой огромный?

На Марсе нет тектонических плит, как на Земле. Вулканы там могут извергаться в одной и той же точке миллионы лет подряд, не «съезжая» со своего источника магмы.
Из-за этого Олимп мог расти бесконечно, пока не остыл.

Кроме того, марсианская гравитация — в 2,5 раза слабее земной, поэтому даже такие циклопические массы породы не «сползают» под собственным весом.


А если бы подняться на него?

  • Подъём занял бы дни, а не часы: склоны пологие, но огромные по протяжённости.

  • На вершине атмосферы почти нет — давление настолько низкое, что вскипела бы ваша слюна.

  • И да, там могут быть облака из замороженного углекислого газа, потому что температура может опускаться до –120 °C.


P.S. Почему мне интересен Марс?

Наверное, как и у многих, это началось с фотографий: пыльные дюны, кратеры, пустота — и при этом такое притяжение. На Земле нет ничего настолько чужого и одновременно настоящего. Потом — документалки, статьи про NASA, фото с Perseverance и те самые голубые марсианские закаты.

А дальше захотелось не просто читать. Хотелось поучаствовать. Даже если не всерьёз, хотя бы на уровне модели. Так и появился наш проект — Mars Frontier , Это не космосим и не очередная «ферма» в телеграме :) Это попытка превратить карту Марса в игровую среду, где можно что‑то построить, что‑то исследовать, найти ресурсы, купить участок.

Так что если вы, как и я, залипаете на темы про Марс — присоединяйтесь. Это просто хобби, но хобби, которое растёт. Как сама гора Олимп.

Марс суров, но удивителен.

Хотели бы Вы побывать на Марсе?
Всего голосов:
Показать полностью 1
3

Как мы добавили «Звезду Победы» за 15 минут на игровую карту

Как мы добавили «Звезду Победы» за 15 минут на игровую карту Python, Разработка, Игры, Telegram, Программирование, Telegram (ссылка), Длиннопост

В честь 9 мая мы решили устроить мини-ивент: на карте появился один уникальный участок, на котором спрятана «звезда Победы». Кто первым найдёт и встанет на неё — получает приз.

Сделали это без новых моделей, миграций или «ивентового движка». Просто добавили одну строку в базу и использовали то, что уже работало — систему собственности тайлов и отрисовку кастомных текстур.

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


🧱 Что у нас уже было

Каждый участок карты может принадлежать игроку. Собственность хранится в таблице properties, с координатами x, y, ID владельца и (опционально) кастомным изображением.

Вот как мы это обрабатываем в Python (условный пример с использованием SQLAlchemy + Pillow):

tile = db.query(Property).filter_by(x=x, y=y).first() if tile: if tile.user_id == current_user.id: draw_border(img, dx, dy, color='green') else: draw_border(img, dx, dy, color='red') if tile.picture: texture_path = f"./pictures/adv/{tile.picture}" overlay_texture(img, dx, dy, texture_path)

🔹 draw_border() — функция, которая рисует обводку на изображении.
🔹 overlay_texture() — поверх накладывает PNG-текстуру на указанный тайл.


⭐ Что мы добавили для конкурса

1. Загрузили изображение
Файл star.png размером 64×64 положили туда же, где лежат остальные кастомные текстуры.

2. Добавили участок в базу
Просто внесли вручную запись в таблицу properties, где user_id равен 0 (свободный тайл), и picture = 'star.png'.

INSERT INTO properties (x, y, user_id, picture) VALUES (234, -112, 0, 'star.png');

3. Никакой дополнительной логики отрисовки не потребовалось — всё уже умело показывать кастомную текстуру на карте, если такая есть.


🏆 Как определяется победитель

На каждом шаге игрока мы проверяем: не оказался ли он на «звёздном» тайле? Если да — проверяем, не занят ли приз. Если свободен — фиксируем победу:

STAR_COORDS = (234, -112) if (player.x, player.y) == STAR_COORDS: tile = db.query(Property).filter_by(x=234, y=-112).first() if tile and tile.user_id == 0: tile.user_id = player.id db.commit() notify_winner(player)

🟢 Всё. Победитель найден, деньги уходят, лог сохраняется, сообщение в канал готовится.


⚙️ Почему это было просто

Потому что:

  • У нас уже были гибкие свойства у тайлов, включая кастомные текстуры.

  • Уже существовала система проверки координат и принадлежности.

  • Мы сделали только одну вставку в базу, и один блок условий в обработчике движения.

  • Сам конкурс получился таким: https://t.me/terry_game_official


💡 Вывод

Это отличный пример, когда достаточно гибкая внутренняя архитектура позволяет внедрять геймплейные фишки буквально за пару минут — без костылей и трудоемкости.
Один PNG, одна строка в базе, один if. Ивент — готов.

P.s. игроки до сих пор ищут клад :) Энергия не позволяет разом пройти большое расстояние на карте, требуются остановки для подзарядки ровера.

Показать полностью 3
6

«Куда посадить игрока» на бесконечной карте— минизарисовка из продакшна геймдева

«Куда посадить игрока» на бесконечной карте— минизарисовка из продакшна геймдева Опрос, Gamedev, Разработка, Алгоритм, Программирование, Telegram (ссылка), Длиннопост

Пока все обсуждают, как глушат мобильную связь и GPS, моя голова занята навигацией, но совсем другой... Хотя при том не менее интересной. Сегодня хотел бы поделиться, как игра адаптирует свою карту с увеличением числа игроков. Конечно, можно было бы предусмотреть разбивку на "сервера", "комнаты". Но изначально хотелось общую единую карту.

Проблема единой карты в том, что если она будет фиксированного размера, то в зависимости от числа игроков она будет либо слишком просторной и скучной, либо слишком тесной.

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

1. Стартовый «квадрат»

  • Координаты карты бесконечны (можно уйти в –12 000, 10 348 — не вопрос).

  • Первый игрок рождается в центре (0;0).

  • Далее берём квадрат N × N вокруг нуля, куда и бросаем новичков случайно.

  • N растёт: каждые 500 новых аккаунтов мы увеличиваем половину стороны ещё на 100 тайлов.

    • 1–500 игроков → диапазон ±50

    • 501–1000 → ±150

    • дальше по формуле: spawn_radius = 50 + ⌈players/500⌉ * 100

Так мы поддерживаем плотность: пока людей мало — все рядом, позже прямиком в пустыню не улетают, но столпотворения тоже нет.

Да, скажете вы - при таком алгоритме у нас всегда попадает что-то центральное в эту зону чаще, и максимальная плотность будет около центральных координат. С одной стороны, вы будете правы - с другой, после спавна игроки расползаются :)) как тараканы.

Вот как выглядела эволюция карты при увеличении числа игроков:

стадии роста масштабов расползания игроков, белые квадраты - это купленные игроками земли


2. Баланс ресурсов
Карта пустая без кристаллов скучна, но «засыпать» её нельзя. Поэтому:

кристаллы_за_час = base_rate * online_players

  • base_rate ≈ 0,04 (подбирали эмпирически).

  • Респавн равномерный, но со случайным смещением, чтобы рядом не появлялись две одинаковые жилы подряд.

  • Если онлайн падает — генерация тоже замедляется: сервер не забит «мертвыми» ресурсами.


3. Диагональное движение
Поначалу был только крест: N/S/E/W. Пара тестеров застряли в симпатичном, но безысходном каньоне (координаты ‑23; ‑17). Добавили шаги NE, NW, SE, SW.
Результат:

  • плотность «тупиковых жалоб» упала < 0,1%

  • средняя длина пути до первой жилы сократилась примерно на треть (игроки теперь режут угол).


Вывод: растущий квадрат + пропорциональный респавн + диагонали держат карту живой и игрока — в движении, а сервер — без лишних процедур расчистки.

Тестовый чат-ботик в Telegram: https://t.me/terry_game_bot?start=4

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

Для тех - кому лень писать коммент
Всего голосов:
Показать полностью 4 1
1

5 живых Telegram-игр с экономикой и «добычей» на май 2025-го

(без «хомяков» и давно спящих ферм)

5 живых Telegram-игр с экономикой и «добычей» на май 2025-го Заработок в интернете, Стратегия, Криптовалюта, Биткоины, Telegram

конечно, картинка с определенной долей сарказма - просто "тапалки" уже давно не в моде.. Сейчас хайп на вещи немного посложнее и поинтереснее по логике и стратегии внутри..


Дисклеймер - я не привожу ссылки на проекты, ибо у меня не стоит целью пиарить свои рефералки :) И вообще - мое видение этого своеобразного "топ-5" может отличаться от любого другого топа ))

Дисклеймер 2: если у вас не было опыта заработка на подобных играх, пожалуйста, будьте вежливы в комментариях, не нужно писать "все эти игры - туфта, никто ничего не получил", так как было много и обратных примеров, и я и члены моей семьи, и многие увлеченные друзья хорошо зарабатывали, по 10-15 тысяч рублей с одного аккаунта в телеграм. Всему хайпу сильно "подгадил" хомяк, который ничего никому не дал, но давайте не будем из-за хомяка мыслить стереотипно на всю индустрию )) Это скорее личная просьба. Заранее всем спасибо!

1. TapSwap

Механика проста: тапаем кнопку, собираем виртуальные «токены», потом меняем их на внутреннюю валюту биржи. Фишка 2025‑го — бот регулярно выпускает «пулы» с лимитом по времени: успел‑залил, получил повышенный курс. Отчёты о выплатах свежие, чат живой.

2. Yescoin

Вместо тапов — свайп: монетку надо «протянуть» по экрану, собирая комбо. За собранные цепочки дают бонус‑очки, которые капают даже в офлайне. Раз в неделю открывается «рынок», где эти очки можно обменять на апгрейды, ускоряющие фарм.

3. PixelTap

Мини‑игра формата «пиксельная шахта». Копаем блоки, собираем руду трёх редкостей, из неё крафтим инструменты и продаём на чате‑аукционе. Разработчики в апреле подвезли обновление с авто‑бурильщиками и сезонными квестами, так что онлайна хватает.

4. Space Miners

Idle‑симулятор шахты на орбите астероида. Строим буровые платформы, улучшаем роботов, выводим добытый «космический камень» на внутриигровую биржу. Интересна механика кооператива: можно объединяться в гильдии и шарить бонусы скорости, если все участники заходят каждый день.

5. Mars Frontier (бета)

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


💬 Что ещё живого с экономикой и стройкой видите в Telegram в этом году? Делитесь названиями — пополним список.

Показать полностью 1
3

Куда делись все эти «тапалки» в Telegram?

В прошлом году Telegram буквально разорвало от так называемых тапалок — простых игр, где надо бесконечно нажимать кнопку и собирать монетки, бонусы, «хомяков», фрукты, токены, что угодно. Кто-то даже реально выводил с этого деньги (ну, копейки), кто-то просто залипал, как в idle-игры.

🟡 На пике многие из таких игрушек собрали десятки миллионов пользователей (вопрос- сколько из них - живые, остается открытым :) Telegram-боты с элементами крипты и доната стали новой экосистемой.

Но что сейчас?


⚙️ Что стало с волной?

  1. Ажиотаж спал. Новые «тапалки» выходят, но уже не дают тот же взрывной эффект. Люди подустали от бесконечных кликов за крошки и обещаний «вот-вот залистимся».

  2. Игроки стали избирательнее. Сейчас чаще спрашивают: «А у вас что нового?», «Какой геймплей, кроме тапа?», «NFT? Нет, спасибо». Просто монетку за клик — уже не прокатывает.

  3. Началась сегментация. Кто-то ушел в фермы и симуляторы, кто-то делает RPG-квесты, кто-то интегрирует реальные бренды и товары (типа «отскань чек и покорми монстра»).

  4. Некоторые игры исчезли. И вместе с ними — токены и надежды отдельных игроков. Не все пережили хайп. Случаи «тапалка-схлопнулась» встречаются всё чаще. Урок: не храните «хомяков» в одном боте.


🧠 Что интересного происходит?

  • Появились боты, где геймплей строится вокруг привычек и задач, а не только «покликай и забудь».

  • Разработчики тестируют сложные механики: рынки, крафт, автоматизация — уже ближе к настоящим стратегиям.

  • Telegram сам продвигает формат Web App — полноценные мини-приложения прямо в чате. Это уже почти не бот, а маленькая игра внутри Telegram.


📉 Telegram-игры умерли?

Нет. Они перешли в стадию взросления.

Первые были, как «лихие 90-е»: хаос, раздачи, мемы, заработки. Сейчас — этап фильтрации и развития. Кто-то отвалился, кто-то делает крутые штуки. Тапалка как жанр не умер, но теперь она должна быть умной, красивой и не врать.


🤔 А вы залипали в этих Telegram-играх? Что вспоминается — «прикольно» или «больше никогда»?

Показать полностью
Отличная работа, все прочитано!