Итак, для тех, кто не заходит на Геймдев, продублирую пару постов сюда:
Цитата
Так, тема апнута. Скрины и видео в этот раз прикладывать немного лень, поэтому расскажу занятную историю про ловлю багов.
Обычно баги не особо интересны: ну крашнулась игра, обратившись к несуществующему обекту — нашёл, поправил, скукота.
Но иногда случается кое что поинтересней. Про вес бренных останков в этой теме я уже рассказывал, теперь расскажу про мини-босса и его миньонов.
Итак, в подземелье поставлен мини-босс. Он умеет спавнить миньонов пачками. После первого запуска выясняется, что его можно расстреливать с порога комнаты.
Не вопрос: комната увеличивается в размерах, босс задвигается куда-то вглубь, на линии стрельбы ставятся две толстенные колонны, полностью его скрывающие.
Новый запуск, судя по логам бос спавнит миньонов и тут же вступает с ними в бой. Как так? Кто в какую сторону воюет?
Этот вопрос решается просто: выданное боссу заклинание не было предназначено для использования мобами, поэтому при спавне миньонов в конструктор передавались фракция party и отряд partysummons, а вовсе не фракция и отряд кастера.
Исправляем, запускаем, кастуем миньонов партией для теста — краш. Краш случается во время исполнения кода проверки условий отрисовки магических книг.
Дело в том, что классы магических книг нужны только для отрисовки книг и иконок заклинаний в них, а также для выбора заклинаний вручную, отображения их описаний и прочей визуальщины.
Соответственно, внутри мобов не создаются, только внутри персонажей партии. Проверка идёт по имени отряда, к которому принадлежит кастер. А кастер в данном случае состоит в партии.
Соответственно, предыдущая правка всё и ломает: ведь вместо partysummons теперь прилетает party, если кастует персонаж игрока. Добавляем проверку отряда в спавн миньонов.
Запускаем, заходим к боссу, выносим первую волну охраны… Что за нафиг? Откуда взялись невидимые миньоны?! Я этого не писал…
Вот тут я прям надолго закопался, все этапы расследования приводить смысла нет, я много чего проверил: та ли моделька грузится, запихивается ли она в нужные массивы, нет ли ограничений на количество заспавненных моделек, приводящее к такому странному эффекту.
Ничего не мог найти, пока не обратил внимание, что в состояниях невидимых миньонов отображается «вонь». А у видимой охраны этого состояния нет. Вот тут-то дело с мёртвой точки и сдвинулось.
Итак, у босса есть состояние «аура отвращения». Каждые сто или двести тиков оно вешает на всех мобов радиусе 1 клетки состояние «вонь».
Это состояние, в свою очередь, раз в сто тиков вешает на окружающих состояние «тошнота», кроме того, содержит теги, снижающие харизму носителя (ну какая харизма у вонючки?) и скрыт (находят по запаху).
А ещё у моба есть функция, проверяющая по тегам состояний, стоит ли моба отрисовывать. И написана она была давно, когда состояние с тегом stealth было ровно одно: собственно скрыт.
И проверяет в связи с этим только первую часть тега. Позже добавились ещё состояния с тегом, но старая функция не отличала {"stealth", "increase"} от {"stealth", "decrease"}, т. к. проверяла только первую часть. Соответственно, пованивающие миньоны становились невидимыми для игрока.
Вот такая вот история про поиск багов.
Цитата
>>Меня больше интересует чего это у героев на скриншоте инвентарь шприцами забит. Ибактерии какие-то с кровавыми тряпками. Все понимаю "в славянском сеттинге" но так уже перебор мне кажется.
Фантази торчки "в поисках закладки древнего дракона"?
Во-первых, это магазин. Расположен в замке, занятом разумной нежитью.
Во-вторых, там торгуют кровью. По местным порядкам дело вполне законное. По крайней мере, если поблизости нет каких-нибудь инквизиторов Церкви Исандара или представителей Пресветлого Ордена Зонг. В общем, всевозможных чистоплюев с лозунгами о защите человеческой расы (представителей которой, заметим, они и сами порой в расход пускают).
Некроманты, спиритуалисты, алхимики, химерологи, демонологи слова против не скажут. Напротив, всецело одобрят такое дело.
По лору в мире игры действует правило «магия в крови». Кровь используется в алхимии, спиритуалистических ритуалах, артефакторике, создании нежити, големов и химер.
Нежити и хищной фауне кровь нужна, чтобы использовать силу Граней (читай, элементальную магию) — потому всякие личи и чудища на людишек и охотятся, ради пропитания можно и попроще добычу найти. На кровь завязано использование «святой магии»: существо нечеловеческой природы просто не сможет воззвать к какому-либо божественному (точнее, считающемуся божественным) вмешательству.
Кровь можно купить, а можно получить с использованием навыка «свежевание», применив оный на помещённой в инвентарь тушке поверженного противника. Тогда помимо шкур, зубов, мяса, компонентов для некромантии и алхимии, можно ещё заполнить парочку пустых шприцев определённым типом крови.
>>Ибактерии какие-то с кровавыми тряпками.
«Бактерии» — коконы с некроконструктами. Могут быть активированы, тогда некроконструкт пополнит собой список призванных существ отряда. Пупырчатый червяк — кормовой червь для нежити. По сути лечилка для неё же, т. к. лечебная алхимия и целительская магия на некроконструктов не действуют.
«Окровавленные тряпки» — политкорректное отображение трупа.
>>но так уже перебор мне кажется
В чём перебор-то? Некромантия дело грязное. Это тебе не в стильной чёрной робе «копьями праха» кидаться. Зато сразу понятно, почему некромантов местное население не любит: почётное второе место по степени нелюбви, сразу после демонологов.