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

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

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




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

99 маленьких багов в коде: продолжение

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

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

99 маленьких багов

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

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

Spectre, которая забрала все группы

Небольшой абуз, который позволяет серьезно подпортить нервы в игре, но раз фрог уж допустил такую проблему и не исправляет её уже несколько лет, почему бы и нет.
Нам понадобятся:
  •  Spectre — 1 штука;
  • 6-й уровень или выше — 1 штука;
  • Кнопка R — 1 штука;
  • 30-120 секунд, в зависимости от среднего APM.


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

Кстати, о вин хаке

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

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

6.81d: фишки и уточнения

Вместе с организацией «Никто не знает» и её представителем Kuarinofu мы записали клип «Баги, фичи, абузы, интересности, приколы, невероятные приключения в DotA 6.81d»



Смотрим, комментируем, ставим пальцы вверх.