Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Основы игрового баланса

Основы игрового баланса 4 года 7 мес. назад #113459

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
Игровой баланс – одна из самых страшных вещей в глазах любого начинающего игродела. В его голове сразу появляются мысли о целой куче таблиц, цифр, счете процентов и страшном рандоме, который наверняка испортит все. Да, баланс – это одна из самых сложных сторон разработки вашего проекта, но не стоит так сильно бояться ее. В этой статье я подробно расскажу о том, каким образом подготовить почву для процесса подгона цифр, и существенно облегчить эту задачу, а также практические советы, которые могут помочь вам в ваших играх.

Общие понятия

Для начала стоит определиться с понятием «баланс». Каждый игродел, на самом деле, вкладывает в него что-то свое, и я сразу же очерчу границы темы. Здесь мы говорим именно о математическом балансе, а не о «темпе игры», и других вещах, которые относятся скорее к общему геймдизайну и проектировке геймплея.

Я буду использовать немного расширенное определение Эрнеста Адамса и Эндрю Роллингса.

Баланс – это состояние систем игры, при которых она не ощущается как нечестная, слишком сложная или простая, и в которых победа игрока достигается исключительно с помощью его навыка.

Таким образом, мы можем выделить основные признаки хорошего игрового баланса:

1. Игрок и игра находятся в равных условиях и подчиняются одним и тем же правилам.

2. Игрок принимает осознанные решения – как кратковременные (какую способность или оружие использовать?), так и долгосрочные – каким образом выстроить свою тактику победы. При этом не существует однозначно доминирующей стратегии.

3. Рандом играет роль «неучтенного фактора», и игру можно пройти, не полагаясь на него.

4. Игра не должна заводить игрока в непроходимый тупик.

Все это, можно, в целом упростить до одного простого цикла – «Действие – Реакция – Последствия». Вы можете легко проверить балансировку вашей игры именно по нему. Полагаться, конечно, не стоит, но наиболее очевидные проблемы вы выделите. Что это такое?

По сути, инициатором любой активности игрока внутри игрового процесса является сама игра. Как правило, она предлагает ему задачи, проблемы и правила, а непосредственно процесс «играния» - это ответ пользователя на возникающие запросы со стороны игры. После того, как игрок отреагирует на них, она выдает ему соразмерные последствия.

Например, у нас есть персонаж с пушкой и противник, который метает огненные шары. Когда враг атакует – это Действие. У игрока есть несколько опций: Увернуться, Выстрелить во врага, или Не делать ничего. Это Реакция. В зависимости от принятого решения, игра предлагает игроку разные последствия его выбора. Это Последствия.

Опираясь на обозначенные выше принципы, очень важно, чтобы Реакция игрока была осмысленной. Он должен понимать, для чего или почему в какой-то конкретный момент времени он принимает то или иное решение, а так же почему получает именно то последствие. Если выстраивать свой геймплей в соответствии с этим принципом, то, в целом, вы можете творить какую угодно дичь. Главное, чтобы эта самая дичь адекватно считывалась игроком, и он понимал, за что игра его наказывает или награждает.

Проблемы начинаются ровно в тот момент, когда игровой процесс нарушает этот цикл. Если игра не выдает никаких Действий по отношению к игроку – то и игра не получается. Пользователь просто не понимает, что от него требуется, ему становится скучно, и он отваливается.

Если игра не позволяет игроку правильно Отреагировать на свои действия – то тогда она ощущается нечестной. Если игра не выдает игроку соразмерные его действиям Последствия – то тогда она становится слишком легкой или чрезмерно сложной.

Возьмите любую игру и попробуйте проследить за тем, как она реализует этот цикл. Разберите ее геймплей на составляющие и проследите, каким образом игра Действует и каким образом дает игроку Отреагировать, какие Последствия после этого она выдает? Было бы неплохо прочитать ответ в комментариях.

Как сбалансировать игру?

Лично я разделяю процесс балансировки на подготовку, основную работу и полировку. Я рекомендую закладывать фундамент для дальнейшей работы с самого старта проекта.

Подготовка

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

Кто и для чего будет в это играть?

Большая часть новичков, которые садятся делать игру, начинают заниматься этим по наитию, и это нормально. Но после того как вы попробовали перо, нужно начинать подходить к разработке более вдумчиво.

Вот список вопросов, на которые стоит ответить, прежде чем вообще садиться за мейкер и начинать что-то делать.

1. Какой игровой опыт должен получить игрок? Кем он должен себя почувствовать во время игры? Какие эмоции должен испытать?

2. Во что игрок будет играть чаще всего?

3. Какая главная идея, «фишка», вашего основного игрового процесса?

4. Какие активности вообще будут у игрока? Во что он будет играть, помимо основного геймплея?

Учтите, что здесь речь идет именно о системах, а не сюжете, музыке и визуале. Последний вопрос – особенно важен, поскольку именно через него вы поймете, для что вам потребуется обличать в числа, а что нет.

Математические модели

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

По сути, это ряд числовых правил и формул, по которым работает придуманный вами геймплей. Для того, чтобы понять, что именно вам переводить в числа, стоит вспомнить ответы на все прошлые вопросы, которые вы задавали себе до этого. Что вам нужно продумать в первую очередь, а что можно смоделировать максимально условно? Здесь можно выделить несколько принципов:

1. То, вокруг чего построен игровой процесс, стоит прорабатывать подробно и детально, но так, чтобы в него было в первую очередь интересно играть. Тут все зависит от того, какой игровой опыт вы ходите дать игроку и то, каким образом он вообще должен играть в вашу игру.

2. Побочные активности стоит сделать условными и ненавязчивыми, чтобы они дополняли, но не перегружали весь процесс. Подойдут даже простенькие мини-игры или примитивные механики, самое главное – чтобы они не отвлекали от основного геймплея.

3. Любой аспект игры, не важный для геймплея, обличать в цифры не стоит. Это довольно очевидно, но от вас действительно не требует полная проработка и «оптимизация» мира игры. Если диалоги у вас используются только как способ подачи сюжета – то и не надо продумывать для них какую-то систему.

Как продумать математическую модель? Тут нет единого способа – для каждой игры придумываются собственные правила взаимодействия с миром. Однако, можно дать несколько практических советов, которые облегчат вам работу.

1. Старайтесь не использовать абсолютные величины, а вместо них – дискретные. Иными словами, пользуйтесь процентами, а не конкретными числами. Проценты будут актуальны на протяжении всей игры, а вот конкретные числа в какой-то момент станут бесполезными. Яркий пример – пусть зелье лечение восстанавливает не 200 ХП, а 20% от общего его числа. Тогда вам не придется придумывать целую кучу других зелий лечения и балансировать их, поскольку один предмет будет актуальным на протяжении всей игры.

2. Попробуйте применять правила развития героев на врагов. Таким образом, они будут находиться примерно в равных весовых категориях, и выстроить первоначальный баланс будет проще. И он даже будет работать. Вообще воспринимайте врагов как тех же самых персонажей, но только слабее.

3. Пользуйтесь таблицами и старайтесь систематизировать все модели, что у вас есть. Придумывайте универсальные формулы, и записывайте их в Excel, Word – куда угодно. Не держите все в голове. Визуализация информация поможет вам в дальнейшем на всех этапах разработки.

РПГ не обходится без героев, и их тоже нужно систематизировать. Лично я рекомендую с самого начала примерно прикинуть, какую роль будет занимать тот или иной персонаж – то есть, продумать его геймплейный архетип. Они всем хорошо известны:

1. Воин. Средний во всем класс, обычно ближнего боя.
2. Танк. Консервная банка. Много здоровья, мало урона, мало магии.
3. Разбойник. Мало здоровья, много урона, основная задача – наносить урон под прикрытием.
4. Лекарь. Тут все понятно. Маг, мало ХП, лечит героев.
5. Баффер. Усиливает героев, маг, мало ХП.
6. Колдун/Маг. Мало ХП, много Маны, колдует мощные заклинания.

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

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

В реалиях RPG Maker у нас есть преимущество, потому что он идет с готовой математической моделью и формулами, которые в целом выглядят нормально. Однако я все равно крайне рекомендую систематизировать эту информацию и разобраться в ней. Кроме того, вам все равно придется думать над отдельными механиками и моделями, например, экономики.
Her Third Eye is drawing me closer
Последнее редактирование: 4 года 7 мес. назад от idavollr.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: NettySvit, yuryol, tvorimvsevmeste, Адский дровосек, Noxmils, BrainStorm, Karasu, 2Oth_Century_boi

Основы игрового баланса 4 года 7 мес. назад #113460

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
Основная работа

Баланс – это вещь, к которой надо приступать, только когда все интересующие вас системы уже интегрированы в игру и более-менее работают. До этого момента просчет баланса не имеет особого смысла, потому что игра пока что не работает в своем комплексе.

Имейте в виду, что баланс – это не совсем математика. Все числовые значения нужны вам для того, чтобы создать первоначальное понимание работы игры, а также простроить взаимодействие всех систем. Конечно, сначала вам придется работать с числами и таблицами, но большую часть работы все равно придется делать через тестирование на других людях, и в дальнейшем – изменять значения эмпирически. Цифры нужны, чтобы лучше понимать, как все работает.

Итак, у вас есть готовый билд, который вы хотите показать. Не важно, что это – демо или полная версия игры. Важно, чтобы это был законченный кусок геймплея, в котором будут все ключевые возможности вашей игры. Самое время приступать к балансировке.

Боевая система

С чего начать

На данный момент у вас должно быть:

1. Список всех героев, которые будут доступны игроку. В этом списке должны быть указаны их характеристики, и способности на все урони.
2. Список врагов с тем же самым – характеристиками, типами повреждений, способностями, резистами.
3. Список предметов, которые будут доступны игроку на протяжении всей игры, способы их получения, цена и их влияние на характеристики.

Перед продумыванием баланса стоит также наметить принципы, по которым вы будете определять, сбалансирована ли игра или нет. Например, это может быть такой список:

1. Игра должна давать игроку челлендж только во время сражения с боссами. Проходные бои не должны раздражать, и их основное назначение – подготовить игрока к главному противнику.
2. Персонажи должны иметь средний темп развития, который спадает ближе к середине игры. Минимальный потолок уровня, на котором игрок может закончить игру – 30. Средний – 40, максимальный уровень – 50.
3. Любое сражение должно быть проходимо любой партией. Разница состоит в количестве приложенных к этому усилий.

Этот список я взял буквально с потолка – поскольку для вас он может быть свой. Все зависит от того, какой игровой опыт вы хотите дать, и про что вообще ваша игра. Это необходимо сделать, потому что любые расчеты должны проводиться не в вакууме.

Методы балансировки

Транзитивный метод

Метод, при котором мы сравниваем свойства двух объектов напрямую. Например, у нас есть быстрый, но слабый Разбойник, и медленный, но сильный Воин. Вы выстраиваете таблицу, в которых сравниваете все одинаковые свойства персонажей и врагов, и пляшете уж от этого. Это довольно примитивный метод, который можно использовать, если у вас нет каких-то сложных систем.

Интранзитивный метод

Еще один известный метод баланса – интранзитивный, или «камень-ножницы-бумага». Помните те архетипы, которые мы определяли для каждого персонажа и врага? Сейчас они вам понадобятся.

Идея заключается в том, чтобы выстраивать отношения по принципу – один и тот же архетип одновременно может контрить другой, слаб для второго, и средний или бесполезен для третьего. Например, при противостоянии 1 на 1 Разбойник совершенно точно убивает Мага, умирает от Воина, а против другого Разбойника победа определяется тем, кто раньше ударил оппонента.

Во время тестирования вы проводите пробные матчи. Очень много матчей, где следите за тем, как те или иные юниты относятся друг к другу. Играете всеми возможными способами – используя только обычные атаки, без усилений, с разными бойцами, и так далее, и выделяете для себя, что побеждает чаще и почему. В этом вам помогут заранее созданные таблицы и понимание, какой персонаж или враг имеет конкретную роль.

Это довольно действенная, но очень примитивная модель. Что, если мы хотим сделать магического разбойника? Или Мага в тяжелой броне? Кроме того, у нас есть характеристики, прокачка, предметы. Что делать с этим? Система заметно усложняется, и нам нужно что-то с этим сделать.

Первое – нужно максимально упростить каждого персонажа. Практически все параметры к классических РПГ можно свести до формулы Силы Юнита.

Сила Юнита = Его Урон * Время жизни (Максимум ХП/Урон противника).

Разумеется, эта величина не будет статичной, и меняется в зависимости от других условий. Но сейчас работаем именно с ней. Допустим, у нас есть персонаж Воин, с уроном 25 и 50 ХП. Сила юнита против такого же воина будет равно 50, потому что:

25 * (50/25) = 50.

Любые бафы, резисты и уязвимости точно так же отражаются на этих двух параметрах. Допустим, мы добавим нашему воину броню, которая поглощает 10% любого нанесенного урона. Это означает, что его Максимум ХП увеличится на 10% и станет 55. Таким образом его Сила в бою с таким же персонажем, но без брони, станет 55 – и он в противостоянии 1 на 1 он скорее всего победит. Здесь все просто - если у одного юнита сила выше, чем у другого – то он побеждает.

Теперь снова возвращаемся к архетипам. После того, как мы выстроили между ними прямую зависимость, и узнали про силу юнита, мы можем сделать следующую надстройку – ситуативность.

Идея заключается в том, что каждый персонаж или класс по-разному эффективен в разных условиях. Например:

Воин:

- Побеждает, если сталкивается с Разбойником или Магом 1 на 1.
- В случае, если в он сталкивается с двумя Магами или двумя Разбойниками – он проигрывает
- В случае если в партии есть Лекарь, он может победить партию из Разбойника и Мага.
- В случае если он сталкивается с Воином 1 на 1, побеждает тот, кто нанес первый удар (это уже подразумевает, что при наличии баффа на Инициативу Воин победит другого Воина)

Маг:

- В сражении 1 на 1 с любым противником кроме такого же Мага, Маг проигрывает
- Если его защищает Воин или Танк – Маг побеждает любого другого противника
- Если у Мага кончилась мана – его эффективность падает до нуля.

И этот список может быть огромен. В ситуации, когда Маг сталкивается с противником, уязвимым к Магии, он может выйти победителем даже в бою 1 на 1.

При этом ситуацию нужно рассматривать в динамике, поскольку эффективность юнита но протяжении всего боя может быть разной:

1 ход. Игрок и противники обмениваются ударами. Воин прикрывает Мага. Эффективность и Сила Мага выше, чем у любого другого юнита.
2 ход. У Мага становится меньше маны, доступ к некоторым заклинаниям закрывается. Воин теряет здоровье, но активирует бафф на защиту. Эффективность Воина начинает расти, в то время как эффективность Мага падает.
3 ход. Маг тратит всю свою ману и переходит в ближний бой. Воин активирует бафф на атаку. Эффективность Воина выше, чем эффективность Мага.
4 ход. Воин убивает противника, Маг получает урон.
5 ход. У Воина пропадает бафф на защиту. Маг получает урон и умирает.
6 ход. Воин добивает последнего противника и выходит из боя победителем.

Подобные ситуации показывают время жизни каждого класса и противника. Как мы видим – у Мага очень короткое время жизни, и это должно балансироваться его вкладом в урон или помощь своей партии. У Воина время жизни длиннее – но и его эффективность меньше. Он обладает только физической атакой и меньшим арсеналом способностей. Таким образом, вы можете сбалансировать каждого врага или класс в игре – прикидывая и рассчитывая его время жизни, ситуации, в которых он будет полезен, и его эффективность. Это работает и со смешанными классами – только в этом случае будет хорошо составить график на каждый из стилей игры.

Таким образом, для каждого юнита мы получаем примерно вот такую схему:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Теперь начинается самое интересное – из этих графиков мы можем начать составлять партии и следить за тем, насколько герои эффективны относительно друг друга на временной шкале. Теперь нам требуется составить общий график эффективности партии, на точно такой же временной шкале, вместе со временем их жизни. Например:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Как мы видим, эффективность первой партии в вакууме намного выше, чем эффективность второй. Так ли это на самом деле? В теории – да. На практике – не совсем.

Давайте введем еще одну сущность – это Мастерство Игрока. В геймдизайне соревновательных и других многопользовательских игр существует разделение персонажей на фольксвагены и феррари. Что это означает?

Фольксвагены – герои, которые позволяют получить хороший результат, но не требуют от игрока хорошего навыка игры ими.

Феррари – герои, которые потенциально могут выдавать результат гораздо лучший, чем фольксвагены, но требуют от игрока навыка обращения.

Иными словами, одни партии в нашей игре будут требовать от игрока средних навыков, и выдавать нормальный результат, а другие станут рассчитаны на скилловых игроков, но и результат в потенциале может быть выше.

Теперь вернитесь к вашим схемам и таблицам и подумайте, какие герои у вас – фольксвагены, а какие – феррари. Обычно это понятно из ситуаций, в которых герои выдают максимальную эффективность. В нашем случае Воин – это фольксваген, а Маг – феррари. Почему?

Воин:

- Имеет средние значения ХП, имеет броню и возможность усиливать свою защиту или атаку.
- Следовательно, время его жизни больше.
- Полезен как с маной, так и без нее.
- Имеет мало навыков, за счет чего портрет его поведения сразу же понятен игроку.
- Все его навыки одинаково полезны в любой ситуации, поскольку напрямую влияют на его Силу.

Маг:

- Имеет очень мало ХП, не способен усиливать свои характеристики защиты – время жизни меньше.
- Зависим от наличия находящегося рядом Воина.
- Как только мана кончится – становится бесполезен.
- Вместе с этим – имеет огромный пул заклинаний
- Способен подстраиваться под ситуацию и выдавать максимальную полезность относительно других юнитов против любого противника.
- Для достижения максимальной эффективности им нужно научиться играть
- В случае, если Маг имеет доступ к зельям маны и прикрывается Воином – способен уничтожить любого врага.

Чем больше в партии феррари – тем сложнее ей управлять, но тем эффективнее она становится на дистанции. И наоборот, если в группе героев одни фольксвагены – то и геймплей становится более простым, но вместе с тем она стабильно выдает одинаковую эффективность. Учитывайте это, когда тестируете игру с разными партиями, и старайтесь закладывать подобные идеи персонажей с самого начала их разработки. Кроме того, создание схем, по которым видна эффективность группы, поможет с самого начала выделить проблемный или заведомо проигрышный подбор героев. И помните, что суперполезный персонаж должен требовать от игрока навыка им играть, иначе это сломает баланс игры, и опытные игроки смогут получать еще больше преимущества от простого, но очень мощного персонажа.

Таким образом, вот разница в потенциале между партией фольксвагеном и феррари:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Таким образом, партия из одних феррари, в потенциале может обогнать по эффективности партию фольксвагенов. Это будет происходить не только на длинных, но и на коротких дистанциях - когда игрок будет находить больше комбинаций в расширении возможностей персонажей. Для большей простоты можно построить зависимость:

Больше возможностей - > больше комбинаций - > больше потенциал - > сложнее играть

Меньше возможностей - > меньше комбинаций - > меньше потенциал - > проще играть

Кроме этого, нельзя забывать про соотношение рисков и наград, которые получает игрок от взаимодействия с тем или иным аспектом геймплея. В серии игр Persona существует скилл Mind Charge, который удваивает магический урон персонажа в следующем ходу. За счет того, что персонаж, фактически, теряет целый ход на подготовку заклинания, это является рискованным действием – потому что за это время персонаж никак не защищен от входящего урона. Однако награда за это – возможность нанести сокрушительный удар по противнику. Это – неплохой пример риска и награды.
Her Third Eye is drawing me closer
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, tvorimvsevmeste, Doctor_Bug, Адский дровосек, Natan_Exp, BrainStorm, Karasu

Основы игрового баланса 4 года 7 мес. назад #113461

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
Про создание персонажей

Иногда в РПГ нам дают возможность создать персонажа, выбрав ему расу, класс и что-то еще. Для того, чтобы сбалансировать их на старте, можно использовать точно такую же балансировку от среднего. Обычно «средней расой» в РПГ является человек, а класс – «Воин». Вы смотрите на стартовые характеристики каждого класса или каждой расы, складываете их, и делите их на сумму характеристик вашего среднего значения. Если получилось 1 – то все хорошо.

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

Следите за тем, чтобы «предрасположенные» к какому-либо классу расы могли нормально себя показывать и с другими профессиями. Опять же – тут идет балансировка от среднего: определенные комбинации, конечно, должны иметь преимущества друг перед другом, но и «ломаться» билды игроков от того, что они выбрали что-то не то, не должны. Тут уже помогут только многочисленные плейтесты на разных стадиях игры и ваши наблюдения.

Про рандом

Рандом – очень тонкая штука, к которой надо очень внимательно относиться. Если его будет много – то игра рискует перестать ощущаться честной и превратиться в казино, где побеждает кидание кубов. Если слишком мало – то игра наскучит игроку, потому что будет очевидна и быстро понятна.

Первое, что нам нужно усвоить – мы никак не сможем «исправить» саму суть генерации случайных числен. Единственное, на что можно как-то повлиять – это восприятие рандома игроком. Дело вот в чем. Психологически мы всегда думаем, что случайность на нашей стороне – именно на этом, если сильно упрощать, строится принцип казино. Даже если проценты ультранизкие, игрок всегда считает, что «если сейчас не вышло – то теперь точно получится», особенно если видит, что при срабатывании события его ждет высокая награда.

Кроме этого, наше восприятие случайности очень сильно искажено бытовым пониманием рандома. Если игрок видит шанс в 10% - то это значит, что из 10 попыток 1 точно окажется удачной. Когда этого не происходит – то у него появляется ощущение сломанного рандома. Справедливо ли это? Нет.

Игрок всегда мыслит короткими дистанциями – и это следствие самой специфики игр, особенно тех, где боевые столкновения не редкость. И хотя статистически, 10 промахов из 10 с шансом попадания в 10% - это вполне нормальная ситуация, по ощущениям самого игрока случайность кажется сломанной и подкрученной. Что мы можем с этим сделать?

Балансируйте не сами проценты, а то, как они ощущаются.

1. Рандом всегда должен работать в пользу игрока. Это – одна из вещей, которую он никак не может контролировать, а также до конца понять, как оно работает.

2. Придумайте циклы, по которым будет работать ваш рандомайзер, и когда числа будут программно подкручиваться внутри него. Например, если какое-либо событие не происходит Х раз, то на Y попытке оно точно сработает. Чем выше процент – тем на меньшей дистанции оно должно происходить. Никто не любит промахиваться с шансом попадания в 80% три раза подряд. Ровно так же, как и когда предмет с шансом дропа в 20% ни разу не выпал после убийства 10 монстров. Такие циклы могут работать только на игрока, а противникам оставить натуральный радном.

3. Ради бога – не мешайте игроку принимать решения рандомом. Если вы даете выбор – то его последствия должны быть понятны и прогнозируемы. Нет ничего хуже ситуаций, когда игра дает тебе выбирать и рандомно выдает на него последствия. Это НИКОГДА не ощущается честно. Если вы делаете процедурную генерацию – то ее нужно балансировать так, чтобы челлендж был соразмерен текущим возможностям игрока. Игрок должен понимать, какие последствия принесет ему тот или иной выбор в любой ситуации.

4. Обилие рандома в боевой системе и способностях, опять же, может привести к тому, что игрок перестанет ощущать контроль над ситуацией. Следствие этого – полная блокировка адекватного восприятия игрового процесса. Он просто начнет использовать либо самую сильную, либо самую стабильную, по его мнению, способность.

5. Дайте игроку возможность управлять рандомом при помощи чего-то стабильного. Например, в Dungeons And Dragons существуют модификаторы к броску кубика, которые сглаживают натуральный рандом.

6. Не переборщите с подкручиванием процентов, потому что это может сыграть в обратную сторону. Когда событие с шансом в 10% сработало два раза за бой – это ощущается как удача. Когда оно срабатывает каждый раз – это «сломанный рандом».

А что с врагами?

А с врагами все то же самое, что и с героями, только меньше. После того, как вы разберетесь, какими архетипами они являются, и что вообще должны делать, вам потребуется собрать отдельные партии врагов и посмотреть, как они ведут себя относительно героев.

Вообще, старайтесь строить врагов вокруг какой-то одной идеи. Это может быть как «огромный огр с палицей», так и «вампир, который может лечить своих союзников». Я настоятельно рекомендую дизайнить противников точно так же, как и героев – давать им архетипы, те же самые характеристики и возможности, но не сильно их углублять. То же самое касается и боссов.

Очень важно помнить о том, какие инструменты и возможности будут у игрока на момент столкновения с определенным противником. Если персонажи не умеют снимать оглушение, но вы вываливаете на них сильного врага, который оглушает – то это может не очень хорошо восприняться игроком. Лучше всего составлять игру так, чтобы победа зависела только от того, насколько своевременно и правильно игрок отреагировал на действие игры.

Однако, это же работает и в обратную сторону. Если вы знаете, что на этом этапе игры у игрока будет доступ к заклинанию «Оглушение», то усильте подбор врагов, чтобы у него был стимул и повод его использовать. Заставляйте игрока пользоваться всеми инструментами, что у него есть, иначе игра быстро станет скучной.

Осталось дать только несколько общих советов:

1. Старайтесь всегда идти от среднего. Создайте персонажа, у которого будут средние характеристики и средняя Сила, и в просчете остальных героев отталкивайтесь от него.

2. Позитивные стороны героя не только должны уравновешиваться негативными, но и иметь возможность «сыграть» как при условии правильно подобранной партии, так и при ее отсутствии. Если персонажу нужно время для того, чтобы он раскрылся, то в этом ему должна помогать не только партия, но и он сам. Обычно подобный принцип уравновешивается тем, что при соло-игре герой не раскрывается до конца. Например, Маг при длительной поддержке Воина выдает хороший DPS, но и сам имеет Щит, который позволяет ему прожить чуть дольше. Если Воин в партии – то наиболее эффективно использовать другие спеллы, и к моменту смерти Воина у Мага не останется маны на него, а если нет – то тогда мана тратится и на Щит, но выживаемость поднимается.

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

4. Давайте игроку право на ошибку, особенно когда он только учится. Если вы вводите какую-то новую механику или способность – пусть сначала персонажи убьют несколько слабых монстров и научатся ей противостоять.

5. Работайте только со средними значениями. Старайтесь не сильно учитывать в своих расчетах такие вещи как криты и промахи – поскольку рандом должен быть скорее неучтенным фактором, чем чем-то, на что игрок может положиться. То же самое касается и предметов – один из главных бичей новичковских проектов – это несекретные секреты, то есть те, которые необходимо найти для дальнейшего прохождения.

6. В случае, если у вас вылезли серьезные проблемы, и какая-то комбинация героев неиграбельна – это можно решить расходниками, которые расширяют возможности игрока. Учитывайте, что изменения самих классов затронут все комбинации, в которых они задействованы, а расходники нет. Конечно, какие-то игроки не будут ими закупаться, и они останутся лежать без дела, но для игрока это лучше, чем полный тупик.

7. Думайте как в кратковременной перспективе, так и в долговременной. Что происходит с партией после того, как она пережила один бой? А несколько? Старайтесь сделать так, чтобы темп прохождения разными партиями был примерно одинаков – но опять же, помните о фольксвагенах и феррари. Иногда медленное начало означает не то, что герои несбалансированы, а то, что игроку требуется время для обучения.
Her Third Eye is drawing me closer
Последнее редактирование: 4 года 7 мес. назад от idavollr.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, tvorimvsevmeste, Doctor_Bug, Адский дровосек, BrainStorm, Karasu

Основы игрового баланса 4 года 7 мес. назад #113462

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
Баланс сложности

По своей сути, сложность – это функция, которая постоянно движется вверх. Игрок учится играть, и игра постоянно дает ему возрастающий челлендж, в котором надо использовать его навыки. В понимании многих, сложность выглядит вот так:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Хорошая ли это прогрессия? Абсолютно нет.

Линейно возрастающая сложность – это суперскучно и фрустрирующе. Если она будет очень крутой – то игрок просто задолбается играть в адски сложную игру, которая не дает ни на минуту продохнуть. Если пологой – то ему станет скучно от отсутствия челленджа.

На самом деле функция сложности больше похожа на пилу, и выглядит вот так:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Идея состоит в том, что изначально сложность игры растет постепенно – игрок учится играть, осваивает базовые механики. Потом происходит скачок - игра становится ощутимо сложнее, появляется больше вызова, и постепенно приходит к пику – битве с боссом, например. И самое важное – после этого пика следует плато с уменьшением сложности, на котором игрок отдыхает перед новым уровнем челленджа.

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

Разумеется, для разных игр существуют разные графики – все зависит от того, какой игровой опыт вы хотите дать, однако я настоятельно рекомендую давать игроку отдохнуть даже если вы делаете ультрахардкорную тактическую РПГ в сеттинге гримдарк-фентези про разрушающийся мир.

Одна из самых распространенных ошибок – балансировать сложность без учета времени обучения игрока. Если давать первоначальные ресурсы – то всегда впритык, если вываливать врагов – то таких, чтобы с первых же минут рвали новичка на части. Это – плохо, и так делать нельзя. Учитывайте то, что игрок не понимает, как играть в ваш проект. Дайте ему время на то, чтобы освоиться, понять основные механики, понять, что ему нужно для нормальной игры. Лично я считаю, что если в игре существует вероятность того, что тебе придется начинать все заново – это плохой баланс. Конкретных формул в данном случае просто не существует – вам надо играть в игру разными способами и следить за тем, чтобы они работали.

Однако всегда находится кто-то, кто начинает играть совершенно не так, как ты предполагаешь, поэтому гораздо более эффективно изначально продумать небольшие механизмы, которые не дадут игроку застопориться во время прохождения. Например:

1. Придумать какие-то небольшие и легкие активности, которые железно принесут игроку какое-то небольшое экстренное количество ресурсов. Скажем – классический квест на собирательство, или что-то другое, более интересное на ваш взгляд. Самое важное это то – чтобы эти активности были понятны и стабильны, а также не мешали остальному игровому процессу и не сбивали темп слишком сильно.

2. Рассчитать необходимую «ресурсную подушку безопасности», и выдавать ее игроку в форме получаемого с врагов лута. Например, вы четко знаете, что для прохождения подземелья ему потребуется 3 зелья здоровья. Дайте ему пять – на случай того, если он вдруг застрянет на каком-то этапе. Нет ничего хуже, чем понимать, что под конец подземелья у тебя просто кончилось все, что было, и теперь тебе надо топать обратно в город и закупаться. В этом плане может помочь тестирование «идеального прохождения», и выдача предметов, которая будет избыточна для него.

3. Придумать несколько параллельных активностей. Если игрок где-то не вывозит – то он может пойти в другое место и поиграть там. Это сохраняет ощущение прогрессии, но требует прорабатывать больше контента.

Общие советы по созданию сложности:

1. Сначала обучение – потом экзамен. Если на локации много монстров и босс, то монстры могут обучать игрока отдельным механикам, а босс потом – использовать то же самое, но сильнее. Таким образом мы выстраиваем прогрессию не только на уровне игры, но и на плоскости личного навыка игрока.

2. Easy to learn – hard to master. Не делайте перегруженные и непонятные с первого раза механики. В идеале, игрок должен освоить все ключевые моменты геймплея с первых минут. Все, что потом – нанизывание дополнительных слоев на уже имеющийся каркас.

3. СМЫСЛ – В ДИНАМИКЕ. Нет ничего плохого в том, чтобы дать игроку расслабиться, особенно после тяжелого сегмента. Челлендж не должен наваливаться на игрока с первых шагов – а наращиваться постепенно.

4. Баланс от среднего значения. Все сегменты челленджа рассчитаны на среднее развитие персонажей и средние условия. Не надо выстраивать сложность вокруг того, купил ли игрок тот самый лучший меч за 50000 золотых. Выстраивайте сложность вокруг скилла и принятия решений.

5. Следите за темпом самой игры. Очень медленное накопление ресурсов для продвижения по игре точно так же плохо, как и быстрый галоп с рогом изобилия в кармане. Не заставляйте игрока буксовать на одном месте, искусственно растягивая прохождение. Необходимость выживать с ресурсами впритык – это не хардкор. Необходимость принимать интересные решения и пользоваться возможностями персонажей по максимуму – хардкор.

Экономика

В отношении экономики нужно следовать нескольким простым правилам:

1. Игрок всегда должен понимать, почему та или иная вещь стоит именно столько.

2. Востребованность влияет на цену в обратной пропорции, и цена – на востребованность. Чем дороже вещь – тем менее она будет востребована, а если вы хотите, чтобы игрок покупал что-то чаще – то делайте это дешевле.

3. Соотношение источников ресурсов и способов трат должно быть таким, чтобы не возникало дефицита или избытка.

Для построения баланса экономики вам понадобится математическая модель, которую вы выстроили до этого. Ваша задача – понять, на что влияет каждая вещь, и оценить ее влияние в денежном эквиваленте. Я бы советовал начать с некоей минимальной стоимости какого-то очень востребованного предмета. Это число берется из головы.

Например, у нас есть слабое зелье лечения. Предполагается, что это самый востребованный ресурс на старте игры. Допустим, зелье лечения восстанавливает 200 ХП. Назначим ему цену в 35 золотых.

Что это означает? То, что для нас 200 ХП = 35 золотых. Это приводит нас к тому, что на каждые 200 урона, которые были нанесены противниками, игрок должен получать 35 золотых, чтобы окупить полученные повреждения. Соответственно, ценник на остальные зелья здоровья получается таким:

Восстанавливаемое ХП/200 * 35

То есть каждые дополнительные 200 ХП, которые восстанавливают другие зелья, прибавляют им к стоимости 35 золота.

Только что мы сделали две вещи:

1. Во-первых, обозначили минимальную стоимость, ниже которой ценник опуститься не может.
2. Во-вторых – мы назначили стоимость характеристики. Если 200 ХП у нас оценивается как 35 золотых, то 100 ХП – 17,5. Округляйте так, как считаете нужным.

Теперь вам нужно проделать то же самое и с остальными характеристиками. Сколько стоит единица Маны? А Силы? Все это вам надо взять из головы – и продумывать стоимость исходя из того, что вы высчитали.

Кроме того, скорее всего потребуется установить модификаторы на различные частные случаи – например, когда предмет поднимает характеристику не в конкретном значении, а в процентах. Учитывайте, что это намного сильнее, потому что такой предмет будет актуален и полезен на всех этапах игры. Установите на него множитель, или дополнительный модификатор, который будет добавляться к общей стоимости. Общую стоимость можно установить, основываясь на, во-первых, минимальной цене, а также на том, насколько предмет должен быть востребован.

Самое интересное начинается, когда мы доходим до экипировки. Для примера давайте придумаем простенькую математическую модель, которую можно легко почитать в уме.

1. У персонажа есть ХП и Атака. Нанесение повреждения происходит по формуле ХП минус Атаки.
2. Показатель Атаки мы оценим в 10 золотых, столько же стоит Меч +1 урона.
3. У нас есть меч, который дает +10 атаки для персонажа.

Вопрос – сколько должен стоить меч? При быстром подсчете можно ответить – конечно же 100 золотых! И это будет не совсем верный ответ.

У нас есть Воин с 400 ХП и атакой 20, и Враг с 200 ХП и атакой 15. Без меча, и учета всех сторонних факторов, Воин потребуется 10 ударов на то, чтобы убить врага. При этом он потеряет 150 очков здоровья. С мечом же его Атака подскочит до 30, и для победы потребуется всего лишь 7 ударов. А это означает, что и потеряет он 105 ХП, что почти на треть меньше, чем его потери без снаряжения.

Таким образом, когда игрок получает более сильные предметы – он не только повышает свой стат Атаки, он еще и экономит ХП. Следовательно, каждая следующая единица Атаки ценнее предыдущей настолько, сколько ХП она позволяет выиграть.

Теперь задумайтесь – как вообще игрок будет получать урон? Если герой постоянно будет сталкиваться с монстрами, у которых будет 200 ХП, и при этом они походят по одному, то меч будет очень серьезным оружием, поскольку разгоняет персонажа на треть его эффективности. Если же суть вашей игры – в столкновении с ордами врагов, то тогда такое оружие не будет слишком эффективно. Исходя из этого, вы можете оценить стоимость оружия. Задайте фиксированную стоимость одной единице выигрышного Здоровья, и умножайте ее на количество единиц урона, которое дает оружие, минус 1. Допустим, оценим ее так же в 10 золотых. Тогда:

1. Меч +1 урона будет стоить 10 Золотых
2. Меч +2 урона будет стоит 30 Золотых
3. Меч +3 урона будет стоить 50 золотых
4. Меч +4 урона будет стоить 70 золотых
5. …
6. Меч +10 урона будет стоить 190 золотых.

Вы можете придумать какие угодно формулы для своей игры, самое главное – постоянно держите это в голове. То же самое работает и для остальных видов снаряжения.

Исходя из тех чисел, которые мы получили, вам потребуется подобрать правильный дроп для монстров, награду за квесты, и другие числа для игрока. В этом плане всегда рассчитывайте, сколько полезных вещей минимально сможет приобрести игрок на свои деньги, а также когда тот или иной предмет окупит свои затраты. Про этом мы более подробно поговорим в следующем разделе.
Her Third Eye is drawing me closer
Последнее редактирование: 4 года 7 мес. назад от idavollr.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, tvorimvsevmeste, Doctor_Bug, BrainStorm, Karasu

Основы игрового баланса 4 года 7 мес. назад #113463

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
Полирование

Итак, вы выставили все числа. Протестировали игру вдоль и поперек, и с радостным лицом выкладываете билд на форум.

Скорее всего, вы где-то конкретно налажали.

И вот теперь мы подбираемся к самому главному. К истине, которая все это время витала в воздухе полунамеками и отдельными фразами.

Идеального баланса не существует, а большая часть работы не потребует от вас математики.

Все те расчеты, которые вы делали до этого, необходимы для того, чтобы ваша игра представляла собой комплексную и стройную систему, в которой вы досконально разбираетесь. Самый большой объем работы придется сделать сейчас.

1. Внимательно следите и вчитывайтесь в отзывы игроков. Очень часто, когда они говорят о дисбалансе в том или ином аспекте, они акцентируют внимание только на конкретной ситуации, а не на всей игре в целом. Ваша задача – научиться понимать, в чем на самом деле находится проблема, и решить ее. Именно тогда вам и нужно будет пользоваться всем комплексом документации, которая у вас имеется.

2. Старайтесь не трогать героев, а менять противников. Вообще во время балансировки старайтесь менять параметры, которые не повлияют на игру в долгосрочной перспективе. Гораздо дешевле просто усилить врага в одном из боев, чем перерабатывать способности героев, которые могут вылезти где-то дальше.

3. Помните про сложность и прогрессию, а также про рост скиллов. Иногда под дисбалансом понимают то, что игрок сталкивается с ситуацией, которую просто не умеет решать – потому что до этого игра его не научила это делать. Такое может быть из-за найденных ранее эксплойтов внутри игрового процесса – когда пользователь играет нечестно, получает больше преимущества, но в какой-то момент попадает на экзамен по этой механике. Здесь нужно перерабатывать не саму механику, а процесс раньше – то есть, закрыть эксплойт.

4. Игроки играют так, как хотят. «Ты не можешь пройти, потому что до этого не сделал вот это» - самая дешевая отговорка, которую можно придумать. Старайтесь следить за тем, как проходят вашу игру другие люди, и подстраивать ее под разные стили прохождения. Самый простой и действенный вариант – ограничивать игрока, но гораздо интереснее дать ему честную свободу и вариативность, пусть это и сложнее.

5. Больше думайте. Львиная доля процесса балансировки достигается эмпирически. Постоянно спрашивайте себя – работает ли то, что ввожу, на положительный опыт игрока? Если да – то почему? Для примера можно упомянуть известную в узких кругах игру «Наруто: Уроки Цунаде», которая специально сбалансирована так, чтобы игрок не встревал лишний раз на боях. Ему не интересна глубокая боевка – ему интересно кое-что другое, не менее глубокое. Бои здесь – просто способ выстроить прогрессию и дать ощущение достижения, открытия новых сцен.

Заключение

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

1. Интерес и фан – важнее всего. Как бы не была математически идеально сбалансирована ваша игра, если в нее просто неинтересно играть – то это плохой проект. Всегда держите это в голове.

2. Выстраивайте баланс не от математики, а от идеи игры. Баланс приключенческого нон-стоп экшена будет выглядеть совершенно иначе, чем баланс харкорной РПГ-тактики. Это может работать и с отдельными сценами – например, в Hellblade Senua’s Sacrifice в финале вообще нельзя умереть, потому что это бы убило всю ценность сцены и смазало бы впечатление.

3. Давать игроку отдохнуть и веселиться – нормально. Никому не нужен постоянный челлендж.

4. Средние значения – один из ключей к успеху. Балансируйте сложность под среднего по скиллу игрока. Каким должен быть средний игрок в вашем проекте? На это вопрос вам поможет ответить идея игры и понимание того, для кого она вообще делается.

5. Рандом – хорошая вещь, которая делает игру интереснее. Главное – не переборщить.

6. Упрощайте и старайтесь приводить все к нескольким числам. Не плодите сущности.

7. Выучите свою игру от А до Я. Мыслите комплексно, а не отдельными аспектами. Тогда вы сможете лучше фильтровать обратную связь.

8. Лучший принцип – Easy to Learn, Hard to Master

9. Ради бога, запомните – ФАН ВАЖНЕЕ МАТЕМАТИКИ.

Давайте теперь для закрепления сделаем небольшое домашнее задание. Ответы кидайте в комменты. Это упражнение по деконструированию игры. Возьмите любой интересный вам проект, в который вы играли, и ответьте на вопросы.

1. Какие сущности влияют на геймплей? Каким образом они выражены в механике, геймплее, и числах?

2. Выделите основной игровой процесс и побочные активности? Как представлено то, и другое? Что делает игру веселой?

3. Каким образом игровые сущности взаимодействуют друг с другом?

4. Представьте, что вы убрали любую из игровых сущностей из игры. Как это повлияет на игровой процесс?

5. В чем заключается ключевой вызов игры? Ощущается ли он простым или сложным, и почему?

6. Выделите пики и спады сложности внутри игры. Как часто они происходят? Почему они ощущаются именно так?

7. Были ли ситуации, когда вы ощущали нечестность игры по отношению к вам? Если да – то это был, на ваш взгляд, просчет баланса, или намеренное желание разработчика?

8. Что внутри игры является «фольксвагеном», а что – «ферарри»?
Her Third Eye is drawing me closer
Последнее редактирование: 4 года 7 мес. назад от idavollr.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol, tvorimvsevmeste, Doctor_Bug, Адский дровосек, BrainStorm, Karasu

Основы игрового баланса 4 года 7 мес. назад #113483

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2729
  • 2 место КомпозиторОраторОрганизатор конкурсовПобедитель конкурса3 место Готв1 место в ГотвУчитель
Образцовая обширная статья. примеры есть, графики/схемки есть, всё структурированно, разжевано и при этом нескучно читать.

можно еще картинок навставлять чтоб многобукоф не пугал. например после строчек:

"Линейно возрастающая сложность – это суперскучно и фрустрирующе. Если она будет очень крутой – то игрок просто задолбается играть в адски сложную игру, которая не дает ни на минуту продохнуть. Если пологой – то ему станет скучно от отсутствия челленджа."

можно вставить картинку из какой-нибудь игры, где к примеру в начале игры надо провести 5 боев с одинаковым врагом,используя тупо атаку без скилов
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: idavollr

Основы игрового баланса 4 года 7 мес. назад #113485

  • idavollr
  • idavollr аватар
  • Вне сайта
  • Мастер
  • ugly but honest
  • Сообщений: 201
  • Спасибо получено: 198
  • 2 место Композитор
yuryol пишет:
Образцовая обширная статья. примеры есть, графики/схемки есть, всё структурированно, разжевано и при этом нескучно читать.

можно еще картинок навставлять чтоб многобукоф не пугал. например после строчек:

"Линейно возрастающая сложность – это суперскучно и фрустрирующе. Если она будет очень крутой – то игрок просто задолбается играть в адски сложную игру, которая не дает ни на минуту продохнуть. Если пологой – то ему станет скучно от отсутствия челленджа."

можно вставить картинку из какой-нибудь игры, где к примеру в начале игры надо провести 5 боев с одинаковым врагом,используя тупо атаку без скилов

Спасибо!
Ага, я понял, что это стоило сделать уже после того, как запостил и увидел какие блоки текста получаются %). Ваще думаю после конкурса дописать ее, и как раз одним из пунктов - вставить побольше примеров с картинками.
Her Third Eye is drawing me closer
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: yuryol
Время создания страницы: 0.981 секунд