Создание боевого пространства в однопользовательских играх

Разработка игр | |

singleplayer-combat-space

В данной статье объясняется создание боевого пространства в однопользовательской кампании на примере Killzone Mercenary (далее KZM). На тему создания боевых столкновений существует приличное количество текстов, но мне кажется, ни в одном из них не рассматривается ни подробная схема окружения, ни уместность размещения различных элементов. В одной из своих ранних работ я пытался собрать воедино все возможные концепции дизайна столкновений, не до конца понимая их влияние на впечатления игрока. Как бы странно это ни звучало, я обнаружил, что ограничение количества элементов может привести к более цельному и ёмкому результату; иногда меньше значит больше. На примере реальной игры я продемонстрирую, что это значит и как может применяться.

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

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

Метрики

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

Подстраивая схему арены под ИИ противников (NPC), следует учитывать их метрики. Это численные значения, согласно которым NPC ориентируются в пространстве и используют окружение, также они определяют разницу между классами врагов. Этот момент не так уж часто обсуждается и может быть упущен из виду, хотя он непосредственно влияет на движение и поведение противников.

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

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

В KZM мы использовали движок Killzone 3, модифицировав его под PS Vita. В Killzone 3 штурмовики считали безопасным расстоянием от игрока 25 метров, но на экране PS Vita с такой дистанции противника разглядеть непросто. Мы изменили дистанцию ведения огня на 15 метров, а значит боевые пространства, основанные на метриках Killzone 3, нуждались в соответствующих правках, чтобы NPC работали надлежащим образом. Это суровая правда игровой разработки – метрики ИИ или чего бы то ни было ещё могут изменяться, а вместе с ними приходится менять и боевые пространства.

Оружие

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

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

Предварительная демонстрация

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

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

Первый взгляд на десантный корабль

Первый взгляд на десантный корабль

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

Первая волна

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

Выход из арены расположен в левой верхней части композиции

Выход из арены расположен в левой верхней части композиции

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

Штурмовики спрыгивают с верхнего этажа

Штурмовики спрыгивают с верхнего этажа

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

Движение NPC не ограничено определёнными областями, поскольку это может потенциально нарушить их поведение в ряде ситуаций. По факту, во всей KZM маршруты NPC ограничиваются лишь в считанных случаях – вместо этого мы выстраиваем окружение согласно желаемому поведению ИИ. Это важно для постоянства логики их действий, ограничение маршрутов будет вносить расхождение с тем, что игрок уже успел усвоить. Это может стать причиной неспособности игрока правильно предугадать поведение врагов и эффективно спланировать собственные действия.

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

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

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

Фронт первого сражения

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

Два фронта и укрытия, что их обозначают

Два фронта и укрытия, что их обозначают

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

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

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

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

Новый штурмовик снабжён двумя анимациями спуска на арену

Новый штурмовик снабжён двумя анимациями спуска на арену

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

Линия фронта смещается после появления нового врага

Линия фронта смещается после появления нового врага

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

Перемещение фронта

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

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

Ещё двое штурмовиков появляются рядом с трубой

Ещё двое штурмовиков появляются рядом с трубой

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

Новые линии фронта

Новые линии фронта

Нейтральная территория

В этом моменте боя также присутствует «нейтральная территория», пустое пространство без каких либо укрытий или препятствий. Находиться в этом пространстве небезопасно, и это хороший способ останавливать игрока, не вынуждая его стоять на месте искусственным путём; игроку нужно устранить угрозу, прежде чем продвигаться перёд. Здесь мне необходимо остановить игрока, чтобы он наверняка расправился с новыми штурмовиками до того, как будет учиться взбираться по трубе.

Нейтральная территория между линиями фронта

Нейтральная территория между линиями фронта

Звук

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

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

Подъём наверх

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

Укрытия, используемые к этому моменту

Укрытия, используемые к этому моменту

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

Напарник демонстрирует новую механику

Напарник демонстрирует новую механику

Вторая волна

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

График интенсивности боя на первой арене

График интенсивности боя на первой арене

Далее наступает время для второй волны противников. На этом моменте возвращается десантный корабль – после успешного прыжка игрок и напарник наблюдают его прибытие.

Игрок наблюдает прибытие десантного корабля с балкона

Игрок наблюдает прибытие десантного корабля с балкона

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

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

Штурмовики спускаются на поле боя с десантного корабля

Штурмовики спускаются на поле боя с десантного корабля

Спустившимся штурмовикам сразу же требуются укрытия. Бывший фронт игрока становится вражеским фронтом, а балкон теперь олицетворяет линию фронта игрока и его напарника.

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

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

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

Противники встали в несколько рядов и растянулись шире, чем на половину экрана

Противники встали в несколько рядов и растянулись шире, чем на половину экрана

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

Ограничение маневрирования противников

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

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

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

Круговое перемещение по периметру зоны поражения

Круговое перемещение по периметру зоны поражения

Последнее подкрепление

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

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

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

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

Последнее подкрепление приходит через дверь, видимую с балкона

Последнее подкрепление приходит через дверь, видимую с балкона

Финальная композиция

Последняя метрика, которую нам следует учитывать – геометрическое и композиционное расположение выхода. Он находится на высоте 4 метров, чтобы поддерживать анимацию спуска штурмовиков, а также анимацию, когда напарник помогает игроку забраться наверх. Эта анимация работает как «односторонний проход», то есть место на локации, после которого нельзя вернуться обратно. К тому же, для неё требуется, чтобы напарник первым подошёл к нужному месту, а значит просто пробежать к выходу не получится.

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

Напарник готовится подсадить игрока у выхода с арены

Напарник готовится подсадить игрока у выхода с арены

Итоги

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

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

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

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

Оригинал найдете на форуме MapCore.

Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить