Мапхак и как его едят

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



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

Warcraft 3: Голодные игры

Тяжело найти игру, которая пыталась бы так экономить память и процессорное время, как  WC3. Ну серьезно, здесь кэшируется всё, что используется хотя бы один раз. Разработчики хотели добиться такой плавности, чтобы даже на чертовом Pentium 2 игра летала. Конечно, это не было указано в минимальных требованиях, но попробовать всегда можно.



Оптимизация, особенно в сравнении с каким-нибудь проектом уровня  Dota2, поражает. Пока творение на Source-движке отжирает память аки голодный Chrome или старая Лиса, требуя 1 Гб оперативной памяти только для загрузки главного меню,  WC3 просит ~500 Мб на меню и всю карту целиком. Это уже не говоря о скорости обработки информации — пока  Source в несколько ядер бездумно обрабатывает отрисовку шапочек и умудряется лагать,  WC3 держит 200+ юнитов на экране и не особо этим утруждается. Конечно, последнее зависит и от рук автора карты — в том же LTD наплыв крипов вполне успешно ложит производительность. Но старые добрые башенные защиты доказывают, что сам  варкрафт с этим справляется на 5+.

Здесь — о том, какой ценой были достигнуты подобные успехи, и к чему это привело.


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

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

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


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

Warcraft 3: еще о синхронизации

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

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

Warcraft 3: что такое синхронизация

Warcraft 3, как и большинство игр-продолжений, разрабатывался на движке своего прародителя — Warcraft II. Естественно, от того самого движка практически ничего не осталось с переходом в фул-3D, но глубоко внутри него всё еще можно найти артефакты из 90-х годов. Конечно, в начале 2000-х эти «артефакты» были скорее полезными и реально эффективными решениями, но сегодня они стали просто гирями на ногах.

Обсуждаем — синхронизацию и винхак.

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

Бесконтрольное веселье, или как сломать Ликана

Про морфы и их фишки я писал не однократно — см. Трансформации и Доджинг. Но один из багов, связанный с ними, достоин отдельного упоминания в данном разделе. Это баг псевдоконтроля — состояние, когда юнит выполняет приказ до конца, и только после этого способен идти выполнять новые приказы. В версии 6.83 фрог наглядно демонстрирует этот баг при помощи  Lycan.


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

Поведение крипов

Сразу после появления  фуриона нашлись оригиналы, которые обнаружили «зависание» крипов, пойманных в деревья. Эти крипы навсегда выключаются из игры и стоят на месте. Вернуть их к нормальной жизни можно лишь в случае, если их застопили рядом с одной из зон-чекпоинтов. Про чекпоинты и причины тупизны крипов было написано еще в этом блоге. А о том, что это не фича, прямо говорит система дото-путей, написанная в 2002 году и с тех пор не менявшаяся. Фрог забил, есличо.

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

Techies' Land Mines

I'm living like a landmine,
waiting to explode

Реализация хардкодных  наземных мин оставляет желать лучшего. Не имеет значения, какие цели настроены — взрываются всегда только наземные юниты. Парящие и летающие просто не воспринимаются движком. Что-то на уровне Entangle или Cyclone, или даже хуже. Не менее интересен и игнор неуязвимых юнитов.

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