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

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

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




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

Сокрытие юнитов ("астралы")

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

О проблемах, фичах и особенностях паузы есть отдельный блог, написанный давным давно.

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

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

Игровое зрение

Это перевод статьи уважаемого PD-механика, программиста и просто хорошего багета парня LordShinjo. Для тех, кто читал его оригинал, все равно будет кое-что новое — в основном я сгорю буду говорить о том, почему всё плохо, какие проблемы с видимостью имеются в доте и как они были решены.


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

No AI

Не погружаясь в дебри того, что такое разработка, трудно увидеть разницу между написанием скиллов и созданием ИИ, способного их применять. Может, для экс-СНГ боты и не являются приоритетом, множество игроков из далеких, но еще активных, регионов чаще сидят без интернета вовсе. Ряд вопросов «а когда ИИ версия?» не оставляет выбора, кроме как попытаться объяснить разницу.

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

Winhack и с чем его едят

В 2008-2009 гг дота набрала сурьезную популярность, и встал вопрос — как следить за ней? Формат карт варкрафта подразумевает разворачивание событий от старта и до самого конца, без необходимости что-то сохранять в процессе. Кликнул в XY, отдал приказ X в юнита Y — ничего из этого дублировать в реплей не нужно, но и узнать о событии аналогично нельзя. А хотелось как-то автоматизировать процесс получения инфы о КДА, героях, артефактах. Тогда и придумали использовать для этого функцию SyncStored*. (* = Integer/String/etc, формат данных).

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

Nerif the Oracle



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

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