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

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

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

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

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

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

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

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

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

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

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

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

logo

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

Squadrone 42 тизер

Squadrone 42 тизер

Хо хо хо граждане! CIG выпустили охренительный тизер! Разбор того что нам показали после просмотра! https://youtu.be/_aCE7gxQOVY Далее пойдут спойлеры - катов не будет поэтому жуйте как есть. =) Показали грядущие технологии туманностей. По сути эти же технологии будут отвечать за...

БРАТЬЯ ПО ОРУЖИЮ. ЧАСТЬ 1

БРАТЬЯ ПО ОРУЖИЮ. ЧАСТЬ 1

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

Портфолио Crusader Industries

Портфолио Crusader Industries

Создатели Genesis межзвёздного пассажирского лайнера, обширного грузового парка и новейших шатлов, Crusader Industries титаны аэрокосмической отрасли. Эта компания настолько мощная и известная, что купила себе целый газовый гигант в системе Stanton и сделала его своей штаб квартирой. Несмотря на...