ИСТОРИЯ ОДНОГО БАГА 🐞
Оказывается, бывает такое: разрабатываешь проект самостоятельно. С нуля. Без использования каких-либо ассетов влияющих на логику.
Ты:
1. Полностью знаешь свою кодовую базу.
2. Чувствуешь себя в нём как рыба в воде. Тем более, пока проекту всего-лишь месяц.
3. В своём проекте царь и бог.
Никто не разбирается в этом так хорошо как ты. Ты — на коне
(или на морском коньке, если учесть пункт 2 в тексте выше 😁)Но при внедрении очередной фичи приходит он.
Мелкий баг с отображением/логикой/расчётами. Нужное подчеркнуть или вписать.
Ты, с гордо поднятой головой, открываешь нужные скрипты, сущности, что-то ещё. В полной уверенности, что фикс
не займёт много времени. Ты думаешь, что у тебя все под контролем. Ведь баг-то плёвый: допустим, это странное подёргивание камеры при простой смене позиции и вращения от точки А до точки B. 🤔
Именно это случилось со мной. На видео я продемонстрировал как это выглядит.
Первым делом я полез проверять функцию движения камеры.
Как писал выше: движение делается через линейную интерполяцию (Lerp). Отдельно для позиции и вращения, от A до B. На всякий случай 👇
Lerp — это функция, которая вычисляет промежуточное значение между двумя известными значениями A и B в зависимости от параметра Alpha, обычно в диапазоне от 0 до 1.
В этой функции я не нашёл ничего подозрительного и пошёл проверить всё с ещё раз запущенной игрой. Попробовал вручную потыкать позиции камеры — баг не воспроизводится. Я забыл про это недоразумение на некоторое время, спихнув всё на глюки движка. Мало ли что могло систему нагрузить в этот момент. Пошёл разрабатывать дальше.
Как может понять кто-то опытный из геймдева, баг никуда не исчез — он затаился. И дожидался ночи, когда я хотел спокойно пойти спать.
При последнем (как я думал) запуске игры снова нарвался на это подёргивание камеры. После некоторого времени локализовал проблему — виновата новая фича с автоматическим перемещением камеры
при появлении НПС перед терминалом и передаче документов к проверке.
До 4 ночи я просидел за исправлением проблемы, корня которой не понимал. Функция же простая. Новая логика
переиспользует эту функцию. Ничего нигде не дублируется в этой части. Подёргивания при автоматическом перемещении
есть, при ручном
их нет.
На этом пока что остановлюсь и попробую сделать интерактив
Как ты думаешь, что могло произойти с такой простой логикой перемещения камеры?
Почему возникает подёргивания?
Пиши свои предположения в комментариях 💬
Если предположений нет, то пиши в комментариях "БОЛЬ.", если тоже сталкивался с доставучими багами на многие часы дебага.
Или просто напиши что-нибудь, если хочешь 😁
А я буду дописывать второй пост с ответом и допиливать видео😶
UPD:
продолжение ниже 👇
#devlog #bugs
😀😀😀
Код & Полигоны