Triggered skills explained [part 1] by Tales

By Tales, from Dota-Allstars.com, 2008

Why am I posting this if I'm still missing 3 skills? Mainly because the three skills are a pain in the butt (well, except Leap, but it's a Fing maze and I'm trying to make it legible) and whenever I see them I get instantly deanimated, plus Touhou: Mountain of Faith is too good of a game ><. This list has been on hiatus for like 3-4 weeks, with only the three missing skills which are Leap (I think this is completely doable, but the ghost of the first time I have seen it is still there), Battle Hunger (it's very complex with the system to detect dummy units kill to remove the Hunger), and Divided we Stand (this is simply too long, it's like half of the whole Invoker in length, and Invoker took me 10+ hours to write).
Also some corrections may be needed, because I forgot to list a skill with a small triggered aspect or since I began listing this at 6.48 some balance changes/fixes may have happened that I skipped from the changelog (or weren't listed).

If you see some random spanish in any place, it means that something should go there but I forgot to do it, a link or maybe a trigger call. You'll obviously see it on the three missing skills.


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

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

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

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



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

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

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

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




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

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

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

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

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

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

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

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


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

No AI

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

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

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

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

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