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

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

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



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

Веселая жизнь официальных патчей

Blizzard выпустили тестовый патч 1.29 еще в феврале, открыв специальный сервер для желающих поиграть на нём. Это был первый патч, добавляющий в игру контент и что-то новое, в частности — нормальную поддержку широкоэкранных мониторов, поэтому желающие нашлись, пусть и не каждый второй. Плюс они привлекли разработчиков карт, добавив несколько новых возможностей для редактора. Но сааамое главное, что они сделали, и что продвигалось как только можно — это расширение списка игроков до 24 слотов. 24, карл! Представь себе, можно набрать 23 друзей и рубиться в великолепные новые карты всем вместе!



И вот, в минувшую среду, компания решила — да хорошо же получается! Давайте тогда сразу зальем на основной сервак, чтобы тесты шли активнее. И тут начался Рагнарек.

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

Я уже говорил тебе, что такое безумие?

Краши преследуют карту по пятам долгое время, но последнее время всё сильнее отстают — сейчас чаще встречаются проблемы при выходе из игры, а не посреди неё. Разгадать причину падений, их отправную точку, всё так же не удается — судя по всему, проблема начинается где-то заранее, а затем срабатывает по эффекту накопления, когда выйти на первоисточник уже невозможно. Например, юниту вручается приказ с неверным обратным адресом, и тот приступает к выполнению, после чего происходит запрос к этому обратному — а там мусор. Либо же адрес с данными перезаписывается извне на некорректный, но за последние месяцы прямые вмешательства в память сведены к минимуму — пытаюсь перевести всё на стандартные функции игры, как она привыкла.



Но некоторые фаталы поражают своей… невозможностью. Как, например, этот, ради которого я и решил написать этот микроблог.

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

Дальность атаки и кастов

Лич любит исправлять баги там где их нет. Cегодня мы разберёмся в одном из таких случаев и рассмотрим механику дальности применения заклинаний и атак.

В карте 6.88v8 появился баг с дальностью атаки вышек — они будто потеряли часть ренджа, при этом визуальный индикатор остался старым, кроме того милишники чтобы атаковать тавер стали подходить к нему вплотную. И причина этого в уменьшении коллижен сайза (collision size) вышек. Что это такое? Зачем это было изменено? Почему из-за изменения коллижена изменился рендж вышек? Давайте не будем останавливаться на частных вопросах, а углубимся в механику чтобы сразу ответить на все возможные вопросы.

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

Превозмогая 88

Мы продолжаем КВН обрабатывать напильником престарелую 88, докручивая параллельно некоторые новые фичи. К сожалению, карта до сих пор не вышла на 100% стабильности, и фаталы мало-помалу, но случаются. В данный момент я занят анализом прошлых логов крашей в попытках устранить точки отказа, и до 7.00 с её прибабахами пока далеко нет дела. Поэтому — немного о делах насущных, а затем — очередной баг любимой игры. Ах, обожаю эти ножи в спину.




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

Новый патч на варкрафт и что он нам сулит

Пока идут работы по полировке 88 доты (да-да, семерка все еще ждет), близзарды внезапно проснулись и выдали очередной патч-шедевр. В принципе, абсолютно любой патч, даже пустой, будет назван фанатами шедевром. Все подобные хвальбы можно узреть на официальном форуме, где есть и ссылка на загрузку установщика (ключ просит после завершения установки, где его брать — сами знаете). Здесь же — мнение ярого циника, желающего просто делать карты.



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

Классика - это..

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


Ссылко

Ну что тут добавить…
Ебать ты пух… Земля. Братишка тебе далбаебом



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

Неведение - благо, или работает - не трогай

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

Специалист по регенерации недоумевает

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

Маленькая ретроспектива

730 дней — именно такой срок потребовался для многострадальной DotA Allstars 6.88, чтобы увидеть свет в качестве стабильной версии. Полторы тысячи строк ченжлогов, десятки перекрестных багов, долгие дни ожидания баг-репортов, личностные проблемы с мотивацией, временем и целями, да и просто личные проблемы — всё играло против проекта.

Патч 6.86 вышел в DotA2 в середине декабря 2015 года. Большинство изменений были достаточно тривиальными, но были и те, которые явно ломали возможности варкрафта. Пожалуй, самой невозможной тогда была новая способность войда увеличивать кулдауны заклинаний на ходу, о чем и было написано в блоге чуть позже. Тем не менее, заниматься переделкой патча было некогда — жизнь била ключом по голове.




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

Как один недочет полгода заруинил

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

Собрав определенное количество репортов с логами крашей были найдены основные точки отказа — они лежали в интерпретаторе JASS. В местах, где должен осуществляться поиск по имени функции или переменной, что-то шло не так — словно запрашиваемые имена не существовали. На практике это было невозможно — JASS строго проверяет синтаксис и не позволяет обращаться к необъявленной переменной или функции, учитывает регистр букв, не позволяет использовать символы за пределами ASCII. Запустить карту с некорректным именем переменной просто не получится, а значит, что-то портило имя на лету. Но что именно?




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