Комментарии 10
Я сейчас крайне редко получаю ошибки. Например, чтобы сделать скриншот для статьи мне пришлось уровней 25-30 сгенерировать. Поэтому, тайлы добавляем в порядке необходимости для визуала или геймплея. Т.е. стараемся в золотую середину: рисовать тайлов столько, чтобы процент ошибок не раздражал. Как-то расширять систему WFC дополнительными проверками, банально нет времени. Над игрой работает всего 2 человека, и более приоритетных задач больше чем надо.
У нас каждый тайл - это обычный актор. Если глянуть второе видео, видно что помимо кнопок генерации карты, есть еще кнопки генерации декора. Это команда акторам как-то себя "украсить": добавить пару камушков сверху, сменить материал и даже основной меш. Важно чтобы грани совпадали. Т.е. можно считать, что происходит дополнительное изменение тайлов, но уже после формирования уровня. WFC по сути задает только форму уровня.
А про блэклисты я не понял... У каждого тайла это просто массив пар: тайл и сторона. Причем если сторону не указать, то считается, что этот тайл нигде рядом ставить нельзя. Разрешены ссылки и на себя (тогда два одинаковых тайла рядом не поставить). Заполняется просто: видим "некрасивую" ситуацию, добавляем в черный список.
Возможно вам было бы полезно совместить ваш метод с этим: https://habr.com/ru/post/481218/, чтобы убрать тот небольшой процент неудачной генерации. Что-то вроде, сначала делаете комнаты, потом заполняете их случайными тайлами и т.д.
У нас все проще: уровни очень маленькие примерно 12х12х3 тайла. Т.е. я бы сказал одна комната и есть. А для огромных карт, алгоритм почти всегда находит подходящий вариант. Я просто что-то больше 20х20 редко генерирую и не помню ситуаций когда вываливалось бы с ошибкой.
Выше в комментарии правильный подход был предложен: для проблемы ошибок надо полноту проверять. Ну и наполнять набор тайлов.
"... Этот продукт не поддерживает ваш язык. Пожалуйста, перед покупкой ознакомьтесь со списком поддерживаемых языков..." Печально...
Русский язык естественно будет. Если его сейчас добавлять в список, то стим насыпет дополнительных проблем с оформлением странички (нужно же поддерживать все языки, а это доп. тексты, арт и т.п.). Сейчас нет времени, а ближе к релизу займемся локализацией.
Можно еще в ссылки добавить по желанию.
https://www.youtube.com/watch?v=-5_FIqTDuzc&list=PLXNFA1EysfYny9oR45bFI7edFi_A2-8b8
Благо WFC в Гудини уже пару лет как завезли в Labs.
И если не надо динамически генерить,есть смысл там сразу всё делать,благо помимо куча готовых инструментов,для процедурной вариативности наполнения уровня и т.д.
+Houdini Engine есть для UE и Unity если надо потом потвиковать
Немного про особенности реализации Wave Function Collapse в нашей игре