{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}
Инди
BIG CITY LAB

Welcome to Goodland. Заметки картеля, часть II. Как мы настраиваем игру

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

О проекте и команде:

Кто мы и что делаем?

Всем привет! Мы - Big City Lab - небольшая команда, работающая из разных концов России. Мы разрабатываем экономическую менеджмент стратегию.

Про что игра?

Про отмывку денег! Вы должны отмывать деньги мексиканского картеля в тихом городе на севере США.

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

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

Особенности структуры проекта,программирования и скриптинга.

Ключевая особенность технической структуры нашего проекта - это синхронизация файлов юнити и гугл таблиц.

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

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

Пример настроек внутри таблиц: скрипты, характеристики и переводы.

Файл из отдельно взятой таблицы загружается в отдельно взятый csv файл:

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

Как мы делаем уровни?

Короткое описание:

Длинное описание:

Все настройки мы делаем внутри таблиц.

Сначала мы создаем настройки периода:

Наша игра делится на определенное количество периодов. Настройка периода определяют структуру уровней (дней) в нем. Уровни определяют контент. Карточки - сторонний морально-этический выбор.

Мы настраиваем следующие параметры: количество дней (period duration), существующие проверки (FacebookChecks), параметры (EnableRandomAttack, EnableSkullCalculation), обязательные сообщения в начале дня (NecessaryFacebookMessageKey).

FacebookChecks проверяют условия победы и поражения на каждый отдельный период.

EnableRandomAttack - будет случайная атака или нет.

EnableSkullCalculation - будет ли проверка по издержкам (в игре нельзя тратить деньги для отмывки выше определенного значения).

Пример настроек периода внутри таблиц:

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

Пример как выглядит настройка 7-го дня в прологе (306 он, так как мы сделали период, отделенный от основной игры):

Пример как этот день выглядит в игре с настроенными бизнесами (круглые иконки):

Как мы настраиваем параметры бизнеса:

Чтобы отмывать деньги нужно захватывать бизнесы, их параметры мы тоже меняем в таблицах.

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

Настройки хозяина определяют имя, ежедневно получаемый страх (DeltaFear), жадность (Greed), навыки (Leadership, Social, Will Power, Intellect) и пол (Gender).

Пример настроек хозяина:

Настройки бизнеса

В настройках бизнеса мы настраиваем имя бизнеса (Name), его иконку (IconKey), минимальную сумму прибыли (MinClean), максимальную сумму прибыли (MaxClean), бонус прибыль за интеллект (CleanDelta), тип бизнеса (BusinessType), требования по интеллекту для улучшения на 1,2,3 уровень (IntellectForLevel 1,2,3), доп опыт при захвате (ExtraExperiencePerCapture), особая подсветка (Highlighting color).

Пример настроек бизнеса:

Пример как выглядит бизнес со всеми настройками:

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

Как мы настраиваем цепочки бизнеса:

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

При настройке мы указываем как будет называться цепочка в коде (Business chain key); типы бизнесов, образующие цепочку (Required types of business); цвет цепочки (Color hexadecimal code), какой бизнес появляется при захвате цепочки (Merged into BusinessKey-HostKey), на сколько процентов изменяется прибыль бизнеса (Change revenue %), на сколько процентов изменяется жадность бизнеса (Change greed).

Пример настроенной цепочки:

При первом варианте также появляется доп бизнес. При втором изменяются только параметры цепочки и бизнес не появляется.

Пример цепочки в игре:

С появляющимся доп бизнесом:

Без доп бизнеса:

Как мы настраиваем карточки (сюжетные решения):

Карточки - это небольшая история обычно с каким-либо морально этическим выбором. Их настройка затрагивает много параметров и таблиц и включает в себя много сторонних настроек.

Сначала нужно выбрать день, в который произойдет событие. Настройки определяют ключ в коде (EventKey), день активации (ActivationDay), на сколько дней будет задержка при активации (ActivationDelay), триггер на появление (Trigger), проверка на появление (Condition), вызванные результаты (CalledResults), вызванные эвенты (CalledEvents) и вызванные карточки (CalledCard).

В примере ниже событие поставлено во второй день пролога (301 день показан, так как пролог настроен отдельно от основной игры). В вызванных карточках у нас стоит Card_Demo_Day2_Evening, у нее есть свои настройки в таблице настроек карточки.

Затем нам нужно настроить карточку. Настраиваем ключ в коде (CardKey), заголовок карточки (Title text key), описание карточки (Description text key), картинку (Image key), решения по карточке (Solutions) и результат, если мы ничего не выберем (Results calling without solutions).

Пример настроек карточки:

Затем нам нужно настроить решения по карточкам. Настраиваем ключ решения в коде (SolutionKey), текст на кнопке (Text on button), условия (Conditions), вызываемые результаты (Called results), лог нотификацию для тестов (Log Notification Text)

Пример настройки решений карточки:

Затем нам нужно настроить результаты в таблице результатов. Для каждого типа результата есть своя собственная вкладка в таблице.

Мы разберем результат - добавление сотрудников. Настраиваем ключ результата (Result key), ключ сотрудника (Employee Key), тип сотрудника (Employee Type), описание результата (Description text key), тип результата (Type of the result)

Пример:

После этого, нам нужно заполнить данные сотрудника. Мы настраиваем: ключ сотрудника (CharKey), имя сотрудника (NameKey), иконку сотрудника (IconKey), параметры сотрудника (Leadership, Social, Will Power, Intellect), пол сотрудника (Gender).

Пример:

После того, как мы придумали данные сотрудника, нам нужно заполнить имя сотрудника во вкладке перевода. Настраиваем ключ имени сотрудника и локализацию.

Пример:

После этого карточка должна выглядеть вот так:

Порой можно немного запутаться

Кстати, у нас начинается открытый тест в стим!

И вы можете помочь нам сделать игру лучше, пройдя демо и оставив фидбек или просто пройдя игру и выложив ваше прохождение на ютуб :)

Ссылка на плейтест в стим:

0
6 комментариев
Написать комментарий...
ДЕЛА ИГРОДЕЛА

После фразы - отмывать деньги, шурупчики в голове задвигались. Очень интересная идея. Если её перенести локально, так вообще шикарно. Первое что пришло в голову, это законы. Чтобы схема отмывания, была подвязаны к законам. Законы принимают в процессе игры и на них нужно реагировать, подстраиваться под схему. И обратно, давать на лапу для закона.
Удачи вам с проектом, звучит интересно

Ответить
Развернуть ветку
Zhenia

ГХ репо приватный, или можно где-то чекнуть какие-то реализации?
А то проскипал всё в низ, потому-что слишком много букв и цифр в этих ваших таблицах ((((((((((((((((((((((((((((((

Ответить
Развернуть ветку
Andrey BCL

Спасибо за попытку разобраться! Эта статья про внутреннюю кухню и про боль создания уровней. Пока в планах опенсорсить части нет. Альтернатива была использовать Articy, но решили свой велосипед пилить.

Ответить
Развернуть ветку
Денис Кадыков

Ваш прогер не смог написать таблицы в редакторе Юнити? Накой хрен вам вообще юнити?

Видал чувака который вместо расстановки префабов на сцене, расставлял пикселы в Фотошопе. Типа написал преобразователь растра в уровни. Говорил "Так удобнее".

На вопрос "если какой то объект нужно будет повернуть, что он будет делать?" чувак ничего не ответил и сильно по грустнел.

Вот так и здесь.

Настраиваем ключ в коде (CardKey), заголовок карточки (Title text key), описание карточки (Description text key), картинку (Image key)

Ну и что такое "Image key" ? Где картинка? Почему просто надпись? Может я могу кликнуть по полю и Гугл или кто то другой покажет мне какая картинка выбрана для этого поля?

Ответить
Развернуть ветку
Andrey BCL

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

Ответить
Развернуть ветку
Andrey BCL

Спасибо за отзыв!

Ответить
Развернуть ветку
Читать все 6 комментариев
null