SakeTami
DogmaMods
DogmaMods

patreon


Отчет 2

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

Я подумал, что было бы неплохо сделать, чтобы персонажи уходили и приходили. Для начала, добавил больше персонажей: 12 посетителей и 6 куртизанок. Написал менеджер, который ими управляет, по сути, он представляет из себя скрипт который висит на каждом актере, и управляет их внутренним состоянием, а также общий скрипт, который управляет поведением всех персонажей на основе их состояний. Учитывая, что персонажи не просто для мебели там, а используются в событиях: в системе свиданий и еще паре мест в сценах, в основу нужно было заложить расширяемость. У меня вышло написать такую систему, где я могу добавлять отдельные независимые механики, и таким образом, чтобы при добавлении новой, в других вообще ничего менять не надо было. Также могу блокировать их обработку менеджером, на случай если персонаж используется.

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

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

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

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

Добавил механику для Мадам, она будет приветствовать новых посетителей.

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

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

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

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

И как всегда, огромное спасибо за вашу поддержку!


More Creators