Опыт - сын ошибок трудных

Каждый фатал по своей природе уникален. Они не появляются в каждой игре, а являются следствием соединения сразу нескольких обстоятельств воедино. Я запускаю карту раз по 50 в день, и любые проблемы, которые появляются «стабильно», всегда попадут на стол для препарирования, не дойдя до игроков. Единственное исключение — мультиплеер, тестировать который мы начали после провала с самой первой 88a, которая идеально работала в сингле, а в сетевой игре страдала от множественных фаталов и десинхронизаций.

Источников для проблем было великое множество. Работая с уровня встроенного игрового кода, прострелить себе ногу довольно сложно — каждая команда внутри оснащена всеми необходимыми проверками безопасности и корректности аргументов, за оочень редкими исключениями. Уронить игру в фатал весьма непросто — и обычно это достигалось не с помощью кода, а его побочных эффектов и недоработок самих Blizzard. Например, существует хорошо известный мапмейкерам фатал при удалении книги заклинаний, содержащей ауру, с мертвого юнита. При таком стечении обстоятельств игра мгновенно вылетает, и в прошлом это недоразумение подарило немало часов дебаггинга в LOD. В чем же была проблема?



Читать дальше →

Какие дебафы снимаются?

Когда-то давно фрог использовал станадртную функцию «снять дебафы с юнита», но у неё была масса проблем. Например, нельзя было выбрать, что снимать, а что не надо. Поэтому тогда и абаддон, и тайд плевали на ульт дума.

Сейчас старый принцип «снимаем всё» остался только у щита и ульта  . Для остальных теперь везде используется отдельная функция, которая снимает четкий список бафов и способностей, имеющихся у героя. Итак, что могут снять
     ?

Читать дальше →

Убить нельзя отхилить, или почему сларк суицидится

DoT — damage over time, урон со временем. Самый очевидный дот — это ульт дума или веномансера, когда юнит просто получает с течением времени урон. Дот бывает двух типов — тот, который убивает, и тот, который не убивает. А теперь поговорим о самых интересных Дотах.

Читать дальше →