MMORPG: Идеальная боевая система
Все уже знают, что я втихаря делаю свою MMORPG? Ха-ха, шутка.
Придумал новую систему «аггро» и поведения мобов для mmorpg. Нормальную, человеческую, диаблоподобную.
Она совсем не революционно новая, но порождает много хороших последствий.
Делюсь.
Аггро, как в WoW, нет.
Каждый персонаж имеет несколько (N) невидимых «слотов», на которые могут «пристроиться» монстры. Скажем, воин имеет 3, паладин — 2, вор — 1. Воин со щитом — 4 (на щите написано «+1 слот»), protection воин — 5, и так далее. Ну, вы поняли идею.
У каждого монстра есть несколько правил:
1. «Вешаемся» и атакуем ближайшую цель (с шагом по M метров, то есть все цели в радиусе M метров считаются ближайшими), если у нее есть свободные слоты (то есть ее не атакуют N других монстров). Если у ближайших целей слоты кончились, ищем цели из этой же партии подальше.
2. Атакуем персонажей с определенным приоритетом. Например, если ближайших целей — две, то монстры сначала вешаются на воина, а потом, когда у него кончаются слоты, на паладина, а потом — на вора. (Никто не мешает делать монстров с хитрым приоритетом, типа «mind flayer», которые любят атаковать только магов. Но в целом есть дефолтная таблица с приоритетами).
3. При прочих равных условиях на игрока вешаются те мобы, которых он успел ударить (скажем, 10 монстров и один воин — как определить, какие 3 моба осядут на нем?).
4. Taunt есть, он принудительно «вешает» монстра на тебя (но сбрасывает лишнего, если на тебе много висит). В некоторые способности можно «вмонтировать» taunt, например, в тот же charge. Ну логично же, выбираем моба, несемся и со всей дури врезаемся в него — он начинает тебя атаковать. (De-taunt тоже есть — это способность, уменьшающая количество слотов на N и сбрасывающая лишних мобов).
5. Когда все слоты у всех партийцев заняты, оставшиеся монстры распределяются равномерно по игрокам.
Мелкие нюансы: Монстры разные, в том числе и дохлые и жирные, отличаются визуально, нападают «случайными» кучами. У монстра есть параметр «сколько слотов он занимает» (по умолчанию — 1, но может быть и 0.1 (для толпы мелких монстров) или даже 3). Ranged damage dealer-ы бывают двух типов: с большой дальностью поражения и с небольшой (чтобы образовывали второй фланг).
Бой выглядит так: на группу бежит толпа мобов, часть из которых оседает на «танке» сама, потому что он впереди и имеет приоритет. Еще часть оседает на других melee-шных классах. Часть прорывается к хилерам и магам.
Тут-то внезапно и пригождается и crowd control и кайтинг, и все остальное. Более того, востребованные способности у танка будут вовсе не те, которые «causes high amount of treat», а нормальные и понятные: замедлить толпу, отбросить толпу назад, и так далее. То есть те, которые визуально держат передний фронт и поэтому понятны всем.
(Ремарка в сторону: а тут представьте засаду сзади, гыгыгы).
(Еще ремарка в сторону: при этом мобы не наносят мгновенные смертельные повреждения даже магу, так что нет ничего страшного в том, что они до него добегают, смотри дальше про хилинг).
«Скилл» танка будет в том, чтобы выбрать из толпы мобов «минибосса» и сделать ему taunt, и чтобы премещаться по игровому полю, «защищая» остальных (но это уже супер-мастерство, без которого группа все равно должна выживать).
Финальный штрих, чтобы все не превратилось в «группа разбирает монстров и каждый бьет свою кучку соло»: делаем КОМБО!11 ПЫЩ-ПЫЩ. Когда моба бьют два и более игрока, их способности складываются, усиляя друг друга.
В WoW-е это тоже есть, но сделано в виде пассивных бафов или proc-ов, что равносильно отсуствию: ты в рейде тупо делаешь в два раза больше повреждений, только потому, что ты в рейде.
Комбы можно (и нужно) «обыграть» визуально: например, воин может делать knock back мобу (как это по-русски? сбивать его с ног), а у мага есть спелл, который наносит троекратные повреждения по лежащим мобам, то есть маг видит — ага, моб лег, надо срочно лупить.
Тут-то внезапно и пригождаются разные спеллы: файрбол-1 просто наносит повреждения, файрбол-2 наносит меньше, но зато наносит троекратные по упавшим мобам, фростболт замедляет, когда моб бежит на тебя, даже если ты огненный маг. Игра снова становится ситуативной, а не основанной на «ротациях», как WoW.
Knock back реально заиграет, в WoW спеллы, у которых есть knock back, бесят неимоверно, ибо отпихивают мобов от танка, мешая ему наращивать aggro. В этой системе knock back позволит отпихнуть мобов от себя на других.
При этом партия, которая не использует комбо и проходит все в режиме «каждый сам за себя» не должна умирать мгновенно, ей просто должно быть сложнее.
В конце инстанса обязательно должна быть таблица рекордов с разными рейтингами: повреждения, максимальные комбо, время твоего crowd control-я, и так далее, чтобы каждый мог найти тот рейтинг, где он первый и игра не превращалась в измерилку DPS-а (привет, WoW).
Осталась последняя, но извечная проблема — хилинг.
«Хилинг» (в кавычках)
Лучше всего «хилинг» сделан в... Left 4 Dead, если под хилингом понимать не только хилинг, но, собственно, любую поддержку, саппорт. Именно так и должно быть в MMO: саппорт-классы, которые могут «поднимать» павших товарищей и как-то предотвращать их «падение».
При этом общие повреждения от монстров должны быть такими, чтобы не надо было «спамить» лечение, а достаточно было раз в 20 секунд бросать HoT (healing over time), раз в 30 секунд снимать какой-нибудь дебуф, типа яда, а остальное время наравне со всеми мочиться, превратившись в форму кошки. (Вот там и «правильный» друид).
Отдельное место должно занимать пассивное лечение: берем из warhammer-а идею с двумя целями — дружественной и вражеской, берем варлока из WoW, как архетип («высасыватель жизни»), все спеллы «противник теряет жизнь, вы получаете столько же» меняем на «противник теряет жизнь, дружественная цель получает столько же» — и внезапно все эти спеллы становятся полезными в группах.
«Лечение» не должно быть обязательным, но должно быть четкое понимание: если партиец упал, то «его» мобы повиснут на других, и всей группе станет хуже. Как в Left 4 Dead, ага. «Умирание» группы под натиском врагов должно быть таким же: сначала падает один, потом — второй, и так до последнего. А вовсе не «танк умер — всем пиздец».
Очевидно, что если есть фланги, то должно быть и «фланговое» и AOE лечение. В WoW, например, у пристов есть бесполезный спелл — lightwell («lolwell»), который создает «колодец» к которому можно отступить во время боя и подлечиться. Спелл бесполезен, потому что в WoW лечение устроено так, что его приходится «спамить», колодец при этом — как слону дробинка.
В этой же системе подобный спелл становится черезвычайно полезным, он позволяет присту не отвлекаться от кровавого веселья, при этом лечить группу.
Лирическое отступление про интерфейс.
Вообще, я уже говорил, что если Valve решит сделать MMORPG, это будет охуенно. У Valve вообще есть хорошее понимание того, что игра — это интерфейс. У Близзарда же игра имеет хороший интерфейс, но сама интерфейсом не является.
Загнул, да?
Короче, маски на spy-е в TF2 — это игра, как интерфейс.
(Для тех, кто не играл — когда шпион превращается в солдата противника, он не меняет свою форму визуально, для своей комманды, чтобы не путали, а надевает маску этого солдата. Для вражеской комманды он, разумеется, форму меняет. Очень круто.)
Максимально различаемые фигуры игроков — тоже. Светящиеся линии вокруг персонажей в Left 4 Dead и разные движения в зависимости от состоянии здоровья — тоже.
А вот полоска жизней, которая висит отдельно поверх экрана — это уже отдельный интерфейс.
Очевидно, что в «идеальном онлайновом диабло» лечить надо только тех игроков, которые визуально упали и брыжжут кровищей, «злые» мобы визуально крупней, и так далее.
То же самое и в нашей идеальной ММО — все должно быть на экране, а не в интерфейсе.
MMORPG: Идеальный крафтинг
А сегодня, мои маленькие полосатые друзья, мы придумаем идеальный крафтинг (изготовление предметов) в идеальной MMO.
Сразу вывод сказать, или сначала рассуждения? Если вывод, то «лучший крафтинг — это ремонт».
Если рассуждения, то концепция MMO анти-экономическая, анти-конкурентная по сути: нужно, чтобы у всех крафтеров не просто были равные возможности, но и возможность реализовать эти равные возможности.
Если 10 миллионов захотят быть кузнецами, то система, в которой только 2% могут стать супер-кузнецами сделает 98% игроков несчастными. Нам это надо?
Равные возможности обозначают одинаковые производимые товары и огромное предложение: одному кузнецу для прокачки надо сделать 10 «нубских стальных кинжалов». А нубов, которым нужен кинжал, всего 5.
Вполне понятно, почему все товары продаются по цене ниже себестоимости: это на самом деле не товары продаются, а кузнец покупает 1 очко мастерства.
Выход «а давайте сделаем шанс вместо кинжала получить груду опилок» дебилен, ибо депрессивен и ненадежен, когда тебе прямо сейчас нужен один гарантированный кинжал.
Самый простой выход — это consumables («расходные материалы»). Нубу нужен всего 1 нубский кинжал за всю жизнь, но нубу нужен 1 пузырек здоровья каждые 10 минут.
В WoW все «успешные» профессии производят consumables, при этом gem-ы и enchanting — это, разумеется, тоже consumables, ибо новый энчант/джем нужен на каждую твою новую вещь, то есть регулярно.
Но и там есть свои минусы: «Крутой Синий Камень Охуенности» нужен всем, а «Маленький Бесполезный Огрызок Говна», натурально, бесполезен и нужен только для прокачки. Ради заработка же производится очень узкий круг популярных вещей и в каждом сегменте дикая конкуренция.
Следующее эффективное решение — это делать на крафтинг кулдаун, типа «ты можешь делать только одну вещь в сутки». В WoW этот кулдаун пока не явный и называется «daily quests» (Dragon’s Eye, aye!).
Мы пришли к тому, что лучший крафтинг — это улучшение предметов. А теперь просто расширим улучшение в другую сторону — представим, что по умолчанию предметы сломаны и нуждаются в «улучшении» до рабочего состояния, то есть в ремонте.
Кузнецы ремонтируют (и потом улучшают тоже!) тяжелые доспехи, портные — робы, кожевники — кожу, и так далее. Вот вам и разные профессии, одинаковые по принципам балансировки, но все равно разные.
Сломанный же предмет является soulbound-ом и вываливается вместо лута.
Для ремонта нужны дополнительные материалы, часть из которых можно купить, часть придется нафармить мастеру самому (soulbound).
Общий принцип понятен? А теперь — ...
Как это сделать интересным (да и вообще работающим).
Все поломанные вещи относятся в мастерские и сдаются туда в ремонт (оставаясь при этом soulbound) вместе с деньгами, «примерно как на аукцион». Игрок-крафтер может придти в мастерскую и выбрать (примерно как аукцион, говорю же), что чинить. (Старый добрый спам в чате тоже работает, но зачем?).
Ремонтировать можно раз в N часов, где N — функция от уровня мастерства (чем он больше, тем ремонтировать можно реже).
Уровень мастерства — число от 1 до X, скажем, до 256.
У каждого предмета есть рекомендуемый уровень мастерства. Шанс ремонта равен уровню твоего мастерства/уровню рекомендуемого мастерства.
То есть мастер с уровнем 1 имеет 1% шанс починить предмет с рекомендуемым уровнем мастерства равным 100. Если попытка провалилась, ничего не ломается, просто пропадает попытка починки, то есть теряется время и кулдаун. Если попытка удалась и является не тривиальной, мастерство растет.
Наступает любимая часть игрового дизайна — выбор. Факторы, влияющие на выбор — мастерство крафтера и предмета, имеющиеся ресурсы.
Я — крафтер, прихожу в мастерскую. Вижу список вещей, которые можно отремонтировать. У меня одна попытка.
Мне надо выбрать вещь, которую я смогу отремонтировать с большей вероятностью, получить оптимальное количество денег (верней, оптимальное соотношение цена/вероятность/шанс улучить мастерство).
То есть, мне нужно продать мой уровень мастерства и мою попытку ремонта как можно дороже. В такой системе деньги на крафтинге зарабатываются начиная с первого уровня.
Всё.
Ну и понятно, что в зависимости от уровня мастерства можно выдавать и «традиционные» рецепты, с помощью которых крафтеры могут не только чинить, но и делать улучшающие патчи («энчанты»).
Регенерация маны
На самом-то деле, игровой дизайн — это просто. Как и любой другой дизайн. Надо просто отдавать себе отчет каждый раз — зачем ты это делаешь.
Аргумент «так делают все» не является правильным. Ровно до тех пор, пока ты не начинаешь понимать, почему так делают все, после чего два пути: ты понимаешь, что это правильно и делаешь, как все, или ты понимаешь, что это неправильно, потому что можно лучше.
Возьмем, например, King’s Bounty и поговорим о поломных заклинаниях и мане.
Мана — это ограниченный ресурс, количество маны — это «крутизна» мага, которая символизирует количество заклинаний, применяемых за бой. Смотри D&D, где крутизна мага заключается в том, сколько заклинаний (и какого уровня) он может запомнить и потом применить за бой. Просто нет «синенькой жидкости», называемой «мана».
Опять-таки, ограничение по уроню — это всё та же крутизна, если маг не может выучить это заклинание, то это значит — правильно! — что он может выучить ноль таких заклинаний.
Проблемы начинаются тогда, когда дело доходит до восстановления маны.
Здесь есть два выхода: либо мы считаем, что мана — этот тот ресурс, который игрок должен менеджерить между боями, — скажем, на игрока нападают один за другим две толпы монстров, и игрок должен помнить об этом, — либо мы считаем, что ману игрок должен менеджерить только во время боя.
King’s Bounty, определенно, подпадает под вторую ситуацию, учитывая то, что от монстров всегда можно убежать, а перед каждым боем всегда можно дождаться восстановление маны.
Отсюда простой вывод: раз всегда можно начинать бой с полной маной не прикладывая никаких усилий, кроме тупого минутного ожидания, то мана на начало боя всегда должна быть полной. Регенерация вне боя не нужна, потому что вне боя герой никак не управляет маной, как ресурсом.
Следующий шаг — регенерация маны в бою. Очевидная польза: смягчение для игрока ситуации «Рок-н-ролл мертв, а я еще нет», то есть когда бой все еще идет, а маны уже нет.
Регенерация — потенциально бесконечная мана, которую мы «обмениваем» на другой ресурс — время. Самые простые грабли в таком случае — это ситуация, когда время не имеет значения. Скажем, оставляем последнего врага, который ничем уже не навредит, и ждем регенерации маны.
Решение «в лоб» — это делать органичение на регенерацию маны (King’s Bounty) или ограничение на время (Аллоды). При таком подходе регенерация — просто расширитель манапула, который можно нудно и скучно порастягивать.
Итого: убираем регенерацию маны вообще, каждый бой начинается со 100% маны. Балансировать manacost заклинаний сразу становится легче, вместо кучи гипотетических показателей (максимальная мана, средняя мана в начало боя, средняя мана за бой с учетом регенерации, максимальная мана с учетом регенерации и растягивания боя) имеем один.
Проблему с импотенцией магов в долгих боях можно решить более оригинально: вместо таланта, дающего регенерацию в бою сделать талант, востанавливающий в начале хода до 2/5/7 маны, только если у вас меньше 2/5/7 маны.
Таким образом, раз в ход маг сможет прокастовать «нахаляву» что-то дешевое, но не поломные заклинаия, типа жертвы или воскрешения. А еще для затяжных боев можно использовать — правильно! — ярость.
Ярость сделана почти правильно — она дается за ограниченный ресурс (количество ударов, то есть, фактически, за HP) и дается постепенно, так что функцию смягчения длинных боев можно легко переложить на нее. Отсюда тот же вывод, что и с маной: начинаться бой должен всегда с пустой полоской ярости, потому что ярость — это мана наоборот.
Так же вполне очевидно, что ограничение сверху на ярость почти не имеет смысла, а главный параметр — это скорость прироста ярости, а вовсе не ее объем.
Если тут будет много осмысленных комментариев, то в следующем выпуске я расскажу про scaling и stacking на примере все той же KB, после чего мы окончательно пофиксим поломные заклинания.
Тизер.
Scaling и stacking — две проблемы на букву S, с которыми сталкиваются игровые дизайнеры.
Первое — это рост «крутизны», который должен происходить если не равномерно, то предсказуемо и прозрачно для дизайнера и выражаться в понятиях, типа «в два раза круче». Там много очевидных граблей, которые возникают из-за того, что какая-нибудь цифра рассматривается не в системе (уравнений), а «сама по себе».
Stacking — аналогично, когда два похожих умения дают в сумме что-то очень страшное, либо ведут к непредсказуемым результатам. Например, игроку удалось собрать вместе 5 способностей, каждая из которых увеличивает дамаг на +50%. Какой дамаг от исходного мы получим на выходе?
1. 350% (все складываем)
2. 759,375% (все перемножаем)
3. 196,875% (50+25+12.5+6.25+3.125+100)
Правильный ответ, надеюсь, очевиден?