Как я переделываю НПС в симуляторе сельского магазина

На этой неделе активно переделывал НПС.
Раньше вся их логика жила в одном огромном скрипте 🙈
Из-за этого любое изменение превращалось в боль.

Поэтому я наконец-то разделил систему на несколько частей:
• перемещение
• анимации
• покупку товаров
Каждая теперь живёт в своём классе и, внезапно, стало гораздо легче дышать.

НПС перестали быть зомби

Раньше при открытии магазина происходило довольно криповое зрелище.
Все жители мгновенно бросали свои дела и шли в магазин. Прямо толпой. Выглядело как начало зомби-апокалипсиса 😃

Теперь логика стала более человеческой:
🔹НПС сначала доделывает свои текущие дела
🔹После этого с некоторой вероятностью решает пойти в магазин

Новая логика покупок

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

Теперь всё чуть реалистичнее:
🔹НПС придумывает заказ заранее, ещё когда только решает идти в магазин
🔹Сначала формируется первичный заказ, только из товаров доступных лицензий
🔹На кассе, первичный заказ уточняется, НПС проверяет цену и наличие товаров на полках
🔹Сообщает игроку свои жалобы
🔹И если в заказе остались товары, которые нужны и подходят, то покупает только их.

Фразы для генерации ещё стоит подобрать, чтобы обойти беды с падежами
Фразы для генерации ещё стоит подобрать, чтобы обойти беды с падежами

Деньги больше не телепортируются

Ещё одно изменение видно на видео.
Раньше:
🔸Деньги от покупателей автоматически появлялись в кассе и строчка на дисплее "Получено" обновлялась сама.
Теперь:
🔹НПС сначала кладёт свои деньги в монетницу
🔹Игроку надо их забрать
🔹После этого рассчитаются строчки на дисплее кассы "Получено" и "Сдача"
Когда деньги магическим образом сразу оказывались в кассе, было не совсем очевидно, что произошло.
С одной стороны увеличение цепочки, с другой стороны - брать деньги самому приятнее и понятнее 😅

Забираем деньги, которые положил НПС
Забираем деньги, которые положил НПС
Данные на дисплее кассы обновляются и рассчитывается сдача
Данные на дисплее кассы обновляются и рассчитывается сдача

Маленький анти-чит

🔸Раньше можно было немного мухлевать.
Игрок мог убрать товар с подноса после того, как он уже пробит и на кассе зафиксирована цена.
🔹Теперь товары из заказа сразу складываются в пакет,
и забрать их обратно уже нельзя.

Как я переделываю НПС в симуляторе сельского магазина

НПС научились открывать двери

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

Как я переделываю НПС в симуляторе сельского магазина

Хайповые индикаторы-подсказки

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

Немного полишинга

Появились небольшие анимаций скейла предметов, которые игрок берёт в руки или выставляет на полки.
Достаточно простая анимашка, сделанная через DoScale(метод внутри DoTween), но уже интереснее, чем просто включение/выключение объекта 🤓
Иногда маленькие детали дают больше радости, чем большие системы.

И прям совсем-совсем ластецкий апдейт на сегодня:

В игре теперь можно переключить язык на ещё несколько:
🔹польский
🔹португальский
🔹сербский
🔹японский
🔹корейский
🔹китайский
Итого, теперь 12 локализаций 🤓
Правда, пока всё всрато переведено через Google Translate и на плейтесте, скорее всего, останутся только русский и английский.
Но чего только не сделаешь ради галочек на странице игры в Steam.
Зато учим новые слова😃

Кирилл - мужик!
Кирилл - мужик!
9
2
1
30 комментариев