Проблемы WoW: сторона, классы, pvp/pve, damage/control
Blizzard — великая компания, у которой всем надо учиться. То есть так, натурально, садится, играть и смотреть, что как сделано и главное – думать, почему. Лет через десять такие игры все будут делать, ага.
Однако у ее последнего шедевра World Of Warcraft есть один довольно ощутимый недостаток. Состоит он в том, что... люди дураки.
Глупые, никчемные существа со стереотипным мышлением, а иногда вообще безо всякого.
Альянс vs Орда
Blizzard создала две противоборствующие стороны — альянс и орду, в каждой стороне – по 4 расы. Причем по легенде орда «уже не плохая». Орки освободились от демонического влияния, андеды — от власти Lich King, таурены вообще всегда были благородными существами. Что же касается Альянса — то эльфы и люди призвали в этот мир Burning Legion, люди нарушили мирную договоренность с Ордой первыми, дварвы — жадные копатели сокровищ, и так далее.
Хороший ход «все дураки» не удался. Много людей шло играть за альянс «чтобы убивать плохих», то есть орду, особенно не разбираясь. Типичная такая ксенофобия — кто не с человеком, тот плохой.
Следует сказать, что на стороне альянса есть два величайших jerk magnets: это паладины (которые «как воины, только еще и лечат», при этом «всегда убивают плохих») и, конечно же, ночные эльфы. Что такое эльфы после недавней популяризации Толкиена? Это наше все. Долгое время вообще самым распространенным персонажем на серверах был эльф-мужчина-охотник, имеющий всевозможные вариации имени, созвучные с «Леголас» (или как его там?).
Поэтому на многих серверах наблюдается дисбаланс населения в сторону альянса. Винят в этом Близзард, но если вы хотите, чтобы ваш персонаж «хорошо выглядел и убивал плохих», то идиот — вы, а не Близзард.
Есть, конечно, определенные дизайнерские недочеты — сначала вы выбираете расу, а потом вам показывают ее историю, то есть узнать, что орки, в общем-то, неплохие ребята, можно только после того, как вы решили играть орком, а не до. Впрочем, это не важно, так как многих устраивает аргумент «эльфы — это круто».
Классы и PvP.
Следующая проблема состоит в том, что в WoW есть девять классов. И «они должны быть сбалансированы в PVP». Есть два подхода к балансу:
1. «Все убивают всех». Каждый класс имеет все возможности убить другой класс. Это довольно тяжело балансировать, вводя для каждого класса некие способности против другого конкретного класса, в результате чего игра все равно превратилась бы в «кто первый нажмет на специальную кнопку (против этого класса) — то и победил».
Сделать, чтобы один класс мог победить другой, можно. Но очень сложно сделать, чтобы вероятность победы приближалось к 50%.
2. Второй путь — это всем известный принцип «камень-ножницы-бумага», то есть, условно, «Маг побеждает воина, воин побеждает вора, вор побеждает мага». При большом количестве классов это превращается в некую пищевую цепочку: класс (как правило) убивает N других классов, но проигрывает N другим классам.
Второй путь кажется лучше, однако тут кроется небольшая наебка. Всегда есть классы, которыми играют больше, чем другими, и это не имеет никакого отношения к игровому балансу. Пример, который я уже приводил — Night Elf Hunter. Им играют, потому что он стреляет из лука, как настоящий Леголас, а это круто!!!
Возьмем гипотетическую ситуацию, когда в игре три класса: «Маг побеждает воина, воин побеждает вора, вор побеждает мага». А теперь представим, кто каждым классом играет не ровно 1/3 всех людей. Вором играют 60%, потому что вор может уходить в невидимость, воином — 10%, потому что это скучно, магом — 30%, что как раз близко к 1/3. Предположим, что в боях с представителем своего класса побеждает тот, кто нападает первым (это не так уж и далеко от истины).
Таким образом — Игра для вора: если напал первым, то 90% всех побед тебе обеспечены. Так как вор выигрывает 90% всех боев, то он продолжает упорно нарываться на воина, при этом больно получает от него и идет жаловаться в форум игры, что воины слишком сильны. В форме на жалующегося вора плохими словами обзываются обиженные маги.
Игра для воина: воины побеждают в 70% случаев. Воинов это устраивает, они считают, что игра сбалансированная, но, увы, воинов всего 10% от общего числа игроков.
Игра для мага: маги побеждают в 40% случаев, если напали первыми. А если на мага напали, то у него всего 10% шанс победить — если на него напал воин. Маг искренне радуется, когда видит воина. Но такое случается редко, потому что мага постоянно убивают воры, а воинов в игре мало. В конце концов магу надоедает умирать, и он... тоже становится вором. Ситуация становится только хуже.
А было-то все по-честному — «камни, ножницы, бумага»...
Близзард приняли единственно верное решение, объявив свою официальную позицию по этому вопросу: «Игра не сбалансирована для PvP 1 на 1». — У вас нет баланса! — Да, у нас нет баланса.
Оспаривать больше нечего.
Классы и PvE.
Однако, большая часть игры — это PvE (Player Vs Enviroment), а не PvP (Penis vs Penis), то есть большей частью приходится убивать компьютерных монстров, а это две большие разницы — тупые монстры и совсем по-другому тупые игроки.
Возьмем наш пример из трех классов и предположим, что для того, чтобы убить крутого монстра с целью получения наживы, нужна группа, в которой есть и воин, и вор, и маг. (А так и должно быть, иначе некоторыми классами просто не будет смысла играть). И если вы воин, то попасть в такую группу очень легко — велика вероятность, что группа из вора и мага уже сформировалась и ищет именно воина, ибо их мало.
Остальные классы идут на форум игры и начинают обзывать воинов элитистами, потому что те — о, ужас — не идут в первую попавшуюся группу сразу — потому что могут себе это позволить.
Воры, которые побеждают в 90% в PvP, испытывают трудности c поиском групп в PvE, потому что их, воров, слишком много.
Control vs Damage.
Место, где Blizzard действительно допустили промашку – это классическое противопоставление — контроль против повреждений.
Допустим, мы создаем три класса, один специализируется на повреждениях. Он ничего не делает, просто тупо и больно лупит. Второй класс, чтобы составить какую-то конкуренцию первому, должен уметь принимать много повреждений и оставаться в живых.
Да-да, damage vs defense. Остальные классы можно балансировать по этому принципу: сделать, например, промежуточный класс, со средней защитой и со средним нападением, но в любом случае мы рано или поздно придем к контролю.
Например, давайте сделаем класс, защитой которого является не сильная броня, а возможность усыплять противника.
Самое интересное в том, что в умелых руках хороший контроль-класс почти всегда сильнее обычного класса. Ту же способность усыпления можно использовать, например, чтобы усыпить противника и перевязать раны. Или, например, если ваш противник не имеет стрелкового оружия, то можно его усыпить, отойти подальше, начать в него стрелять. Он проснется, и побежит к вам, как только он добежит, снова его усыпить, отойти и повторить.
При этом совершенно не важно, сколько повреждений может нанести противник, простая способность погружать в сон, используемая правильно и вовремя, полностью меняет ход битвы. В конце концов, можно просто усыпить и убежать.
Конкретно в WoW проблема в том, что разработчики только недавно осознали, что контроль – страшная штука, и в патче 1.4 ввели штуку, которая называется «diminishing returns». Суть этой штуки состоит в том, после каждого использования контроль-спела противник становится все менее и менее восприимчив к нему.
Вот цитата из патча: «When a spell with diminishing returns is used against a target in PvP, the first effect has full duration. On the second use of the same category of spell (e.g. slowing), that spell’s duration is reduced by 50%. On the third use, the duration is reduced by 75%. On the fourth attempt, the target becomes immune to the spell».
Иными словами, вечно контролировать противника стало нельзя. Более того, они сделали для каждого класса тринкеты, избавляющие от одного контроль-эффекта раз в пять минут.
Иными словами, сейчас контроль в WoW урезается очень сильно. Это на корню убило такие классы, как ice mage, главной защитой которого было замедление и заморозка противника; warlock, класс, который делает damage over time, и единственной защитой которого был fear; довольно сильно досталось priest-у.
Официальная позиция Blizzard-а теперь такая: «Игроку не нравится, когда он теряет контроль над своим персонажем». Это предсказуемо, любая попсовая стратегическая игра (два миллиона подписчиков не могут быть неправы) рано или поздно скатывается к тому, то вся стратегия сводится к нанесению наибольшего количества повреждений за наименьший период времени.
Два миллиона хомячков победили.
Blizzard же допустили промашку в двух местах:
1. Сразу не поняли, что контроль – это круто.
2. Дали слишком много контроля классам, которые наносят много повреждений (вор, маг, шаман) в качестве приятного дополнения, вместо того, чтобы создать чисто контрольные классы, наносящие небольшие повреждения.
3. Когда люди стали жаловаться на то, что «Шаман может подряд много раз колдовать frost shock и держать меня все время замедленным», вывели магическую формулу «Людям не нравится терять контроль» и урезали весь контроль.
4. Это сильно усложнило жизнь другим классам, единственной защитой которых был контроль.
Итого:
1. Люди выбирают сторону/расу, основываясь на внеигровых аргументах, и с этим ничего нельзя поделать.
2. Люди выбирают класс, основываясь на внеигровых аргументах (паладины – это круто, потому что круто мочат плохих) или класс, который наносит больше всего повреждений (повреждения – это круто). Людям нравится быть крутым и «всех иметь», и с этим ничего нельзя поделать.
3. Контроль сильнее повреждений, но люди любят повреждения и «не любят терять контроль над персонажем», поэтому все рано или поздно сведется к повреждениям.
Простое кэширование страниц
Простое кэширование страниц. Для чайников. На PHP.
Кэширование — замечательная вещь. Часто (теперь — почти всегда) страницы на сайтах генерятся динамически. Это теперь модно. Однако же — в реальности — почти всегда страница собирается заново гораздо чаще, чем она изменяется. Грубо говоря, мы опубликовали новый документ, и при каждом обращении к нему он заново считывается, скажем, из базы данных, заново прогоняется через шаблон и прочее и прочее. Мы снова и снова делаем одну и ту же работу.
А можно просто один раз сделать, а потом сохранить результат этой работы. И при каждом запросе выдавать готовый результат, а не делать все заново. Это и есть кэширование.
Оно позволяет, снизить нагрузку на сервер и на базу данных. Непонимание принципов работы кэша иногда приводит к забавным курьезам.
Единственная проблема — это устаревание кэша. Допустим, что данные на странице изменились, а кэш страницы — еще нет, и пользователю будет выдаваться старая версия страницы. Способы борьбы:
1. Выставлять более-менее приемлимое время устаревания кэша. Например, через 10 минут страница устаревает и кэш генерится заново. Минусы: возможна ситуация, когда пользователю 9 минут будет показываться старая страница.
2. Кнопка «очистить кэш». В некоторых системах вообще нет кнопки «очистить кэш», вместо нее есть кнопка «перегенерить сайт целиком». Нажимаем на эту кнопку — и весь сайт генерится в статичные файлы, то есть, фактически, в кэш. Минусы: стрельба по воробьям из пушки. Мы поменяли одну страницу, а перегенерить приходится весь сайт.
3. «Умная» очистка кэша. Очищается только кэш той страницы, которую мы изменили. Минус: часто изменение одной страницы затрагивает и несколько других. Главное — понять, каких именно и очистить кэш у них тоже.
Лично у меня реализованы все три метода.
А теперь — в двух словах, как сделать себе кэш. Чудесные функции PHP — ob_start и иже с ней позволяют не выводить страницу в браузер, а, например, сохранить ее в переменную. Про это я уже писал.
Это вставляем в начале страницы:
$modif=time()-@filemtime ("cache/$crc");
if ($modif<600) ob_start ();$url=$GLOBALS['REQUEST_URI'];
$crc=md5($url);
{
include ("cache/$crc");
exit();
}
Как это работает:
Берем адрес страницы, вычисляем из него md5. Это будет использоваться, как идентификатор страницы. Например, для УРЛа technology/php/caching md5 будет всегда одим и тем же. Этим мы и воспользуемся.
Файлы кэша будут лежать в директории cache. Смотрим, сколько секунд (filemtime) исполнилось файлу с кэшэм данной страницы. Если он не очень старый (меньше 600 секунд) и вообще есть — выводим его (include).
Если нет — то включаем ob_start и продолжаем дальше.
Это вставляем в конец страницы:
$fp = @fopen ("cache/$crc", "w");$cache = ob_get_contents();
ob_end_clean ();
echo $cache;
@fwrite ($fp, $cache);
@fclose ($fp);
Как это работает:
Считываем содержимое буфера (ob_get_contents). Получаем в переменной $cache то, что должно было выводится в браузер. Выводим в бразуер, раз должно (echo).
Записываем содержимое буфера ($cache) в директорию cache в файл $crc.
Все. Теперь при следующем обращении к странице с этим адресом скрипт (смотрите первую часть) будет смотреть, есть ли соответствующий файл в кэше и если он еще не устарел — просто выводить его и прекращать обрабатывать страницу (exit).
Примерно так оно и работает. Таким образом, страница выводится из кэша где-то за 0.001-0.004 секунды. Выигрыш процессорного времени налицо.
Разумеется, я описал только общий принцип, у меня сделано несколько по-другому.
Дизайн и плагиат
Сейчас я постараюсь объяснить, почему нельзя воровать чужой дизайн. Объяснить не тем, кто ворует — как показала практика, таким людям объяснить что бы то ни было просто невозможно: глядят на тебя, «как в афишу — коза» и внезапно лишаются дара восприятия человеческой речи. Защитная реакция. Маскируются под неподвижную веточку.
Рассказать, почему нельзя воровать дизайн, хотелось бы тем, кто уже понимает, что делать этого нельзя, но все еще не понимает — почему.
Воровать дизайн нельзя по той же причине, по которой нельзя носить чужое нижнее белье: во-первых, негигиенично, во-вторых — не по размеру. То же самое — и с дизайном.
Гигиена.
Оставим сразу же в стороне вопросы морали и совести, по причине отсутствия у большинства таких феноменов, как мораль и совесть. Прибавьте хроническую нехватку мозгов (в России, как известно, две проблемы: дураки и дуры. Впрочем, нехватка мозгов — проблема общечеловеческая) и неприятие умственного труда вообще как труда, пришедшее с совковых времен. (Вот это уже чисто Российская проблема).
В результате человек упорно не понимает, что он украл. Верней, не понимает «что же тут плохого». От людей, укравших у меня дизайн, аргументов я слышал более, чем предостаточно, при этом все аргументы отличались просто детской непосредственностью. Что-то вроде этого: «Ты знаешь, самому мне дизайн делать долго, да и не умею я, а твой дизайн мне понравился»...
Авторские права в России — это все равно, что бананы на Северном полюсе. Было бы здорово, если бы они реально были, но каждый понимает, что это абсурд. Продукт умственного труда и продуктом-то почти никто не считает. Хотя «Закон об авторском праве и смежных правах», по идее, меня защищает, единственное, что я могу получить от этой защиты — гордится тем, что она у меня есть.
Поэтому «гигиеническую» сторону дела оставим в покое и поговорим о чем-нибудь более важном. Тем не менее, просто примите, как аксиому, следующее утверждение, понимать которое вы начнете только тогда, когда сами начнете тратить свои силы на создание дизайна:
Дизайн, который вы где-то увидели, не самозародился, а является продуктом творческой и трудовой деятельности какого-то человека. То, что этот человек умеет делать дизайн лучше вас, еще ни о чем не говорит. Вы ведь не воруете деньги у людей только потому, что они зарабатывают больше, чем вы. Человек этот тратил свое время и свои силы, чтобы сделать этот дизайн, и вполне вероятно, что ему чисто по-человечески не понравится, что вы воспользовались продуктом его труда.
Формат и дизайн.
Я пробовал написать про формат и дизайн в 131-ой заметке. Вышло совсем плохо, непонятно и сумбурно. Попробуем разобраться с этим заново. Для этого введем два понятия: «идея» и «реализация». Чем они отличаются, думаю, понятно? Идея — задумка, принцип. Например, идея писать заметки «a-la Spectator». Или идея делать сайты в две колонки.
Господин Лебедев в свое время написал статью Явление «формата» — «похоже» не значит «украдено», на которую тут же стали ссылать люди, грешащие плагиатом: дескать, Сам Лебедев говорил, что «заимствовать» (читай — «воровать») — можно! А ведь ничего подобного. Перечитайте, пожалуйста эту статью.
Но, с другой стороны, есть такая вещь как «формат» (назовем его так). Это набор правил, свойств и функциональностей, присущих какой-то теме. Например, мы всегда узнаем газету. Ее признаки — особая бумага, черно-белая печать (обычно), крупный логотип, верстка колонками, отсутствие скрепок, мелкий шрифт и т.д. Глупо утверждать, что «Известия» — это клон «Правды».
То, что г-н Лебедев называет «форматом» мы в дальнейшем будем именовать «идеей». Верней, формат — совокупность идей, неких базовых понятий, часто — устоявшихся и традиционных. Воспользовавшись любимым примером Миши Галушко, можно сказать, что:
Формат — это круглая сковородка.
К слову будет сказано, идеи не защищаются законом об авторском праве и смежных правах. Например, если я захочу написать картину о побежденном демоне, то не будет считаться, что я замыслил плагиат на «Поверженного Демона» Врубеля. Вовсе нет. Точно так же и вы можете совершенно спокойно эксплуатировать идею создания «заметочного» сайта a-la Spectator или даже a-la Cooler. Это не плагиат.
А проблема в реализации. Конкретная реализация некой идеи является объектом приложения авторских прав.
Если вы будете рисовать демона сами, никто вас ни в чем не обвинит, и мир, возможно, пополнится еще одним шедевром. Если же вы возьмете картину Врубеля и добавите к ней пару своих штрихов (или даже перерисуете по-своему, но близко к оригиналу), а потом скажете: сию картину нарисовал я — это будет плагиатом.
Плагиат — это несанкционированное использование чужой реализации какой-нибудь идеи. Даже если вы и укажите автора используемой реализации, мол, «дизайн я спер у того-то, авторские права принадлежат ему, а я только переработал слегка», — это все равно будет плагиатом, ибо автор не давал вам согласия.
Ближе к конкретным примерам. На скриншоте — элемент навигации «Спектатора». Вы его видели не раз. Раньше там просто выводилось 10 последних заметок, теперь во время навигации по заметкам отображается текущая заметка и ее соседи. Идея в этом.
И тут какой-нибудь человек (именуемый в дальнейшем Вася П.) решает делать свой сайт и обнаруживает, что моя система навигации ему ну просто очень нравится. Что он делает? Правильно, берет и ворует ее. Ворует на уровне реализации, то есть тупо выдирает кусок html-кода, вставляет его себе, после чего начинает оправдываться, что ему понравилась идея, что я такой умный и здорово придумал, изобрел «формат», а ему ничего не оставалось, как им воспользоваться. После моих объяснений Вася делает вид, что все понял, и начинает «делать непохоже». Это целое искусство — «делать непохоже». Берется все тот же мой кусок кода и начинаются изменения — меняем цвет, размер шрифта и прочее. Делаем «непохоже». Как ни странно, но это все равно плагиат. Потому что взяли мою реализацию и на основе ее сделали что-то свое.
А вот это — образец собственной реализации той же идеи. Никакого плагиата тут быть просто не может. Зайдите на Kalinin.ru. Это то, что я считаю хорошим дизайном.
Да, если начать придирчиво сравнивать эти два элемента навигации, то можно найти много общего. Например, и там и там используется черный и белый цвет. Но это — правильно. Белый цвет идеален для контент-проектов. А с белым идеально сочетается черный. Но об этом — позже.
Проблема еще в том, что Вася не может разграничить идею и ее реализацию. Хотя бы просто потому, что его мозг не научился рожать собственные идеи. (А руки — создавать собственные реализации). Заходя на хорошо сделанный сайт, Вася видит хорошую реализацию какой-то идеи. Вася видит реализованную идею. То есть он все равно видит идею, и это хорошо — авось, скоро и научится сам их придумывать, но не отделяет идею от реализации, и это плохо.
Поэтому когда Вася тоже хочет сделать себе «последние 10 заметок», он упорно ворует реализацию, продолжая не понимать, что же, собственно, тут не так.
Первую причину, по которой нельзя воровать дизайн, я описал — это нехорошо и даже чуть-чуть противозаконно. Вторая причина не менее важна, чем первая. Она называется
Не по размеру.
Давайте еще раз вспомним, что такое дизайн. Дизайн — это такая форма, которая наиболее точно и полно выявляет свойства содержания. Содержание (контент) детерминирует дизайн. Дизайн и контент — единство формы и содержания. (Контент (content) — очень подходящий термин в данном случае. Обозначает он не только «содержание», но и «суть, существо, сущность; значение, смысл» (англо-русский словарь)).
Таким образом, если вы целиком «заимствуете» дизайн, контент тоже должен быть заимствован. Иначе получается вот что:
Любой малоопытный юзер обычно смотрит — как такое делают мастера... и по мере своего вдохновения воплощает такое-же, но со своим контентом. Общая идея, переложенная на другой контент, вряд ли будет работать также полно, а мелочи (которые оживляют конкретную вещь) вообще исчезают. Паузы, пробелы, пятна, ритм — это все из гармонии соусов превращается в пластиковую кашу без маонеза. И шрифт тот же — ариал, и цвет тот же — #990000, а получается такая хрень, что ОЙ...
Чужой дизайн на своем контенте не работает. Примите это тоже, как аксиому.
В качестве примера: придумаем «чисто гипотетическую» ситуацию. Понравился Васе «Спектатор» и захотел Вася писать такие же заметки. Взял Вася html со Спектатора и начал чуть-чуть переделывать. Начал с шапки. Вместо «Spectator.ru» написал «Vasya». Добрался до ушек. С ушками надо что-то делать. Во-первых, чтобы ушки хоть как-то работали, нужно иметь минимум заметок 30. У Васи их нету. Кроме того, нужна ушкокрутилка. У Васи ее тоже нет. Ушки убираем, на их место собачим баннер. Баннер в два раза больше логотипа и начинает «забивать» его. Потом Вася добрался до меню. «эбаут», «архив» и «email» Вася в меню оставил, и остановился: больше ему нечего помещать в меню. И так далее... Поиск и подписку Вася тоже убрал... Сильно понравились новости на первой странице. Решил оставить. Только вот добавлять он их стал ручками и вдруг оказалось, что одна новость бывает раз в три дня и писать-то там фактически нечего... Вот и выходит — «Общая идея, переложенная на другой контент, вряд ли будет работать также полно, а мелочи (которые оживляют конкретную вещь) вообще исчезают. Паузы, пробелы, пятна, ритм — это все из гармонии соусов превращается в пластиковую кашу без майонеза. И шрифт тот же — ариал, и цвет тот же — #990000, а получается такая хрень, что ОЙ...»
Дизайн должен соответствовать контенту и развиваться вместе с ним. Самый грубый пример — рисует Вася свою домашнюю страницу. И прикидывает: вот будет у меня 10 разделов! И все будут обновляться! Раз в час! Вася в Фотошопе рисует 10 красивых кнопок и создает 10 страниц. На одной странице он пишет новости, на девяти других — «under construction», а все потому, что «дизайн» (10 кнопок) уже готов, а контента под него еще нету. И не будет.
Как-нибудь я опишу, как развивался «Спектатор». В самой первой версии, когда количество заметок исчислялось десятком-двумя-тремя, навигация была очень простая, (фактически — только стрелки следующая-предыдущая заметка) потому что большего и не требовалось. А выглядело все вот так. Спектатор-2 выглядел уже вот так. Прогресс, как говорится, налицо.
Одежда должна быть по размеру. Вот и все.
Ну а то, что человек, ворующий дизайн, расписывается в собственом бессилии создать что-то сам — это очевидно.