Zero Capital Industries — промышленность с нуля
Это первая запись в дневнике разработки Zero Capital Industries. Хочу начать с самого начала: рассказать, что это вообще за проект, зачем я его делаю, что уже работает и во что в итоге должна превратиться игра.
Я разрабатываю игру один на Unity. Сейчас проект находится на ранней стадии разработки: визуально это всё ещё прототип, большая часть окружения и оборудования существует в упрощённом виде, а некоторые вещи вообще представлены временными моделями.
На этом этапе для меня гораздо важнее построить фундамент игры: симуляцию, взаимодействие оборудования, экономику и архитектуру, на которой впоследствии можно будет развивать полноценное производство.
Что такое Zero Capital Industries
Основная идея довольно простая: начать практически с нуля в обычном гараже и постепенно построить собственное промышленное предприятие.
В начале нет огромного цеха, армии сотрудников и миллионов на счету. Есть небольшое помещение, ограниченный бюджет, простейшее оборудование и возможность попробовать на всём этом заработать.
Игрок самостоятельно закупает сырьё и оборудование, собирает первые технологические установки, подключает их, запускает производство, выполняет заказы и вкладывает заработанные деньги обратно в развитие.
Постепенно ручные процессы должны уступать место более серьёзному оборудованию и автоматизации. Гаража становится недостаточно, появляются новые помещения, более крупные партии сырья, сложные производственные цепочки, сотрудники, логистика и в конечном итоге полноценный завод.
Именно этот переход от нескольких железок на верстаке до работающего предприятия для меня является основой игры.
Это не игра про нажатие кнопки «Произвести»
Одна из главных вещей, которую я хочу сохранить, — физическое ощущение производства.
Оборудование здесь не должно быть абстрактным зданием, которое после установки просто превращает один ресурс в другой.
Если для процесса нужен куб, его нужно установить.
Если нужна колонна — собрать её.
Если оборудованию требуется электричество — подключить питание.
Если между двумя аппаратами должна перемещаться жидкость — потребуется соответствующее соединение.
Если продукт нужно куда-то собрать — нужна свободная ёмкость.
Если жидкость необходимо перенести в другую тару — её придётся перелить или перекачать насосом.
При этом я не пытаюсь сделать профессиональный инженерный симулятор, для которого перед запуском придётся получить технологическое образование.
Реальные процессы для меня являются основой механик, но в первую очередь это должна оставаться игрой.
С чего начинается производство
Первая технологическая система, вокруг которой сейчас строится прототип, — небольшая установка для перегонки и ректификации.
Это удобный процесс для разработки, потому что уже на сравнительно небольшом наборе оборудования приходится решать множество задач: нагрев, охлаждение, движение жидкости, температура, соединение аппаратов, регулирование процесса, хранение продукта и материальный баланс.
И главное — всё это хорошо масштабируется.
Простейшая гаражная установка может работать практически вручную. Позже те же самые принципы можно перенести на более серьёзное оборудование, добавить датчики, автоматику, насосы, регулирующую арматуру и постепенно превратить ручной процесс в автоматизированную технологическую линию.
Что уже работает
Несмотря на крайне ранний внешний вид, внутри проекта уже собрана довольно большая часть технического фундамента.
Есть FPS-управление персонажем и полноценное взаимодействие с физическими объектами.
Работает система сохранений и загрузок, включая автосохранение и превью сохранений. Созданные во время игры объекты, установленное оборудование, его положение, настройки, жидкости и соединения могут сохраняться и восстанавливаться.
Для разработки сделана внутриигровая dev-панель. Через неё я могу прямо во время игры устанавливать оборудование, удалять объекты, телепортироваться, ускорять симуляцию и проверять состояние различных систем. Благодаря этому производственный участок можно буквально собирать во время работы игры и затем сохранить.
Отдельно реализована универсальная система соединения оборудования через порты.
Есть жёсткие соединения отдельных элементов установки и гибкие шланги, которые игрок может прокладывать самостоятельно. Соединения разделяются по назначению: продукт, пар, охлаждение и другие технологические линии не являются одной универсальной трубой.
Крупное оборудование после установки можно переставлять. Для этого используется та же система размещения, что и при первоначальной установке объекта, поэтому отдельной параллельной механики строительства для этого нет.
Уже работает и сам технологический процесс
Куб содержит жидкость, имеет нагреватель и собственную тепловую модель. Учитывается нагрев содержимого и тепловая инерция.
Мощность нагрева регулируется вручную.
У холодильника и дефлегматора есть отдельная температурная модель. Можно регулировать поток охлаждающей воды, а сама вода имеет температуру на входе и выходе.
Установка проходит через несколько состояний процесса: первоначальный прогрев, работу на себя, выход в рабочий режим и последующий отбор продукта.
Количество отбираемого продукта регулируется. Часть конденсата может возвращаться обратно в куб в виде флегмы.
При этом я стараюсь соблюдать материальный баланс. Продукт не должен появляться из воздуха просто потому, что игрок подключил правильную трубу.
Если из аппарата вышел определённый объём вещества, этот объём должен физически оказаться где-то ещё.
Жидкость — это тоже часть мира
В игре уже существуют различные ёмкости.
Есть небольшая переносная тара, ведро, IBC-контейнер на 1000 литров и другие варианты хранения.
У каждой ёмкости есть реальный доступный объём. Нельзя бесконечно наливать продукт в двадцатипятилитровую тару.
Ёмкости можно переносить, жидкость можно переливать вручную или перекачивать насосом между различными резервуарами.
Вместе с жидкостью переносится и её состояние, включая температуру.
В дальнейшем эта система станет основой не только для готового продукта, но и для сырья, промежуточных продуктов, отходов и других веществ производственной цепочки.
Оборудование постепенно становится модульным
Я не хочу превращать каждый возможный вариант аппарата в отдельный готовый объект.
Если установка состоит из нескольких физических частей, игрок должен иметь возможность работать именно с этими частями.
Например, отдельными элементами могут быть куб, царга, холодильник, дефлегматор, датчики и другие компоненты.
При этом важно разделять комплектацию самого оборудования и то, что действительно установлено игроком.
Царга может изначально иметь возможность установки термометра, но сам датчик при этом остаётся отдельным компонентом, который необходимо приобрести и установить.
Такой подход позволяет в дальнейшем развивать оборудование постепенно, не создавая отдельный готовый аппарат под каждую возможную комбинацию компонентов.
Экономика и заказы
Симуляция технологического процесса сама по себе ещё не делает из проекта игру.
Поэтому следующий большой слой — экономика.
Сырьё необходимо покупать. Оборудование стоит денег. Тара имеет стоимость. Ошибки в процессе производства должны приводить не только к неправильным цифрам на экране, но и к реальным экономическим последствиям.
Производить продукт просто ради увеличения числа в хранилище мне неинтересно, поэтому важную роль будут играть заказы.
Заказ должен давать конкретную производственную задачу: изготовить определённый продукт, нужного качества и в требуемом количестве.
Если процесс настроен плохо, часть сырья потеряна или заказ невозможно выполнить вовремя — игрок теряет потенциальную прибыль.
Если производство организовано грамотно — появляются деньги на дальнейшее развитие.
Таким образом постепенно формируется основной цикл:
закупка сырья → подготовка оборудования → производство → получение и хранение продукта → выполнение заказа → прибыль → развитие производства.
Почему всё начинается именно в гараже
Для меня важно, чтобы развитие ощущалось не только через увеличение цифр.
В начале оборудование буквально стоит в гараже жилого дома. Какие-то процессы выполняются вручную. Каждая новая покупка заметно меняет возможности производства.
Позже появляется причина переехать в более подходящее помещение.
Затем становится тесно уже там.
Увеличиваются объёмы сырья и продукции, появляются более крупные резервуары, производственные линии, автоматизация, складские площади и сотрудники.
В какой-то момент предприятие, начинавшееся с нескольких аппаратов в гараже, должно превратиться в настоящий современный завод.
И я хочу, чтобы игрок помнил, с чего всё начиналось.
Автоматизация должна быть наградой за развитие
Одна из вещей, которую я особенно хочу реализовать, — постепенный переход от ручного управления к автоматизации.
На старте игрок самостоятельно подключает оборудование, следит за температурой, регулирует нагрев и охлаждение, работает с тарой и контролирует процесс.
По мере развития появляется возможность устанавливать дополнительные датчики, исполнительные механизмы и системы управления.
То, что раньше приходилось постоянно контролировать самостоятельно, постепенно начинает работать без непосредственного участия игрока.
Но автоматизация не должна появляться просто потому, что в меню исследования разблокировалась очередная кнопка.
Сначала игрок должен столкнуться с проблемой ручного производства и только после этого получить оборудование, которое эту проблему решает.
Тогда покупка нового насоса, датчика или автоматического регулятора действительно ощущается как развитие предприятия.
Обучение тоже придётся строить вокруг производства
Первые тесты уже показали важную проблему.
Можно сделать подробную симуляцию, дать игроку оборудование и сырьё — и получить человека, который через несколько минут совершенно справедливо спросит: «А что мне теперь делать?»
Поэтому обучение должно объяснять не только управление персонажем.
Первый игровой сценарий должен провести через полноценную небольшую производственную цепочку: получить задачу, приобрести необходимое, подготовить оборудование, запустить процесс, получить первый продукт и заработать первые деньги.
Более сложные механики будут появляться постепенно.
Игроку не нужно заранее понимать устройство промышленного предприятия. В идеале он должен разобраться в нём непосредственно через игру.
Что с графикой
Сейчас практически всё, что можно увидеть на скриншотах разработки, является прототипом.
Серые помещения, простая геометрия, временные материалы, тестовые модели оборудования — это сознательный выбор текущего этапа.
Я не хочу сначала несколько месяцев делать красивый гараж, а потом обнаружить, что фундаментальные системы игры приходится переделывать.
Поэтому сейчас основной приоритет — механики и архитектура.
Полноценные модели оборудования, окружение, дом, улица, производственные помещения, завод, анимации, персонажи, интерфейсы, звук и визуальные эффекты — это отдельный огромный пласт работы, до которого проект постепенно доберётся.
К чему я хочу прийти
В конечном итоге Zero Capital Industries должна стать игрой о развитии производства с нуля.
Не просто строительством красивого завода сверху и не просто симулятором одного конкретного технологического процесса.
Мне хочется соединить физическое взаимодействие с оборудованием, производственную симуляцию, экономику и постепенную автоматизацию.
Начать с нескольких тысяч рублей, старой электроплитки и оборудования в гараже.
Самостоятельно собрать первую рабочую установку.
Получить первый нормальный продукт.
Выполнить первый заказ.
Купить оборудование получше.
Перестать таскать каждую ёмкость руками.
Поставить насос.
Добавить контроль процесса.
Автоматизировать участок.
Нанять первых сотрудников.
Перерасти гараж.
Построить цех.
А спустя много игровых часов посмотреть на работающий автоматизированный завод и понимать, что когда-то всё это начиналось с одного аппарата на верстаке.
До этого состояния проекту ещё очень далеко.
Но технический фундамент уже существует, первый производственный процесс работает, а следующие этапы постепенно превращают прототип симуляции в полноценную игру.
В следующих записях дневника я буду подробнее разбирать отдельные системы, показывать изменения проекта и рассказывать о том, как Zero Capital Industries развивается от серого прототипа до промышленности с нуля.
