Минувший год

Год был длинным и далеко не богатым на релизы. Причины тому можно описывать долго, но все они банальны — в битве «покушать vs дота» всегда победит «покушать». Если кто-то не согласен, то присылайте свои покушать на известные реквизиты сразу после катки. И практически до самой зимы дотка оставалась где-то на третьем плане.



А где карта?

В начале мы закончили фиксы для 85, подтянули, насколько было возможно, патчами. А в конце марта, когда уже планировалось создание супер-костылей для реализации супер-фич нового 86 патча, появился маммемхак.

Что это такое?

Программа типа варкрафта — это просто поток байтов. Что видит, то и поет. Вся суть прикладного языка jass, на котором работают карты типа доты, в написании какой-то инструкции действий, т.е. текста песни. Чтобы не пугать новичков, да и не увеличивать время разработки, близзарды оставили лишь базовый набор нот. Грубо говоря, от органа оставили пианино, а остальное скрылось за стенкой «виртуальной машины».



Мемхак (memory hack, взлом памяти) рушит эту стену и открывает полный доступ ко всему инструменту. Единственный минус технологии — воспользоваться этой брешью можно в любых целях, от расширения игры и её возможностей (как сделали мы) до тотального порабощения компьютера игрока за счет встроенного вируса, который будет запущен с теми же правами, что и варкрафт (у большинства юзеров — админскими). О том, что не стоит качать карты с «левых» источников, где их мог отредактировать кто угодно, уже говорилось.

Что это дает?

Это дает возможность реализовать всё, что сделали в д2, и даже больше. Грубо говоря, своя игра внутри игры, со своими правилами. Проблема лишь в том, что даже простейшие вещи найти не так просто. Варкрафт — это закрытая программа, которая еще и в ЕУЛА запрещает пытаться взломать себя. Но нам примерно так же не всё равно, как и обычным юзерам с пиратскими дисками.



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

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

Раскопками артефактов занимается Караулов, за что ему отдельный респект, но он тоже скован узами реальной жизни и не хочет убивать всё свободное время на это дело.

А где же карта?

Можно легко понять, что предоставленный игрой инструментарий более-менее надежно защищен от стрельбы себе по ногам. В 99% игра не упадет, даже если втирать ей дичь высшей категории. А вот при записи в память никакой защиты нет — винда стреляет на поражение сразу же, как только игра засунет свой нос куда не следует.


Когда винда ловит запрос к нулевым секторам

Плюс достаточный объем времени ушел на изучение, собственно, техники, как подглядывать за варкрафтом, как искать и находить данные. Даже таблички с данными могли использоваться не самым тривиальным образом, о чем красноречиво говорит папка с ошибками, набитая на почти 800 Мб.

В первых релизах подобная проблема была частенько — предполагалось, что наши функции работают как надо. Варкрафт на это ответит «лол» и показал, что так просто его не возьмешь. В Beta код был полностью переписан на безопасные аналоги, поэтому падал реже, но жестче. Нашлось место и для багов, связанных с портируемой библиотекой, в которой лежат различные визуальные вкусности (вроде отображения регена и прочих мелочей). Наконец, в F были исправлены последние известные проблемы, но и здесь эпопея не закончилась.

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



Итоги года

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

С большой силой пришла и большая ответственность в виде вылетов. Боремся, будем бороться, однажды поборем, тем более, что благоприятные условия для этого есть.

Следующая стабильная™ версия выйдет уже в новом году. Каким именно будет номер года, пока уточняется. С наступающим.

3 комментария

avatar
не смогли(, но работа на перспективу норм тема
avatar
«Даже 7-й патч, перевернувший доту в подобие ЛОЛа, не будет проблемой» — Интересно, как вы хотите реализовать прыжки мк по деревьям и превращение его в грёбаную фласку?
«Это дает возможность реализовать всё, что сделали в д2, и даже больше» — А это радует)
avatar
Костыли — наше всё. Может, в точности и не получится, но суть постараюсь передать
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.