🌌

Galaxy

Многопользовательская пошаговая стратегия в Telegram

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

🚀 Начать игру в Telegram

@galtgbot

📖 Справка

Полные правила игры. Открой нужный раздел.

🎯 Цель игры
Galaxy — пошаговая стратегия про колонизацию галактики. Каждый игрок начинает с одной планетой-хоумволдом и одним шаблоном корабля 'scout'. В конце игры выживает тот, кто сумел расти быстрее и удержать своё. Победить можно двумя путями: • Полное доминирование — все остальные игроки выбыли (их планеты захвачены, флоты уничтожены). • Победа по очкам — к моменту завершения сессии (max_turns или досрочно по условию) у тебя больше всех счёт. Счёт считается каждый ход и равен сумме (население + индустрия + материал) по всем твоим планетам и в трюмах всех твоих групп. Лидерборд обновляется по итогам каждого хода — следи в /score. Сессия закрывается, когда остался один живой игрок, либо когда вышли все ходы (max_turns). Итоги фиксируются в глобальный лидерборд /leaderboard навсегда.
🌌 Планеты
Каждая планета описывается четырьмя ресурсами и двумя характеристиками среды: Ресурсы: • 👥 Население — главная производственная сила. Растёт каждый ход, скорость зависит от того, насколько температура и гравитация близки к 50. У каждой планеты есть свой жёсткий потолок населения size × 1 млн, где size — фиксированный атрибут планеты (генерируется случайно в диапазоне 100..1000). Когда население упёрлось — рост останавливается. Дополнительно население даёт потолок индустрии: industry на планете не может расти выше pop_units (где 1 ед. = 1 млн жителей). И добавляет «бонус» к пулу производства за ход — см. раздел Производство. • 🏭 Индустрия — основа пула производства за ход. Каждый билд тратит из пула. Сама индустрия растёт только через очередь, и не выше потолка от населения. • 📦 Материал — сырьё для построек. Это «забанканный пул»: 1 пул ⇄ 10 материала, без потерь. Движок сам чеканит материал под крафт из пула, так что производство не встаёт из-за пустого склада. У каждой планеты есть жёсткий потолок хранилища max_material (генерируется в диапазоне 100..1000, виден как второе число 📦 N/M). Потолок ограничивает только накопление запаса, не производство за ход. Материал можно возить транспортом на другие планеты. • 🏗 Очередь производства — задаётся через /produce. Что не успели построить — переносится на следующий ход. Среда (фиксирована при генерации): • 🌡 Температура 0..100, оптимум — 50. • ⚖️ Гравитация 0..100, оптимум — 50. Чем дальше от 50 — тем медленнее растёт население. Хоумворлды генерируются близко к оптимуму, прочие планеты могут оказаться экстремальными — на них население упирается в низкий потолок (и значит индустрия тоже), но они нужны как форпосты. Список своих планет — /planets, карточка конкретной — /planet_<id>.
🏭 Производство
На каждой своей планете ты задаёшь очередь: что строить. Каждый ход движок строит из очереди, пока хватает пула производства. Материал под крафт чеканится из пула автоматически, поэтому ручное чередование «материал-корабль-материал» больше не нужно — порядок позиций ни на что не влияет (кроме дележа остатка между max-позициями). Пул производства за ход: pool = industry + max(0, pop_units − industry) / 4 Где pop_units = миллионов жителей на планете (округление вниз). Каждый билд снимает с пула industry-стоимость (см. ниже). Пул восполняется в начале каждого хода. Industry — это перманентный стат, не расходник. Постройка корабля или материала не уменьшает industry — она тратит только пул и материал. Думай об industry как о фабриках: фабрика не исчезает после того, как произвела ракету. Это значит: • Население участвует в производстве напрямую: даже если индустрия маленькая, миллионы жителей дают четверть своей величины как «бонус» к пулу. • Industry в 4 раза эффективнее за единицу: каждая ед. industry даёт +1 к пулу, каждый pop_unit без industry — только +0.25. Поэтому имеет смысл вкладывать материал в industry: один раз потратишь 5 mat и +1 industry будет давать +0.75 пула каждый ход поверх «сырого» населения. • Индустрия не может расти выше pop_units — потолок жёсткий. Чтобы расширить производство выше — сначала вырасти население. • На пустой планете (industry=0) можно бутстрапить себя за счёт населения: pop_units=100 даёт pool=25, этого хватит, чтобы поставить первые индустрии. Типы позиций:индустрия — расширить производственную мощность. Стоимость: 1 пул + 5 mat (mat движок добывает сам из пула, если на складе нет). Если industry ≥ pop_units — заблокировано (нужно сначала растить население). • материал — явно отложить сырьё в склад. Стоимость: 1 пул → +10 mat. Обычно достаточно цели склада «полный» (см. ниже) — отдельная позиция нужна редко. • корабль по твоему шаблону — указывай имя шаблона. Стоимость одного корабля: (drive+weapons+shields) пула + (5×(drive+weapons+shields) + cargo) материала (материал чеканится из пула). • max — позиция занимает весь остаток пула за ход (динамически, не фиксированное число). Например, «корабли X · max». Цель склада (что станет со складом в конце хода):сохранить (по умолчанию) — склад остаётся как есть; крафт кормится свежим пулом. • полный — остаток пула докидывает склад до потолка, запас не тратится. Так делается «max кораблей, но склад в конце полон». • в ноль — разрешает тратить накопленный склад на крафт сверх пула этого хода (бёрст: успеваешь больше за ход). Примеры расчёта стоимости корабля:/ship_3_1_1_50_Scout (d=3, w=1, s=1, c=50): пул = 3+1+1 = 5, материал = 5×5 + 50 = 75. • /ship_1_3_2_5_Hunter (d=1, w=3, s=2, c=5): пул = 1+3+2 = 6, материал = 5×6 + 5 = 35. • /ship_1_1_1_500_Transport (d=1, w=1, s=1, c=500): пул = 1+1+1 = 3, материал = 5×3 + 500 = 515. (Транспорт дешёвый по пулу, но трюм гонит material наверх.) Как редактировать: • Кнопочный билдер: на карточке планеты — «📝 Производство». Открывает текущую очередь из БД, можно добавить/удалить позиции и сохранить. • Текстом: /produce_<planet_id>_<item>_<count|max>_...[_keep|full], где itemindustry, material или имя ship-шаблона; max занимает весь остаток пула; в конце можно указать цель склада full/keep. Пример: /produce_42_industry_5_falcon_max_full. Что важно знать: • Невыполненное переносится на следующий ход — переписывать очередь каждый ход не нужно. • Пустая очередь = планета не строит ничего. Индустрия и материал на ней не растут сами по себе — без приказа industry/material запасы стоят на месте. Растёт только население (отдельная фаза, зависит только от температуры и гравитации). • Текстовая команда /produce заменяет очередь целиком. Кнопочный билдер догружает текущую и сохраняет результат — менее опасный путь.
🛸 Корабли
В Galaxy ты сам проектируешь корабли. Это делается через шаблоны (ship templates). Перед тем как заказать корабль на планете — нужно создать шаблон. Команда: /ship_<drive>_<weapons>_<shields>_<cargo>_<name> Параметры: • drive — двигатель. Скорость в полёте = drive² клеток за ход. Также определяет радиус скана у групп. • weapons — оружие. Шанс попадания в бою = weapons² / (weapons² + shields² цели). • shields — щиты. Снижают шанс попадания врага (см. формулу выше). • cargo — трюм. Вместимость на один корабль; используется для перевозки населения, индустрии и материала. • name — имя класса (произвольное, латиница/кириллица, до 24 символов). Ограничения: • Значения drive/weapons/shields не могут превышать твой текущий уровень соответствующей технологии. • Cargo не зависит от технологий, но удорожает корабль. Примеры:/ship_3_1_1_50_Scout — быстрый разведчик с большим трюмом. • /ship_1_3_2_5_Hunter — боевой фрегат. • /ship_1_1_1_500_Transport — тяжёлый транспорт. Список шаблонов — /ship_list. Команда /ship без параметров покажет справку. Удалить шаблон, по которому уже построены корабли, нельзя.
🚀 Перемещение
Минимальная единица движения — группа: стая кораблей одного шаблона в одной точке. Скорость и дальность: • За один ход группа перемещается на drive² клеток (drive=2 → 4 клетки, drive=3 → 9). • Расстояние между точками — евклидово: √(Δx² + Δy²). Move-picker показывает Δ для каждой видимой цели и сразу оценку «≈N ходов». • Если до цели больше, чем drive² — группа летит несколько ходов; на промежуточных клетках она «в пути» и видна сканом на трассе. Приказы: • /move (через карточку группы → 🛬 Куда) — лететь к планете в зоне видимости. • split / merge — поделить или слить группы одного класса в одной точке. • load / drop — погрузка/выгрузка ресурсов (только над своей или нейтральной планетой). Cargo: Вместимость группы = cargo шаблона × количество кораблей. Перевозить можно индустрию, материал и население (1 млн жителей = 1 единица cargo). Потолки при выгрузке: Выгрузить на планету больше, чем она может принять, нельзя — drop отклоняется по тем же потолкам, что и производство: население ≤ size × 1 млн, индустрия ≤ pop_units, материал ≤ max_material. Кнопки «Max» уже учитывают свободное место на планете, так что вручную считать не нужно. Излишки оставь в трюме или вези на другую планету. Зачем нужно возить:Бутстрап новой колонии. Индустрия и материал на планете не растут сами по себе. Свежезахваченная планета остаётся с 50% индустрии — этого может быть мало для быстрого старта. Привезти стартовый запас индустрии/материала транспортом — быстрее, чем поднимать с нуля. • Поднять потолок производства на форпостах. Industry не может расти выше pop_units (см. Планеты). На планете с экстремальной температурой/гравитацией население почти не растёт само — значит и потолок индустрии низкий. Десантировать туда население транспортом — единственный способ поднять потолок. • Концентрация ресурсов. Перебросить материал с тыловой планеты на фронтовую с большим пулом — там за ход построится больше флота. • Спасение империи. Игрок выбывает только если у него 0 планет И 0 транспортов с населением в трюме (см. Победа и счёт). Пока есть хотя бы один транспорт с населением — ты жив, даже без планет. • Сохранение очков. Cargo учитывается в счёте: индустрия и материал в трюме идут по 1:1, население — по 0.001 за единицу. Ресурсы в полёте не пропадают из подсчёта. Захват планеты — это присутствие твоей группы на её орбите при отсутствии живых врагов: на фазе capture планета переходит к тебе. Десантировать население дополнительно не нужно — но при захвате чужой остаётся только 50% населения и 50% индустрии.
⚔️ Бой
Бой начинается автоматически, когда в одной точке встречаются группы враждебных игроков (не союзников). Просчитывается во время хода, после движения и до захвата планеты. Раунды: В каждом раунде каждый живой корабль стреляет один раз по случайной цели из вражеского флота. Шанс попадания одного выстрела: P = weapons² / (weapons² + shields²) Где weapons — у атакующего корабля, shields — у цели. Попадание уничтожает корабль (HP=1 в classic-режиме). Бой длится, пока среди живых кораблей остаётся хотя бы одна пара врагов (не союзников). Как только все уцелевшие — союзники друг другу (или остался один игрок), бой прекращается. Жёсткий предел — 20 раундов: если за это время никто не победил, оставшиеся расходятся. Логи: После каждого боя ты получаешь короткое событие в /events со ссылкой на полный лог (/log_combat_<id>). Полный лог — кнопка «🌐 Открыть в браузере» открывает Telegram WebApp с пораундовым реплеем: видно, кто кого подбил и в каком раунде. Захват планеты: После боя планета достаётся тому из присутствующих на орбите игроков, у кого больше всего кораблей. Но есть оговорки для альянсов: • Если среди присутствующих есть сам владелец — планета остаётся за ним. Союзники не отбирают планеты друг у друга, даже если кораблей у союзника больше. • Если на орбите несколько не-союзных игроков и бой по какой-то причине не разрешил конфликт — захват пропускается, планета остаётся за прежним владельцем до следующего хода. При захвате чужой планеты сохраняется 50% населения и 50% индустрии, материал остаётся целиком, очередь производства сбрасывается.
🔬 Исследования
У каждого игрока — три направления технологий, по одному фокусу за раз: • 🚀 drive — двигатель. Влияет на скорость кораблей (drive²) и радиус сканирования. • ⚔️ weapons — оружие. Шанс попадания. • 🛡 shields — щиты. Защита. Как растёт: Каждый ход твоя суммарная индустрия добавляет очки в текущий tech-фокус (выбирается через /tech). Очки накапливаются; когда их хватит — уровень технологии повышается на 1. Порог для перехода на уровень L: L² × 100 очков. То есть 1→2 — 100, 2→3 — 400, 5→6 — 2 500. Максимум — 100. Переключение фокуса: Меняется мгновенно через /tech (не требует ожидания хода). Накопленные очки текущего направления не теряются — просто перестают расти, пока ты не вернёшься. Влияние: • Уровень технологии действует на новые корабли при постройке. Уже построенные сохраняют старый уровень — не апгрейдятся. • Новый шаблон корабля можно создать с уровнями не выше текущих технологий.
👁 Сканы и туман войны
Ты видишь только то, что попадает в радиус сканирования твоих планет и групп. Что видишь:Свои планеты — всегда полностью. • Чужие планеты в зоне скана — координаты, владелец, видимый счёт. Внутренности (точные ресурсы, очередь, орбита) — нет. • Вражеские группы в зоне скана — координаты, владелец, класс, направление полёта (если в пути). • Союзники — делятся скан-картой автоматически. Ты видишь всё, что видят они. Радиус сканирования:Планеты — фиксированный радиус 5 клеток (не зависит от технологий). • Группы кораблей — радиус зависит от drive шаблона: ceil(drive × 1.4). То есть drive=1 → 2, drive=2 → 3, drive=3 → 5 клеток. Группа сканирует и в полёте — это полезно для разведки. Туман войны: • Планета, которую ты видел раньше, но сейчас вне скана — отображается в последнем известном состоянии, помечена как «устаревшие данные». • Планета, которую ты ни разу не видел, — '?' на карте. • Бывшие свои планеты после потери — устаревший снимок. Активный скан планеты — /scan_<id> — единичная команда, дающая полные данные о цели, если она в радиусе.
🤝 Альянсы
Альянс — двусторонний договор о ненападении и обмене сканом. Как заключить: 1. Игрок A: /ally_<id_B> — отправляет предложение. 2. Игрок B получает уведомление с кнопками «✅ Принять / ❌ Отклонить». 3. После принятия — альянс активен. Что даёт альянс: • Группы союзников не атакуют друг друга при встрече. • Каждый видит сканы другого автоматически. • Группы могут садиться на одну планету без боя. Что НЕ даёт: • Общий счёт — нет, каждый сам за себя. • Передача планет или ресурсов — отдельно через транспортные группы (load/drop). • Общая победа — её просто нет, в финале победитель один. Разрыв: Любая сторона может разорвать альянс в одностороннем порядке через /unally_<id>. После разрыва вы — обычные враги, можете атаковать друг друга со следующего хода. Лимит: Жёсткого лимита на число альянсов нет — но помни, что общая победа невозможна, рано или поздно союз придётся разорвать.
💬 Сообщения
Внутриигровой чат: можно писать любому игроку в текущей сессии. Как написать: • Через билдер: ⚙️ Меню → 💬 Сообщения → ✍️ Новое — выбрать получателя из списка, ввести текст. • Текстом: /message_<id> — следующая твоя обычная реплика пойдёт адресату. • Из карточки профиля: /profile_<id> → «💬 Написать». Лимиты и правила: • До 30 сообщений в час на игрока. Лимит общий, не на адресата. • Длина сообщения — до 500 символов. • HTML удаляется (теги вырезаются). • Ссылки удаляются (любые http(s)://, t.me/, telegram.me/ и др.). • Markdown не интерпретируется — спецсимволы экранируются. Mute: Не хочешь получать чьи-то сообщения — /mute_<id>. После этого его сообщения тебе не приходят. Mute односторонний: отправитель не узнаёт, что замьючен — для него отправка проходит «успешно». /unmute_<id> — снять. Список замьюченных — ⚙️ Меню → 🚫 Муты.
🏆 Победа и счёт
Формула счёта: score = Σ(population_k + industry_k + material_k) по всем своим планетам + Σ(cargo_value_k) по всем своим группам в полёте Где cargo_value = индустрия + материал + (население в трюме × 0.001). Когда обновляется: Каждый ход после фазы scoring. Видеть текущий счёт всей сессии — /score. Условия завершения сессии: • Остался один живой игрок — сессия закрывается, он автоматически победитель. • Достигнут max_turns — сессия закрывается, побеждает игрок с наибольшим счётом. • Все игроки выбыли (теоретически невозможно, но проверка есть) — сессия закрывается без победителя. Что значит «выбыть»: У игрока 0 планет И 0 кораблей-транспортов с населением в трюме. Если есть хотя бы один шанс восстановиться (есть транспорт с населением) — игрок жив. Лидерборд: По итогам сессии данные попадают в глобальный /leaderboard: сколько сессий сыграно, сколько выиграно, средний счёт. Это перманентно. Команда /score покажет текущий счёт всех игроков в твоей сессии.
Расписание ходов
Ход просчитывается строго по расписанию сессии — в фиксированные часы, указанные в анонсе и параметрах сессии. Не зависит от того, сколько игроков успели подать приказы. Время указывается по UTC, просчёт хода запускается в начале часа (в 0 минут). Когда стартует сессия: В первый слот расписания на указанную дату. Этот момент = генерация галактики; первый ход (№1) считается в следующий слот расписания. Что происходит, если ты не успел: Ничего. Твоя империя «спит»: новые приказы не подаются, но уже стоящие — выполняются. Очередь /produce не сбрасывается. Технологии растут. Корабли в пути долетают. Когда подавать приказы: Любое время между ходами. Подал /produce, передумал, подал ещё раз — второй заменит первый. Порядок просчёта хода: Каждый ход стадии идут в фиксированном порядке, в одной транзакции: 1. Применяются мгновенные приказы: смена tech-фокуса, переименования, очередь /produce пишется на планету, /move задаёт цель группе, split/merge. 2. Растёт население. 3. Производство: из очереди /produce реально собираются индустрия, материал и корабли — новые корабли встают на планету. 4. Технологии: растёт tech_progress, повышаются уровни drive/weapons/shields. 5. Движение: группы с заданной целью двигаются — стартуют, летят дальше или прибывают. 6. Бой: во всех точках (планетах и координатах), где встретились группы не-союзных игроков, идёт сражение. 7. Захват планеты: если после боя на планете остались корабли только одного игрока и он не текущий владелец — планета меняет хозяина. 8. Считается видимость: что разведано, какие планеты «открыты». Идёт после захвата — поэтому планета, взятая в этот ход, сразу даёт обзор вокруг себя. 9. Считается счёт, проверяется выбывание и условие конца сессии. Что это значит на практике:Производство идёт до движения и боя. Если к тебе летит вражеский флот — корабли, которые ты ставишь в /produce этим же ходом, успеют построиться и вступить в бой за тебя. • Тех-апгрейд этого хода не помогает свежим кораблям. Производство (3) считается раньше research (4): корабли строятся со старыми уровнями. Новые уровни оружия/щитов применятся к следующей партии. • /move задаёт цель в начале хода, реальное движение — позже. Если твоя группа успевает долететь за один ход (drive² ≥ дистанции до цели), она уйдёт ещё до боя. Если не успевает — стартует, но останется в пути и попадёт в бой там, где встретит врага. • Захват только после боя. Вражеский флот, прилетев на твою планету, не отнимает её мгновенно: сначала разруливается бой, и только если в орбите остался один игрок — планета сменит владельца. Когда узнаёшь о результате: Сразу после просчёта — бот пришлёт отчёт хода: что произошло, какие события (бои, прибытия, разведка), как изменился счёт. Полный список событий — /events. Когда ход: Команда /turn покажет, через сколько времени следующий ход.