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

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

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

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

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

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

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

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

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

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

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

Источник: https://forum.star-citizen.pro

logo

ПОХОЖИЕ СТАТЬИ

ГАЛАКТОПЕДИЯ: Лейлендская черепаха

ГАЛАКТОПЕДИЯ: Лейлендская черепаха

Лейлендская черепаха: Черепаха Лейленда является одним из видов черепах, обитающих на Земле (Sol III). У них глянцевые раковины с небольшим изменением цвета вокруг щитков и краев раковин. Чрезвычайно послушные, люди держат их как домашних животных, особенно актуальны поставки на...

РАННЯЯ ПТАШКА. VIP-РАСПРОДАЖА VULCAN

РАННЯЯ ПТАШКА. VIP-РАСПРОДАЖА VULCAN

Заправка. Ремонт. Перевооружение. Сделайте универсальность реальностью благодаря Vulkan модели 2948 года от Aegis Dynamics. Этот корабль поддержки переопределяет значение трех "З": Заправиться, Залатать дыры и Зарядить оружие. Заправляйте оказавшиеся на мели корабли или заливайте баки...

Расписание на неделю 06.02.2017

Приветствую граждане! Можете себе представить, уже февраль месяц? В январе было проделано много тяжелой работы над Star Citizen альфа 2.6.1 и запуском Spectrum… и этот месяц  принес  эпичный вклад от нашего сообщества. Если вы все что-то пропустили, то настоятельно рекомендую посмотреть все что...