Домашнее задание: monster play
Так как предыдущее домашнее задание (увязать паковых мобов с групповой игрой) все проигнорировали (и приходится все делать самому), вот другой вопрос: как сделать monster play (игру за монстров) интересной, полезной и сбалансированной, и вообще — нужна ли она?
Как сделать мобов интересными: решение
Уф, целую неделю писал урывками.
Некоторые очевидные аксиомы и противоречия:
1. Один обычный моб не должен быть смертельно опаснен для игрока, по многим причинам. Например, а) это никогда не сбалансировать, смертельно опасный для вора класс может быть безопасным (но утомительным) для паладина, б) два опасных моба – гарантированная смерть, домохозяйки не поймут; учитывая то, что двух мобов можно подцепить случайно – получается случайная смерть, в) ощущение динамики игры резко снижается, если каждый моб опасен.
2. Моб не может быть тривиальным, потому что это скучно. Мобы, однако, тривиальны, из-за предыдущего пункта. Именно поэтому Близзард раньше пытался сделать всякие штуки, типа убегания раненого моба «за подмогой», но было плохо, потому что…
3. Моб не может быть «случайным». Когда моб случайно наносит десятикратные поврежденья, случайно убивает или случайно зовет подмогу – это нехорошо. (Моб может звать подмогу специально, но конечный шанс ее появления все-таки случаен и зависит от непредсказуемых факторов).
4. Специальные способности не делают моба сильней, а раздражают игрока.
Со специальными способностями моба вообще очень легко облажаться. Например, мухи в Un’Goro, которые навешивают на тебя 30-минутный (!) дебаф, увеличивающий поврежденья по тебе на 40% (!!), птеродактили там же, кастующие fear, куча мобов в plaguelands, делающие то же самое, и так далее.
Очевидно, кстати, что уровня с 50 они решили увеличить сложность мобов и понапридумывали им способностей, которые ничего, кроме раздражения, не вызывают. К счастью, этот тренд довольно быстро кончился, и с 60 уровня способности уже «правильные».
Способность должна быть понятной, с наглядными последствиями, но не сильно «поломной».
Удачные способности можно пересчитать по пальцам:
А) Любая вариация на тему дополнительных повреждений: enrage, доты, магические/физические повреждения. Фактически – небольшой rand() в повреждениях, просто красивый/наглядный.
Б) Ranged или melee. Причем и тут особо не разыграешься – можно написать моба, который будет идеально кайтить игрока. И что? Игрок будет умирать и злиться.
В) Самолечение моба. Его можно прервать, оно не влияет на тебя и не наносит тебе случайные повреждения. Это скорей красивое исключение, всем мобам самолечение не сделаешь.
Собственно, всё. Crown control не работает вообще, ибо бесит. Это игрок должен crowd control-ить моба, а не наоборот.
Если убрать исключения, то можно сказать, что специальные не-дамажные способности не нужны, а дамажные должны быть предельно наглядными. ("Closer! Come closer! And burn!").
Обидно, конечно, но по-другому пока никак. Речь, опять-таки, идет о соло игре. То есть о 99% всех мобов.
Проблема вообще глобальна, и больше всего касается танков: отсутствие интерактивных способностей и/или их уникальность.
То есть в идеальном мире было бы круто дать мобу способность «суперудар», от которой можно увернуться. Только тогда способность «увернуться» надо давать всем, либо делать суперудар не таким супер.
Опять-таки, способность «увернуться» - это no-brainer, ее всегда надо использовать, когда начинается «суперудар», никакой тактики тут нет. Значит, она не нужна, а нужна реакция. Получаем MMO-файтинг. Ну, или снова - Diablo.
5. Monster play (и PvP, что одно и то же, хахаха) должен быть сугубо развлекательной фишкой, в отдельных баттлграундах. Играть за монстров может быть весело, да. Играть за монстров так, чтобы обеспечивать непрерывный спрос на мобов в масштабе сервера, никто не будет, и поэтому опираться на это не надо.
6. Говорящие мобы – хорошо и правильно («You take no candle»). Мобы, которые красиво лопаются – тем более хорошо и правильно.
«…монстры в Diablo живут буквально для того, чтобы умереть. Большую часть игры вы просто убиваете их, и поэтому мне прежде всего хотелось сделать так, чтобы они умирали самыми различными способами. В настоящий момент мы реализовали около 35 различных анимаций смерти для каждого отдельно взятого монстра».
7. Son of Arugal, он же Fel Reaver 0.1 – хорошо и правильно, но он должен быть или «желтым» или «неподвижным». Более глобально – конечно же, на одном клочке земли мобы должны иметь разные шкурки, в том числе и быть разными по силе, вплоть до элитных, но не должны набрасываться на игроков.
Итого.
Мобы должны быть тупые, но красивые, разнообразные и говорящие. Если не получается их сделать интересными по смыслу, надо делать их интересными внешне.
Все пропало, других выходов нет?
Есть, но...
Мобы не висят в воздухе, а заботливо расставлены игровым дизайнером. У них даже профессия такая есть – расставлятель (раставитель?) мобов. Некоторые мобы даже патрулируют.
Сделано это для того, чтобы превратить ну хоть как-то убийство мобов в мини-игру «выцепи одного моба и не зацепи лишнего».
Тут тоже можно переборщить, наиболее памятное место - Zeth'Gor, который, определенно, должен сгореть.
Глобально же смысл в том, что все мобы равны, а все различие – в расстановке.
Как и в случае с аггро, все веселье в WoW начинается, когда ты играешь… плохо, то есть случайно цепляешь на себя больше одного моба. Значит, нужно аггрить больше одного моба автоматически!
Если серьезно, то в комментариях было много мыслей на тему глобального AI и «убил 100 волков – получил засаду из злых и обиженных волков».
Все гораздо проще: вместо одного моба делаем пак – скажем, из 5-и мобов. Этот пак имеет один AI (то есть является одним мобом), стоит в одном и том же месте («стая волков»), различается внутри себя шкурками и, возможно, имеет вожака.
Когда игрок нападает на пак (или пак на игрока), бой происходит в режиме «фильма про кунг-фу»: сначала нападает один моб, когда тот умирает (или вот-вот умрет) – нападает второй, и так далее, вместо того, чтобы напасть всей толпой и завалить.
Мобы не обязаны становиться в круг вокруг игрока и выкрикиывать обидные слова, как в настоящем фильме про кунг-фу, это метафора.
Причем, после каждого моба делается проверка – посылать ли следующего, или игрок уже при смерти. (Самая банальная проверка – количество оставшегося здоровья, чуть более интеллектуальная – количество оставшегося здоровья, количество здоровья, теряемого на одного моба из пака, класс и, например, количество смертей игрока за последний час).
То есть – правильно – AI играет вовсе не против игрока, а выполняет роль «гейммастера», просто делает это не глобально во всей игре, а на уровне одного моба, который вовсе и не моб, а пак из пяти.
Исхода у боя два – либо игрок справился и убил весь пак, тогда это видно наглядно («поляна очистилась») и из последнего моба ему вываливается звонкая монетка (ура, я наконец-то придумал, как сделать денежный лут мини-игрой).
Либо игрок не справился, тогда он умер (если совсем-совсем не справился), либо пак потерял к нему интерес на каком-нибудь мобе. И в том и в другом случае пак респаунится очень быстро.
В терминах WoW-а: ты вышел на поляну с волками и начал их бить. Волки слабее обычных мобов процентов на 50%. Но каждый волк, умирая, испускает вой, который зовет следующего (то есть «убегающий моб»). Но зовет он умно, а не случайным образом, и ты «чудом» выживаешь с 10% жизнями.
Дальше навернуть систему легко:
Пак из одного моба ведет себя, как обычный моб. (То есть можно не делать всех мобов паками).
В паке может быть любое количество мобов с любой проверкой на выживаемость игрока (в том числе и отсуствующей, гыгы), это – инструмент балансировки.
Можно делать паки из желтых (неагрессивных) мобов – они все равно будут опасными, потому что тебе придется драться со всеми, но это довольно сильно разнообразит игру, потому что у тебя будет выбор – не нападать (то, что в WoW-е пытались сделать с помощью Mind Soothe, но потом понерфили, ибо процесс стал неконтролируемым, тут же он контролируется, потому что мобов желтыми делаем мы).
Можно делать смешанные паки – из желтых и красных мобов – тогда между ними будет интересно ходить. Красных мобов нужно при этом как-то визуально выделять («волки и волчата»), негоже различать их только цветом рамки.
Развивая идею смешанных паков — чисто теоретически, если делать в паке только одного моба аггрессивным, то проверок на расстояние до игрока надо в 5 раз меньше.
Развивая идею смешанных паков – можно делать паки с лидером, когда в центре стоит большой заметный неагрессивный лидер со своим поведением в рамках пака, типа «я нападаю последним, но если на меня напали первым, когда пак жив – я посылаю весь пак». Фильмы про кунг-фу, натурально – «сначала победи всех моих учеников».
Развивая идею лидеров, для тупых игроков – последнего лидера можно сделать вообще невидимым, но оставить ему поведение «когда пак умер, вылезти из-под земли и напасть».
С лидерами вообще интересней всего получается, сразу наглядно видно, откуда весь вред.
Домашнее задание: увязать это все с групповой игрой.
Домашнее задание-2: посчитать расход процессорной мощности на AI.
Update.
Как это «нарисовать», а то многие не понимают. Я, правда, пока тоже не понимаю, так что условно:
Ты напал на волка — остальные не реагируют. Когда волк при смерти, есть три варианта:
1. Он воет и зовет подмогу.
2. Главарь волков «делает анимацию», посылая следующего волка на тебя.
3. Следующему волку дается комманда медленно приближаться к тебе и «случайно аггрить» или «медленно приближаться и огрызаться», а потом нападать. Лучше всего — со спины.
Рисовать «все встали в круг и ждут», конечно же, не надо.
Теперь, «проигрыш».
Видим, что игрок сливает, есть варианты:
1. Тупо делаем вид, что пак кончился (хотя на самом деле нет) и просто не посылаем новых мобов.
2. Посылаем игроку не очередного моба, а главаря, когда/если главарь умирает — остальные «разбегаются в панике».
3. Делаем игроку «клиническую смерть»: моб сбивает игрока с ног, принюхивается и решает, что игрок мертв, после чего отходит. Игрок встает через 5 секунд.
4. Делаем игроку «помилование» (главарь говорит «оставьте его!») или делаем паку «отступление» с регенерацией.
5. Убиваем игрока, гыгы.
...и так далее.
King’s Bounty: Принцесса в доспехах
Вышло продолжение King’s Bounty. «Те же яйца, вид сбоку», но без яиц, потому что вы играете теперь за женского персонажа. Ха-ха, каломбур.
По структуре, игра — чистый аддон: та же графика, тот же геймплей, самые ужасные вещи в балансе починили почти все, как будто прямо по списку: крысу убрали (продают теперь за 6000 голда), выбор «лидерство или мана» при level-up’е тоже, самые страшные заклинания, похоже, тоже порезали.
Таланты всё те же, но есть некоторые улучшения, на уровне багфиксов: например, я ругался на «есть таланты, улучшающие конкретных бойцов, при том, что эти конкретные бойцы не в каждом месте продаются», — теперь этих талантов нет, хорошо.
Играть все так же скучно: я первую King’s Bounty доиграл, конечно, до конца, но ближе к концу удовольствия было все меньше и меньше. Тут же — стандартный more of the same, впрочем, поэтому оно и не называется King’s Bounty 2.
Немного обидно, что исправили только самые очевидные ляпы. Можно же было воспользоваться новой версий и заметно улучшить игру, улучшать же есть куда (кроме графики, графически игра няшечка).
Меня, как игрока (и немножко игрового дизайнера) вымораживает то, что в игре есть больше семи разных ресурсов:
1. деньги
2. количество мобов (потому что респауна нет), оно же — количество XP, если считать вместе с квестами
3. количество войск в магазинах — оно кончается
4. отдельный вид кристаллов для магии
7. три вида кристаллов для прокачки талантов
Три «класса» практически ничем не отличаются, у всех одни и те же три ветки талантов, просто у каждого класса плюс один специальный талант и ветки прокачиваются с разной скоростью — благодаря трем видам кристаллов.
В результате выбор талантов превращается в «если я сейчас куплю талант за 10 красных и 1 зеленый кристалл, как быстро я себе могу позволить другой, за 3 красных и 7 синих, учитывая то, что синих у меня всего 5, а красных — 11».
К тому же источники ресурсов разные — кристаллы развития могут валяться на карте, а могут даваться после набора уровня.
Это, господа, пиздец.
А выход простой:
Убираем классы. У нас уже есть три ветки — маг, паладин, прист. Отдельно три класса не нужно, хочешь быть воином — качай ветку воина. Что сейчас и происходит, просто «у воина ветка воина качается быстрее». А зачем?
Убираем три вида кристаллов, делаем одну валюту — «очки развития». Эти очки даем на каждом уровне и после некоторых квестов. Стандартное, короче, дерево талантов, «как в WoW».
Кристаллы для прокачки свитков убираем, свитки прокачиваем за деньги.
Количество войск в магазине делаем бесконечным, смысла в том, что «редкие» войска кончаются, нет — войска и так не бесплатные, я за них бабло плачу. Штафовать меня еще и тем, что они кончаются в магазине — бред. На карте разбрасываем только деньги или их эквивалент в виде артефактов.
Итого, ресурсы:
1. деньги
2. количество очков развития (оно же количество мобов и квестов)
Уже лучше, но все еще плохо: деньги... неправильные.
Очки развития легко перевести в повреждения, типа «таланты устроены так, что одно очко таланта увеличивает твои повреждения любым способом на N%, где N — константа».
Деньги легко перевести в поврежденья, например, «за 6000 золотых можно купить шлем, который увеличивает твои повреждения на N%» или «за 6000 года можно улучшить свиток, что увеличит твои поврежденья на...».
Так оно в конечном итоге и балансируется.
После чего деньги привязываем — правильно — к мобам и квестам — и делаем деньги просто еще одной «экспой», то есть «после убийства 10 мобов ты получаешь одно очко таланта и 100 золотых, и то и другое увеличивает твои поврежденья на N%». Что удивительно, в King’s Bounty оно так сейчас и сделано.
Однако ж, остается одно маленькое смешное недоразумение — если твои войска убили, надо идти и покупать новые, за деньги. Ты платишь невосполнимый стратегический ресурс за свой кратковременный проигрыш. Чисто теоретически, в King’s Bounty можно играть так плохо, что у тебя кончатся деньги на войска, и ты банально не сможешь купить новые и «проиграешь».
Это совершенно правильно в мультиплеерной игре, кстати — «победил по ресурсам». KB, однако же — синглплеерная игра без компьютерных противников вообще.
А решение простое — осознать, что деньги — это те же очки развития, и тратить их на развитие, а войска... сделать бесплатными. Они и сейчас — сюрприз — не привязаны к деньгам. Количество войск у тебя ограничивается сверху вовсе не деньгами, а твоим «лидерством», то есть, даже обладая бесконечными деньгами, ты не можешь купить бесконечное количество войск, при этом никто не покупает войск меньше максимума.
Деньги — это не ограничивающий фактор при покупке войск, это уже так, не надо просто сопротивляться.
Если ты продул бой, твой противник должен восстанавливаться к состоянию до боя, чтобы нельзя было покупать бесплатные войска и убивать его по чуть-чуть каждый раз.
Это подводит нас к еще одной очевидной мысли — если противник после боя восстанавливается, а тебе надо бежать покупать войска, причем бесплатные, то это — тупая и бессмысленная трата времени, проще всего восстанавливать тебя тоже. Поздравляю, мы только что избавились от дрочинга кнопки save/load и глупого бега по карте туда-сюда. Впрочем, как-то «наказывать» за смерть надо — например, можно отбрасывать тебя к ближайшему кладбищу. Получился WoW, ага. Тебя убили — беги с кладбища обратно.
Ну, или в терминах jRPG (а я уже говорил, что KB — это jRPG): ты нанимаешь напарников в свою партию, количество напарников ограничено слотами, напарники качаются вместе с тобой, через одежду и «лидерство». Если в бою напарник умер, после боя он воскресает, бежать обратно в город и нанимать его заново не нужно; если умерла партия целиком – ты проиграл.
Самое смешное, что KB на официальной странице 1С называется как раз «RPG». Ну, так и делайте все по правилам RPG, а не по правилам мультиплеерной пошаговой стратегии (чем она совсем не является).
Here, I fixed it for you.
Как сделать пошаговый «стратегичный» бой интересным – в следующем выпуске.