Кораблестроение в космоопере

Мы делаем игру, симулятор кораблестроения в космоопере. Первая статья с ранним видением игры вышла еще в октябре 2019 года, сейчас май июль 2020. Как изменился проект за это время, что получилось сделать, где возникли затруднения, все это в статье.

o7qzbovgsr1iok7wqt-cfpbdvtu.png

Что сейчас есть и работает


Симулятор галактики


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

В этой примитивной галактике выявились две с половиной экологические ниши. Это максимально дешевый корабль с пушкой, обязательно хоть с какой-нить пушкой, для уничтожения совсем невооруженных кораблей. Более крупный корабль, но достаточно дешевый, чтобы успевать размножаться под прессингом суперхищника. Суперхищник, вершина пищевой цепи существующий в единственном экземпляре, когда «рождается» второй суперхищник, они рано или поздно встречаются и снова остается только один. Если добавлять больше кораблей, то происходят вымирания до стабильных 2–3 видов.

Здесь возникла проблема, галактика чувствуется маленькой. Увеличение размера все равно оставляет ощущение мелкости. Причина похоже в том, чтобы прочувствовать масштаб, у человека должна быть масштабная линейка, а этого у нас нет, игроку не с чем сравнивать размеры.

Симулятор боя


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

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

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

Визуализатор боев


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

Тяжелая гифка
ccrisegevylwobmxyjmqa3_r4ak.gif


Логи и БД


Мы выбрали в качестве базы данных SQLite и JSON. Как-нибудь скрывать БД не будем, копание сторонними инструментами только приветствуется.

Статистика


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

9xu7ew09bqs7bkfct67aoxzgpq0.png

Конструктор кораблей


Работает. Нам даже нравится, как она работает.

csnlogn55gev77-rn1q5bj4_2ew.gif

Что мы хотим добавить


Роли и биомы


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

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

Описания


Сейчас очень мало описаний модулей и функций модулей. Букв в проекте катастрофически мало. А еще, мы не умеем писать литературный английский текст. Решили все технические надписи на английском, а описания и другие пространные тексты на русском. Потом переведем.

Развитие технологий и модулей


Хочется и точно нужно. Корабли должны устаревать, оптимальные раскладки должны меняться. Еще наблюдение за первыми испытателями показало, что в игре слишком много начальных модулей, люди просто теряются. Модулей всего сейчас в игре чуть больше десятка, этого уже слишком много для старта.

Государства


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

Сюжетный режим


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

Игрок не управляет корпорацией, он «всего лишь» главный инженер одной из дизайнерских команд. Если корабли игрока не будут продаваться, рейтинг команды будет низкой и заказы на тяжелые корабли не будут доступны. Тут нет условия проигрыша. А за успешные, массово продающиеся проекты выдадут премию и откроют заказы на большие корабли.

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

Падение


Cюжетно обоснованный ресет технологий и модулей. Взрыв насилия и уничтожения, охватывает галактику, уничтожая промышленность и знания. В последующие Темные Века разрозненные выжившие, прозябают на осколках былого. И каждый имеющий хотя бы два корабля, будет называть себя «Императором Человечества». А ведь у игрока целая верфь (или не совсем целая), в это время можно основать собственное государство. Правда производственные цепочки развалились, корабли придется собирать из из разнообразных обломков и простейших материалов.

Особые модули для кораблей


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

Лостех. Утерянные технологии времен до Падения, еще долго в галактике будут летать корабли с модулями которые больше не воспроизвести. Лостех по мере игры будет образовываться сам собой, просто от устаревания, закрытия производств и ресетов технологий. Раньше игрок казуально строил из этих модулей, а теперь это редкий невосполнимый ресурс.

Алиентех. Иногда в галактику прилетают из других галактик и оставляют ценный лут. Или кто-то из нашей галактики слетает в другую галактику и привезет интересности. Или даже целый межгалактический торговый караван.

Генератор кораблей


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

Мультиплеер


Думаю можно сделать легко (легко? мультиплеер? ну ок), достаточно прикрутить выгрузку статистики и загрузку дизайнов на сервер. Мультиплеер также видится мне основным источником заработка после запуска игры. Мультиплеерная галактика будет работать 24/7 и загруженные дизайны кораблей будут бороться за выживание. Тут нужно больше экологических ниш, даже с ролевым поведением кораблей и биомами может быть маловато.

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

Звук


Звука нет. Надо бы добавить.

Графика


Наше изделие, на этом этапе сложно полюбить глазами.

Изменения проекта по сравнению с первой статьей


Теория надежности. Сначала я хотел, чтобы надежность кораблей имело большое значение. Это пришлось отложить на потом, когда игра будет работать в «Большом» варианте.

Массивная симуляция. Судя по опросу, большинство неготово включить симуляцию на весь день. С другой стороны, я не хочу терять длительную симуляцию для большей статистики. Если игра будет играться только с длительным числодроблением, мы будем терять новых игроков. Поэтому в начале игры будет небольшая галактика, расширяющееся по мере игры. И будет мультиплеерная галактика 24/7.

Архитектура проекта. В начале мы думали все писать в лог, а из лога доставать все нужное для статистики и визуализации. Игра каждый тик записывала все что произошло, а все что хотел увидеть игрок, загружалось с БД. Все работало, но медленно. Пришлось добавить кеш для датабазы. Это небольшое изменение, потребовало просто огромное количество усилий, треть времени просто на это потратили.

Ситуация с проектом


Готовность проекта


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

Распределение усилий


Вся игра это алгоритмы, которых много много МНОГО. Графика, сторителлинг, UX/UI все вместе занимают процентов 30% работы. Это распределение на самом деле вынужденное, ведь без алгоритмов игра неработает совсем, и наш контент это алгоритмы. Все это время мы работали чисто над тем, чтобы запустить игру. Прототип собрали за целых три месяца! Проект даже сейчас не совсем MVP, после года работы.

Очень многое нужно было сделать по другому, но… Для этого надо отодвигать выход. Когда будущее проекта прояснится, перепишем набело.

Режим работы


Работаем по вечерам в качестве хобби. Работаем вдвоем, по два часа вечерами в будние дни. За все время работы (начали в августе) наработали часов 500 всего. Такими темпами понадобится лет 10 до реализации хотя бы основных идей.

Мораль команды


Мы проработали ровно год, на чистом энтузиазме. Я вообще в ахуе не ожидал что смогу работать целый год над чем-то таким. Ну совсем. Еще удивительнее, что я не один.

Угнетает масштаб работы, конца работы просто не видно. С другой стороны поддержка фанбазы уже сейчас чувствуется, люди пытаются играть в то что есть сейчас. Еще помогает опрос в прошлой статье, показавший заинтересованность в безумные 83%, что очень радует.
Но это почти кончилось, нам нужно подкрепление.

Планы


Деньги. Мы так не доживем до релиза. Жизнеспособными мы признали два варианта набрать денег, а потом решили их скомбинировать. Первое найти инвестора или издателя и второй краундфандинг через Кикстартер. Если первый получится, то краундфандинг будет с красивыми картинками и большей рекламой, иначе краундфандинг будет победнее. Если ничего не получится… То наверно просто откроем исходники и оставим так.

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

Опенсорс и сторонние моды. Хочется вывести игру в опенсорс. Но я что-то не вижу игр в опенсорсе, а те что я нашел, выглядят исключениями подтверждающие правило. Также поддержка сторонних модов должна на порядок расширить возможности, но сейчас я не понимаю как это сделать.

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

Ссылки


itch.io ссылка на скачивание игры.
discord ссылка на сообщество в дискорде. Чатик, новости, первый игровой евент.

deviantart.com/purbosky КДПВ отсюда.

© Habrahabr.ru