Когда в дебаге заметил баг
который не относится к твоей текущей таске.
который не относится к твоей текущей таске.
Во время обучения в университете свое свободное время я тратил на создание своей игры — гонок. Я создал карту, нарисовал текстуры, создал водную поверхность с отражениями и преломлениями.
Следующим шагом было добавление машины. Здесь начались проблемы. Перед созданием красивой модели я решил начать с малого — с куба. Простой красный куб был создан и помещен на поверхность. Я запустил игру, но ничего не произошло. Куба не было. Чтобы куб было проще найти, я поместил его в центр карты, но его опять там не оказалось.
В программировании графики есть одна интересная вещь — обычно очень сложно найти источник ошибки. Нельзя применить отладчик к фрагментному шейдеру или посмотреть логи. Остается только изменять параметры, в надежде обнаружить ошибку.
После внимательного изучения своего кода я начал играться с параметрами. Сначала я поменял цвет куба с красного на белый и перезапустил игру. И знаете что? Маленький белый куб красовался на земле. Может быть я перепутал красный, зеленый и голубой каналы с альфа-каналом, задающим прозрачность? Я снова проверил, но ничего не нашел. Я поменял цвет на голубой, куб остался. Вернулся к красному. Куб исчез.
Это было странно. Почему не видно красный куб? Я проверил фрагментный шейдер. Я проверил режимы рендеринга. Я даже проверил настройки шаблона. Всё было хорошо. Но почему тогда мой куб не видно?
Я сделал его опять красным, и знаете что? Он появился! Я вернулся в самое начало, но теперь куб было видно! Ошеломленный, я отвел взгляд от монитора. Когда я посмотрел обратно, он опять исчез. Потом появился. Потом опять исчез. И тут меня осенило.
Куб был там все это время. Ошибка была не в программном или аппаратном обеспечении. И даже не в окружающем меня пространстве. Причина, по которой я не мог видеть красный куб на зеленом фоне, оказалась простой — я дальтоник, и путаю красный цвет с зеленым.
Оригинал: http://www.ilikebigbits.com/blog/2016/11/22/the-unfixable-bu...
Перевод взят отсюда: https://tproger.ru/translations/eternal-bug/
Как-то я решил написать скрипт для Akelpad. Но работать он упорно отказывался. Методом последовательного исключения блоков скрипта я смог найти место, вызывающее ошибку, это была буква «р» в комментах (!) к скрипту. Дело в том, что Akelpad определял кодировку скрипта по каким-то своим статистическим алгоритмам, и конкретно на этой букве они давали сбой: без нее он работал правильно, а с нею всю кириллицу начинал воспринимать неправильно.
Для решения проблемы достаточно было написать коммент с любым достаточно длинным кириллическим текстом, чтобы кодировка больше не вызывала у него сомнения. Ну я и написал «Отче наш, Иже еси на небесех! Да святится имя Твое, да приидет Царствие Твое, да будет воля Твоя, яко на небеси и на земли» — и всё заработало.
В тот момент я пожалел, что никто у меня за спиной не наблюдал процесс отладки.
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509