H_Rush

Истребители багов: разламываем Sabre

Истребители багов: разламываем Sabre

Выпуск от 27 сентября 2017г.

На этой неделе выпуск "Истребителей багов" проведет наш специальный гость Патрик Салерно. Он подменит занятого в работе над 3.0 Марка Эйбента и исследует проблему, почему Aegis Sabre при разрушении не разваливается как положено.

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

Ранее разработчики добавили задержку при отделении обломков и порядок, согласно которому эти обломки должны отламываться от корабля. Первым делом нужно выяснить, какой элемент кода Sabre работает некорректно. Один из способов это сделать – найти в коде нос корабля и те детали, которые должны от него отделяться. Патрик обнаружил, что там не было эффектов. Из-за внесенных ранее изменений эту часть кода теперь необходимо перестроить, а также добавить в нее новые функции.

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

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

Патрик переключился на 3D Max и стал смотреть, как элементы корабля вообще должны отделяться. В иерархии корабля хорошо видны зависимости одних деталей от других. Если выделить крыло, в окне перспективы появятся зеленые квадратики – вспомогательные объекты, использующиеся для создания спецэффектов. Таким образом можно не только устранить основной баг, но и отрегулировать работу последних. В итоге Патрик настроил частицы и параметры повреждений, перегрузил xml в тестовой сцене и начал методично отстреливать крылья и прочие выступающие элементы корабля. Теперь детали корректно разлетаются в стороны по множеству различных векторов.

Если посмотреть в xml на код носа корабля, там можно обнаружить строчку, отвечающую за отсоединение. В ней заданы два параметра: степень отделения и возможность отделения, а также указаны произвольные силы (для осей X, Y и Z), благодаря которым деталь после взрыва отлетит в сторону. Здесь можно установить правило, чтобы после уничтожения носа возникала некоторая вероятность его отделения. И это нужно проделать с каждым отделяемым компонентом.

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

Еще одним багом в игре стало меньше!

  • Like 3
  • Thanks 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу