H_Rush

Истребители багов: система взаимодействия с магазинами

Истребители багов: система взаимодействия с магазинами

Выпуск от 11 октября 2017г.

На этой неделе Спенсер Джонсон подменит Марка Эйбента и приложит все усилия для устранения бага, который мешает игрокам взаимодействовать с одеждой в магазине Casaba. Посмотрите, как Спенсер грызет печеньки Марка и избавляется от этого бага.

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

Ранее система взаимодействия применялась для переноски контейнеров и прочих вещей, но теперь она используется и для совершения покупок в магазинах. Вы подходите к стеллажу с пушками, наводите курсор на пистолет, и в этот момент включается подсветка. Затем вы можете взять оружие в руки, изучить его и, в конце концов, приобрести через интерфейс мобиГласа. С оружием система работает хорошо, но если отправиться в магазин одежды Casaba и навести курсор на куртку, то подсветка не сработает. Нельзя ни примерить понравившуюся вещь, ни купить ее. Это содержательный баг, и причин его появления несколько. Рассмотрим их по порядку.

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

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

Однако предварительная инициализация физики приводит к возникновению еще одной проблемы, которая довольно часто встречается при разработке игр. Когда дизайнер устанавливает физику в специальном компоненте в DataForge, он выбирает тип физической модели. Это может быть статическая физика (для объектов, которые не двигаются), физика твердого тела (для объектов, которые могут перемещаться), физика куклы (для рэгдолов), физика сочленений (для веревок, цепей и подобных им объектов) или физика частиц. Проблема в том, что к этим параметрам нет прямого доступа из кода. Если выбрана статическая модель, нельзя потом изменить ее на модель твердого тела.

У каждого контроллера физики сущностей есть свой компонент для физикализации (присвоения объекту определенной физической модели). Вообще система физики в игре очень сложная, но физикализатор – это ее маленький ключевой элемент. Существует требование, что у каждого объекта физикализатор должен принимать значение, отличное от NULL (неопределенности), иначе возникнет критическая ошибка. Но для предметов в магазинах это требование можно проигнорировать, поэтому для устранения бага придется от него избавиться.

В начале кода при инициализации физического контроллера идет проверка, есть ли у объекта свой физикализатор. Мы знаем, что его нет, потому что предметы создаются через код, а физические параметры им присваиваются в DataForge. В этом месте возникнет критическая ошибка, а значит проверку нужно просто отключить.

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

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

  • Like 1
  • Thanks 5

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


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

Хрюш спасибо =) Начало видео капец ржачное =))))

Изменено пользователем sfunlimit

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


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

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

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

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

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

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

Войти

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

Войти


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

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