Техническое задание - Space-Lords-TG/docs GitHub Wiki

1. Предисловие

В данном документе курсивом выделено всё то, что не входит в MVP. Всё остальное же – входит.

1.1 Глоссарий

  1. MVP (Minimum Viable Product) – минимально жизнеспособный продукт, который включает только основные функции, необходимые для запуска игры.
  2. MMORPG (Massively Multiplayer Online Role-Playing Game) – многопользовательская ролевая онлайн-игра, где игроки взаимодействуют друг с другом в виртуальном мире.
  3. Автобатлер – игровая механика, где бои происходят автоматически без прямого участия игрока, на основе заранее заданных параметров.
  4. Крафт-система – система создания и улучшения предметов (в данном случае – кораблей и их компонентов).
  5. ПВП (Player versus Player) – игровой режим, где игроки сражаются друг против друга.
  6. Лидерборд – таблица лидеров, отображающая рейтинг игроков на основе их достижений.
  7. Ресурсы – игровые материалы, используемые для крафта, улучшений и других действий (металл, газ, кристаллы).
  8. КД (Кулдаун) – время перезарядки способности или действия.
  9. Урон – количество здоровья, которое теряет противник при атаке.
  10. Защита – параметр, уменьшающий получаемый урон.
  11. Щиты – дополнительный защитный параметр, поглощающий урон до полного истощения.
  12. Манёвренность – параметр, определяющий шанс уклонения от атаки.
  13. Инициатива – параметр, определяющий порядок ходов в бою.

2. Описание игры

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

2.1. Уникальные фичи

Особенности нашей игры.

  1. Межпользовательское взаимодействие (бои, лидерборды)
  2. Крутой космический сеттинг
  3. Сити-билдинг (хотя бы в виде простейшего управления планетами)
  4. Система крафта кораблей
  5. Многоуровневый захват территорий

2.2. MVP

Описание MVP нашей игры.

  1. Наличие пошаговой боевой системы типа auto battler.
  2. Арена – подбор игроков для боя друг с другом вне зависимости от расположения на карте.
  3. Менеджмент корабля (просмотр его конфигурации, установка пушек на корпус)
  4. Перемещение по “карте” (между планетами и системами)
  5. Взаимодействие с планетами
    1. Просмотр информации
    2. Захват планеты
    3. Сбор ресурсов с захваченной планеты
    4. Улучшение планеты
  6. Какая-то экономика в плане использования ресурсов (улучшение модулей)
  7. Лидерборд игроков с бОльшим кол-вом захваченных планет

3. Геймплей

3.1. Основы дизайна геймплея

Основа дизайна геймплея — соревнование между игроками на кораблях, которые они сами построили, и захват территорий. Отталкиваясь от этого, нужно сделать упор на крафт–систему кораблей, боёвку, функционал захвата (планет) и прокачки (корабля).

3.2. Игровой цикл

Основной игровой цикл: в чём состоит верхнеуровневый геймплей игрока.

  1. Постройка/починка корабля
  2. Перемещение до точки интереса
  3. Бой (опционально)
  4. Получение ресурсов
  5. Улучшение своего корабля/планеты

3.3. Механики

Механики, присутствующие в игре:

  1. Боевая система
  2. Крафт–система, управление кораблём (изменение модулей)
  3. Управление планетами
  4. Перемещение по карте

3.3.1. Боевая система

Предполагается ПВП.
В MVP единственный способ “подраться” – зайти на Арену. Как только другой игрок с ~такой же мощью зайдёт на неё – начнётся бой.
Перед самим боем можно спрашивать игрока, готов ли он вступить в него, показывать сравнение кораблей и т. д.
Стоит условно рассмотреть два подхода, применимых к нашей задаче: боёвка с каким-то инпутом игрока и автобатлер.

3.3.1.1. Боёвка с инпутом.

Предполагает какую-то синхронизацию и взаимодействие между игроками в рамках одного боя (игрок А нажал кнопку атаки, регнуло урон, прислали уведомление игроку Б, он как-то отреагировал). Игроки также действуют не мгновенно, так или иначе будут какие-то задержки между вводом действий от них.

3.3.1.2. Автобатлер

Предполагает автоматический расчёт на основе параметров двух игроков, логи этого расчета в каком-то виде демонстрируются игроку (немного не наш случай, но к такому описанию сводятся разные авточесы, типо Battlegrounds в Hearthstone и Teamfight Tactics в LoL'е).

В рамках наших ресурсов логичнее выбрать подход автобатлера, например, это можно реализовать так:
Бой идёт до тех пор, пока здоровье одного из кораблей не станет меньше 0, корабли по очереди атакуют друг друга. Урон рассчитывается исходя из мощности орудий атакующего и защиты атакуемого +- какое-то рандомное значение, чтобы у игрока слабее всё равно был какой-то шанс.
Логи этих расчетов присылаются игрокам на манер текстовых и олдовых РПГ, а-ля:

  • Vasya666 атакует ZXC_Ghoul, урон: 200, оставшееся здоровье 100.
  • ZXC_Ghoul атакует Vasya666, урон: 100, оставшееся здоровье 150.
  • Vasya666 атакует ZXC_Ghoul, урон: 137, оставшееся здоровье 0.
  • Vasya666 побеждает.

3.3.1.3. Боевые параметры.

  1. Скорость - кол-во выстрелов за единицу времени.
  2. Урон – кол-во дамага, которое наносится за один ход.
  3. Крит. частота – вероятность нанести крит. удар.
  4. Крит. урон – множитель урона при крит. ударе.
  5. Защита – кол-во урона, вычитаемое из любой атаки противника.
  6. Щиты – аналогично защите, только значения поглощаемого урона намного больше.
  7. Манёвренность – шанс уклониться от атаки.
  8. Здоровье - при падении до 0 корабль уничтожается.

В бою все значения могут колебаться в диапазоне +-20% от их значения.

3.3.2. Крафт–система, управление кораблём (изменение модулей)

В расширенном MVP по-умолчанию есть три слота под корабли, но только один из них может быть активным (корабль в нём будет использоваться для всех действий). Он может зайти в один из них → попасть в меню управления кораблём, посмотреть его суммарный урон и защиту, слоты и что в них установлено. В MVP предполагается только один единственный слот корабля. Смена содержимого слотов (например, орудия) подразумевает наличие инвентаря, откуда игрок мог бы выбирать доступные для установки орудия/обшивку и т. д.

В рамках MVP предлагается ограничиться двумя крафт--частями: корпусом и пушками. В дальнейшем можно добавить модули (двигатели, защитные пластины, доп. щиты и и т.п.), которые тоже будут влиять на параметры.

Часть корабля На что влияет
Пушка Урон, крит. частота, крит. урон, скорость
Корпус Защита, манёвренность, щиты

Пушки и корпуса можно покупать и улучшать за ресурсы.

3.3.3. Управление планетами

Прилетев к планете, игроку доступен просмотр её владельца, уровня планеты, получаемые ресурсы и возможность вступить в бой для захвата планеты. Если планета захвачена игроком (собой) – он может собрать с неё произведённые ресурсы.

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

Получаемое кол-во ресурсов зависят от уровня планеты так же, как и максимальное кол-во хранимых на ней добытых ресурсов. Уровень планеты можно прокачать за ресурсы. Возможно, стоит сделать управление планеты дистанционным, то есть у игрока будет пул планет в его владении, он может их просматривать. Находиться в той же системе не обязательно.

В MVP есть три вида ресурсов и три вида планет, которые их производят.

Тип планеты Производимый ресурс
Каменная Металл
Газовая Газ
Ледяная Кристаллы

3.3.4. Перемещение по карте

Организовать карту можно в виде сети (графа): игрок может переместиться из системы, в которой он находится, в соседние (в те, к которым есть путь) за некоторое реальное время, которое зависит от скорости (двигателя) корабля.

Отобразить карту можно в виде:

map

В текущем примере

Сущность Обозначение
Корабль Красный треугольник
Каменная планета Жёлтый прямоугольник
Ледяная планета Фиолетовый прямоугольник
Газовая планета Зелёный прямоугольник

Можно отобразить карту в виде эмодзи, вот как сделано в @ChatWarsBot:

chatwars map

Красный пин – положение игрока.
Остальные эмодзи – локации.

Можем сделать таким же образом карту системы 8x8. Игрок будет видеть карту системы, а не окружающих его небесных тел в радиусе 8 клеток. Т.е. центр карты привязан к центру системы, а не к положению игрока (поэтому не всего корабль будет отображаться в центре карты). На карте каждой ячейке (эмодзи) будет привязана команда перемещения на неё. Игрок нажимает на эмодзи с планетой – срабатывает команда перемещения – корабль летит в нужную клетку.

Итоговый вариант реализации перемещения представлен в макетах и выглядит следующим образом: image

4. UI, арты, системные экраны

Описание UI игры, как пользователь вводит информацию.
Поскольку в выводе информации мы ограничены функциональностью телеграма, то будем использовать в основном inline кнопки (которые меняются при нажатии) и нижнее меню (в нём очень важно не переборщить функционалом, например в @just_fishing_bot оно при каждом действии обновляется, и это раздражает).

Можно для информационных сообщений добавить отправку нарисованных нами стикеров (пример стикер пака) или выводить сообщение с картинкой.

tower lvl up

5. Аналитика

5.1. Анализ рынка/конкурентов

В данной секции приведены в качестве референсов аналогичные проекты:

  • @ChatWarsBot – текстовая бездонатная (почти) ММОРПГ с механикой передвижения по карте, лута точек интереса, рейдов. Ближе всех по задуманной реализации.
  • @StarBattleBot – текстовая RPG в космосе. Самый близкий по сеттингу бот. Крайне перегружен механиками и текстом. Есть крафт–система, боевые параметры, перемещение по карте, разные типы урона, задания, куча боевых маневров, варп–прыжки, добыча ресурсов на астероидах. Хороший пример того, как UI убивает желание играть в проработанную с т.з. механик игру.
  • @tower_rpg_bot – дефолтная текстовая ММОРПГ, где нужно подниматься вверх по уровням башни (SAO reference?).
  • @just_fishing_bot – простейший кликер в сеттинге рыбалки (сделанный Артёмом Д. в качестве курсача по БД). Всё взаимодействие сделано через меню – можно использовать подход для отображения контекстных меню.

6. Цели

6.1. Целевая аудитория

Так называемые киллеры (соник шедоу.jpeg)
Всякие любители ПВП, захватов чего-либо, конкуренции между игроками, ПВП в дарк соулс, zxc на сфах под фонк.

6.2. Целевая платформа

Телеграм (десктоп и мобилка).

6.3. Целевой бюджет

Две банки “Балтика 9”, пара месяцев семестра.