Данным небольшим постом постараюсь убедить вас использовать чуточку больше рандома и процедурной генерации в ваших проектах.
В любом случае, будет много интересных ресурсов.
Виды рандома в играх
Вообще, я сторонник того, чтобы использовать как можно больше такого рода контента, поскольку это повышает реиграбильность и количество уникальных игровых ситуаций для пользователя.
Понятно, что делать это стоит без фанатизма. В пример можно привести No Man’s Sky, где разработчики возвели идею процедурной генерации в абсолют и до сих пор за это расплачиваются.
Проблема, на мой взгляд, в том, что многие принимают данную концепцию слишком глобально, зацикливаясь, например, на создании бесконечных миров или тонны ненужного оружия. Но при этом забывают уделять внимание мелочам, из которых, собственно, и состоит окружение игрока.
Поскольку сам я сижу на относительно небольших проектах, то стараюсь вводить максимально возможное количество рандомного/процедурного контента, чтобы игрок не заскучал и мог находить что-то новое каждый раз.
Примеры используемой генерации
Хотелось конечно дополнять примеры иллюстрациями, но, к сожалению, NDA не позволяет этого сделать.
- Вместо статичного фона звездного неба, использую систему частиц, благодаря которой каждый раз создается уникальный пейзаж;
- Вместо одного спрайта растений на подоконниках, уговорил дизайнеров нарисовать несколько — в совокупности с рандомом, каждый раз получается уникальный вид зданий;
- Вместо дефолтных позиций платформ для запуска ракет, реализовал простенький алгоритм — благодаря этому, положение платформ и их размеры задаются «случайным» образом. В сочетании с рандомным выбором спрайтов ракет, каждый раз достигается уникальная комбинация;
- Тропические плоды, свисающие на лианах, каждый раз появляются в новом месте, а не жестко зашиты;
- Ломаные линии, определяющие движение игрока, тоже процедурно генерируются, а не выбираются из пары заданных;
- Объекты для взаимодействия с пользователем также каждый раз появляются в разных местах. В другом случае, наоборот, — места могут быть жестко зашиты, но вот сам объекты нет.
Продолжать можно долго. Чувствую, многие сейчас возразят, что все это не имеет никакого смысла: если геймплей кривой, то это не спасет игру. Согласен, такие подходы стоит использовать, только когда все остальное уже впорядке, а лучше заранее связывать воедино с основными игровыми механиками.
Ниже приведены примеры с отсутствием и наличием вариативности. Постарался взять ситуации с которыми столкнулся лично, а не которые у всех на слуху.
Осторожно, спойлеры!
Ситуации, где хотелось бы вариативности
- The Legend of Zelda: Breath of the Wild — лут в сундуках: я понимаю, что такие предметы, как легендарный меч и д.р., могут и должны выдаваться в конкретных местах, по квестам и т.д., но когда точно знаешь, что выпадет из сундука в который пришлось заглянуть несколько раз из-за смерти, — сильно надоедает.
- The Legend of Zelda: Breath of the Wild — святилища: сама идея святилищ довольна интересна — головоломки на любой вкус и цвет. Но в определенный момент, когда я не смог сам пройти одно из хранилищ (название, к сожалению не запомнил), где необходимо было с помощью древних механизмов ввести количество звезд изображенных в каждом созвездии, я обратил внимание, что у меня все тоже самое, что и в видео, которое я смотрел. Добавив простую процедурную генерацию таких созвездий, можно легко создать уникальную ситуацию для каждого игрока. Даже если игрок и подсмотрит прохождение, ему все равно придется напрячься, чтобы выполнить задание.
- Talos Principle — зашитые замкИ: ребята из Croteam постарались на славу, создав игру не уступающую Portal, поднимающей риторические вопросы, с отличными головоломками, кучей пасхалок и несколькими концовками. Но вот замкИ, открывающие двери и реализованные с помощью головоломок по типу «собери прямоугольник из фигурок», всегда будут одни и те же на одних и тех же местах. Почему нельзя было реализовать хотя бы несколько вариаций головоломки для одного замкА? Это существенно бы усложнило жизнь тем, кто решил заглянуть в гайды по прохождению.
Видео, на тему создания головоломок
- Control — респаун врагов по триггеру: не выполнив локальное задание, я решил вернуться обратно, откуда пришел. Как только, я перешагнул порог комнаты — враги зареспаунились. Т.е. игра тупо отработала по триггеру «Когда пойдет назад» и не важно, выполнил я задание или нет. Control с этой точки зрения сильно разочаровал. Вообще, очень странно, что такое существует в 2К19 в игре AAA класса. В той же самой L4D2 боссы появляются в разных местах. Понятно, что места эти зашиты и спустя столько лет уже заучены сообществом наизусть, но согласитесь, что так намного интереснее. А спаун мелких боссов так вообще реализован хитро, исходя из расчета нападения на самого слабого, отстающего или, наоборот, убежавшего вперед.
Ситуации, где реализовано круто
- Dishonored — приём Леди Бойл: в данной миссии необходимо устранить одну из 3 сестер, какую именно — выбирается игрой случайно. Этот трюк сильно усложнил жизнь спидраннерам.
- Dishonored 2 — загадка Джиндоша: игра предоставит вам возможность срезать путь, решив адаптированную под лор игры классическую задачу Эйнштейна. Вот только у каждого игрока свой набор условий. Даже зная алгоритм решения, Вам, вероятнее всего, понадобится листок и ручка, чтобы пройти дальше.
- Borderlands — генерируемое оружие: наверное, все слышали про эту, одну из уникальных, особенность данной серии. Разработчики превратили оружие в фантики на любой вкус, цвет и ситуацию. Вам не имеет смысла привязываться и искать то самое, единственное орудие смерти, ведь через пару минут подвернется что-нибудь получше.
Вероятно, большинство пользователей даже и не заметит, что вы о них позаботились, реализуя незначительную вариативную логику. Но поверьте, они заметят ее отсутствие — ведь из таких мелочей и складывается игра. А реализовать ее очень просто: не поленитесь написать лишних пару строчек кода или нарисовать на пару спрайтов больше. Надеюсь, мне удалось вас немного переубедить или хотя бы посеять зернышко сомнения.