Comments 10
не так сложно "сгенерировать уникальную местность для каждого игрока", как ответить на простой вопрос - "зачем это нужно"?
для относительно простого случая (мало физики, не очень сложные игровые механики итд), процедурная генерация привносит дополнительный игровой опыт, и это хорошо. однако, когда нужно сделать что-нибудь посложнее, придется, сильно ограничивать "процедуру", иначе становится тяжело тестировать всё это дело и отлавливать неочевидные ошибки.
в диабло 1 не видел вылетов вроде а там тоже самое, персональная генерация, в некоторых играх будет нужна персоналка, потомучто так будет поинтереснее, всё самому посложнее делать, проще сгенерировать, там по-сути всё упирается в мерж кусков и конкретизация местности локаций - тоесть то что на поверхности(если быть конкретным на локальном максимуме(этот момент правда зависит от подхода), в некоторых случаях если игрок очень глубоко другие можно не рисовать вот и дебаг), так а физика навесная, её два вида, скорее всего в 3д будет хейтмапа, а коннект-контакт типо импульс будет та которую выберете, соотв по максимуму бежим, швыряем в дерево(или последовательность(тоесть в открытом мире респавн это списки ) ААББ на локации ограниченные действием игрока - дальность, кароче игрок в 2 кубах эти 2 куба определяют тех кто рядом))(так хочу сделать идея пока в зародыше))
в диабло1 не было сложных механик.
сложных не было, но там была проба пера на будущее по генерации и вот этим вещам( в их другой игре нет генерации на сколько знаю там всё предподготовлено и загружается по сути мержится ), сам создатель вроде давал интервью и говорил вроде что там генерация уровней персональная вроде на 1 на запуске
но например уже тогда был бильярд и игра где шарик катиться если помните
это всё не так важно.
гораздо более существенным моментом остается невозможность повсеместного применения, просто, потому, что, чем больше параметров, тем сложнее это всё протестировать, для гарантии относительной безотказности. но, не генератора мира (или ландшафта) а адекватного взаимодействия персонажей, как со всем этим, так и между собой.
понимаю мы про юнити или анриал, в сухом остатке грузим солвер ААББ грубо говоря забиваем юнит тест углами и ускорением(параметрами), ограничиваем статичными ААББ и запускаем такой тест проверить поидее только визуально
второй способ ввести тогл запуска начала теста внутри игры кликнув по НПЦ
на анриалах и юнити не знаю как это выглядит, на сурсах поидее можно изголиться
так безотказность это солвер, параметры например я еще не знаком с дискретностью ее уже надо знать(что-то читал о ней, но представляю себе пока навесной ААББ), соотв проверка будет +- в тех условиях как при игре, ну тоесть грузим пещеру там например, грузим пяток юнитов, и так далее и тестим наверно
тут еще играет роль какой контакт, аля как в моровинде или по выбору
тот который в моровинде похитрее, ну а по выбору флип и проверка и всё готово
ну набор параметров, которые определены в игре являются core типо начальные параметры по взаимодействию в мире, там как правило если отделить террейн от этих параметров то всё ложится логично вроде, в каждой сцене свой bvh того что на поверхности, и всё в логике какую придумал игродел типо, но бвх хитрый тоже наверно, вот я пока представляю себе ААББ, вот пытаюсь дойти до этого, и надо бы дойти до многоуровнегого меша, до меша всё руки не дойдут, а по ААББ вот в рутине буду тестить наверно скоро)
А вы не используете wave func collapse? Можно добиться большей неоднородности шумов, и добавить ручных вариантов.
Прикольная статья! Мне понравилась)
Хотел бы попросить вас сделать ссылку на мою статью "Генерация 2D мира с помощью клеточного автомата на Python", на моменте где вы показываете Пример алгоритма «Жизни». Думаю, что это будет честно.
Процедурная генерация миров: как создать уникальные локации для каждого игрока