Shadow Pulse the game – Telegram
Shadow Pulse the game
111 subscribers
173 photos
11 videos
10 files
19 links
Немного девлога. Много страданий.
Посвящено разработке 2.5d сурвайвл хоррора Shadow Pulse.

Steam: https://store.steampowered.com/app/2659170/Shadow_Pulse/
Bluesky https://bsky.app/profile/pavelradi.bsky.social
Download Telegram
Ух, беда-печаль-огорчение...

На самом деле вообще ни разу нет, очень ожидаемо. Это стата того как в демо играли. Пока что именно запускали его, как я понял, почти 50 юзеров. Ставили себе в библиотеку, скачивали и все такое - что-то около 600.

Помянем того несчастного, который играл в это два часа (возможно, это был я сам)
😱1
Сделал анимированный экран загрузки, а она длиться на столько мало, что анимации входа и выхода проскипываются неадекватно быстро...

План теперь - сделать "нажмите Г чтобы продолжить" и пихнуть текст-дисклеймер в загрузочный экран 🤔
👍2
Случилась картина Репина "Юнити выносил мне мозг очередные пять часов мелкой хренью, которая не упоминается примерно нигде".

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

Собираю все в билд, запускаю - половина текстов не локализуется.
Просто не загружается, оставляя базовый текст объекта. Запуск в редакторе - все работает. В билде - нет.

Начал тесты.
С начала, я выяснил, что если текстовые объекты сделать не дочерними объектами загрузочного экрана, то все работает. Но тогда надо было делать два синхронно анимируемых загрузочных экрана, чтобы на одном была загрузка, на другом текста, и это не имело смысла.
Далее я выяснил что смена текстов влияет на результат. А точнее смена таблиц. Не работала одна из локализационных таблиц. Перенос нужной строки в другую таблицу все успешно чинил. Но, ломалось все, что было в вонючей таблице, и решительно не понятно почему. Мне надо было выяснить и знать как предотвратить такую нестабильность.
Разумеется, я начал советоваться с чатом gpt, и он насоветовал мне миллион вариантов того как костылем сделать обновление текста на локализацию в любой момент жизни. Но... Это не работало.
В целом, ИИшко корректно предположила - дело в подгрузке таблиц в билде. В редакторе они всегда заранее подгружены и сохранены в кэше. В билде на это надо время... И начал давать совершенно нерабочие варианты кода обновления текста после подгрузки таблиц.
Я даже проверил время на инициализацию таблиц локализации научным методом включения зеленого квадратика поверх красненького, когда корутина подгрузки табличек завершена. Результат - почти мгновенно. Дело было не в том, что что-то упорно не грузилось.

Лишь после того как все не сработало, я предположил что есть конфликт между асинхронной загрузкой текста и асинхронной загрузкой локации.
Поставил простенький таймер ожидания подгрузки локализации в логику начала загрузки локации... И все починилось!

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

В интернетах описания подобной проблемы у локализации юнити я просто не нашел. Никаких предостережений, или чего-то в этом духе.
И, если честно, я в культурном шоке от таких приколов.
Штука, которая так все обгаживает, да еще и только в самом билде, не в редакторе - это подстава немыслимых габаритов.
👍1
Примерно как оно выглядело
Кстати, пока что такой вот загрузочный экран. очень нравится такой стиль узкой полоски арта
4❤‍🔥2👍1🤩1😈1
⚡️Новый апдейт!⚡️

Добавлены:
- Анимации в главном меню
- Экран загрузки
- Кнопка выбора языка
- Интерактивный осмотр ряда предметов и активация диалога, вместо автоматической активации.
- Раскиданы второстепенные подсказки для обучения.

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

Оказалось что причина Culling mode в анимации, который почему-то ломал все скейлы. Обычно, он используется для оптимизации, и должен был спасти мне производительность, но, похоже, проще отрубать весь объект щупалец пока он не в экране, чем заниматься оптимизацией анимации.
👍2
Хитбоксы зомбаков починены... Повторяю, хитбоксы зомбаков починены.

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

Вернулся к дедовсому методу размещения коллайдера. В зоне где примерно машется оружием. Работает идеально. Границы настраиваются за пару секунд. Все хиты теперь выглядят совершенно справедливо.

Мораль - не слушайте советы чата жпт.
👍1😁1
Если кратко, второй день рефакторю код врагов, дверей и взаимодействующего со всем этим персонажа.
Цель - заставить вонючек научиться нормально ходить через двери.
🔥1
У монстров нормально работали патрули.
Весь день потратил на то чтобы научить монстров прерывать их и делать маршруты из дверей. Научились.
Сломал все патрули 😒
😁2
Очередной день до трех часов ночи сижу, пытаюсь починить систему патруля.
Уже жалею что нет готового решения за бабки (на самом деле есть, но не для моего случая).

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

Так и живем (тяжело) 🫠
😱4😁1
История повторилась, и повториться вновь!
Четыре утра, и я радостно прихожу к мнению что грамотный дебаггинг на голову превосходит ИИчки.

Буквально ситуация как она есть. Час я разбирался с чатом GPT что может быть не так с вчерашним проблемным кодом. Он строил теории о том что проблема может быть таймингом проверки на точки маршрута. Дескать, надо поставить таймер в корутину чтобы логика не могла проверять достижение новой цели сразу после выхода из айдл анимации.
Пишет код с очень важным видом, говорит, ставь его... А потом оказывается что корутины в анимационных стейт машин бехевиорах не работают.
Он отвечает на такое "действительно! Надо вынести в монобехевиор!". И пишет новые куски кода. С начала относительно правильный метод, который по какой-то причине пытается менять несуществующий в аниматоре параметр... А потом пишет совершенно новый класс стейт машин бехевиора для аниматора посвященный выходу из айдл анимации! То есть, просто начинает придумывать новый скрипт для непонятно чего без нужды в этом.
Я спросил его что это такое, на что он ответил "Так ты сам переименовал один из своих скриптов похоже".

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

И тут произошло великое. То, чего я не мог сделать последнюю пару дней. В процессе перечитывания методов, я начал тупо прожимать поиск всех ссылок на методы связанные со сменой актуальных данных для монстра. И нашел уже забытую мной корутину ухода в айдл анимацию, в конце которой был вкинут метод на смену новой точки маршрута. Метод, который дублируется сразу же после запуска корутины в основной части кода контроллера!

Это был отвал всего.
Хваленая ИИшка не смогла найти примитивное дублирование кода на смену точки патруля, хотя имела все скрипты на руках, и выдумывала проблемы и их решения.

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

Прошу простить за мемуары недопрограммиста подсевшего на нейросетки, но, это жесть. Скажем так, зарисовка из мира животных для людей, не страдающих подобной ересью.
Вновь и вновь подтверждаю для себя что нейросети развивают пагубные привычки и способны вызвать проблем не меньше, чем решить.
👍4
Жиза
Forwarded from Notebook: GameLab
👍3🔥1
Испытываю новые варианты визуала интерфейса.
Пока не знаю, как оно будет работать, но охота сделать Систему лутания с крутящимися прогресс барами, анимациями появления лута и всеми такими свистоперделками 🤔
🗿1
Вот так вот понятнее будет с норм фоном...
И сразу видно что чего-то не хватает, мелкая сетка как будто требует чего-то еще поверх.
Пока что нет обновлений, потому что с головой ушел в арт и монстру.
Пока не хочу спойлерить, но там хорошечно должно быть.

Пока что главная цель - собрать минимальный необходимый топ контент для трейлера.
Состояние би лайк:
👀3🫡2
Знаете, иногда у тебя много работы, но ты не можешь не заниматься херней...
😁72
Долгое время я не мог определиться, какой пистолет-пулемет я хочу добавить в игру. И тут я наткнулся на него... На MGD PM9.
Да, это экстремально компактный в сложенном состоянии, французский ПП роторного действия. И это слишком безумно чтобы быть реальным... Но это реально.
🤯42👍21