H_Rush

Истребители багов: управление турелью

Истребители багов: управление турелью

Выпуск от 30 августа 2017г.

В этом выпуске Марк разбирается с багом, который позволяет пилоту Cutlass управлять верхней турелью. Узнайте, какие зависимости необходимо исправить, чтобы управлять турелью мог исключительно стрелок.

Марк начал с уничтожения ноутбучного жесткого диска, затем перешел к тестовому уровню, куда был загружен Cutlass с полным набором вооружения. Если начать стрелять, огонь будет вестись сразу из всех орудий, включая и пушки на верхней турели. Такого быть не должно. По задумке, управлять верхней турелью может только стрелок. Из-за неверных зависимостей в окне отладки видно, что четвертое и пятое орудие (расположенные на турели) управляются пилотом с приоритетом 10.

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

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

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

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

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

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

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

  • Like 5
  • Thanks 3
  • Upvote 1

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


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

спасибо за  отличный пост! теперь много становится ясно. а я думал на самом деле баг. Ну по идее так и правильно (мое мнение)

 

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


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

Спасибо. Большое спасибо.

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


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

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

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

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

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

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

Войти

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

Войти


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

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