Девлог #1 - плохой программист создаёт за год два новых рабочих места

Всем привет. Мы - почти соло девелоперы и создаём микроидванию про пингвина, уничтожающего роботов, чтобы остановить глобальное потепление.
Но сегодня о том, как я потратил часа три на ошибку, которой не должно было быть изначально.

Фабула. Сделав утром рефакторинг на полсотни файлов, я нашёл новый баг. После возрождения пингвин начинал летать.

Как я понял, что это баг? Тут всё просто:

1. Он не машет ластами (и тем более крыльями) - у него даже анимации такой нет.

2. Пингвины тяжелее воздуха и поэтому не летают, как и страусы.

Поверив, с большего, остальной функционал, спокойно отправился вознаграждать себя за проделанный труд, решив, что пофикшу этот пустяк позже.(гифка с Бильбо)

Я в Юнити не очень разбираюсь, так что обижался на него и сетовал на всё подряд, включая возможный баг с физикой. Проблема, конечно, была во мне.

Преамбула. Код я частично сделал по урокам, частично надобавлял сам в хаотичном порядке держа в голове мантру "прототип же, сейчас навалю кучу, а потом всё по красоте сделаю" (никто ,конечно, ничего не сделал).

Суть рефакторинга заключалась в том, чтобы выпилить ненужную в нашем проекте (по моему скромному мнению) прослойку абстракции.

А проблема заключалась в том, что эта абстракция заодно контролировала порядок выполнения апдейтов в определённых компонентах. И так как у нас есть удивительные строчки вроде

Rb.velocity = CurrentVelocity;

в одном месте и

CurrentVelocity = Rb.velocity;

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

Заключение писать не получается, так что.

2
Начать дискуссию