Страница 1 из 1

Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 09:18
Колян
Подскажите как сделать генератор 2D уровня по типу Lode Runner, так чтоб соблюдалась определённая логика? Например, чтоб вода не соприкасалась с лавой, чтоб две лестницы не появлялись рядом, чтоб не было не досягаемых мест. Суть игры в том, что главный герой появляется на первом этаже, и бежит вверх по сгенерированным этажам, на крыше конец уровня.
Мне бы понять как вообще делаются подобные уровни, двумерным массивом или как-то ещё? Если из отдельных блоков-префабов, то не будет ли глючить, если на уровне будет 200 блоков каждый с отдельным коллайдером? Если тут объяснять влом, то буду рад, если скините ссылки на какие-нить уроки или напишите что именно нужно погуглить. Спасибо.
Изображение

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 09:27
Cr0c
Типовое решение нетривиальной задачи? ))
Сначала напиши "правила идеального уровня"
Потом проверь на взаимоисключающие условия
Потом проверь на условия с шансом выполнения менее 2%
Ну и напоследок вручную прикинь построение уровня от каждой реперной точки (спавн героя, выход с уровня, etc)
Вот теперь тебе не меньше половины станет понятно.

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 09:41
Колян
Cr0c писал(а):Типовое решение нетривиальной задачи? ))
Сначала напиши "правила идеального уровня"
Потом проверь на взаимоисключающие условия
Потом проверь на условия с шансом выполнения менее 2%
Ну и напоследок вручную прикинь построение уровня от каждой реперной точки (спавн героя, выход с уровня, etc)
Вот теперь тебе не меньше половины станет понятно.


А как это сделать? Что для этого нужно?
Вручную я могу на бумаге в клеточку набросать уровень.
Но как это в программном коде сделать?
Вот как проверку сделать, чтоб вода с лавой не соприкасалась?
От каждого объекта в соседние объекты лучи пускать, проверять чтоб не врезались в ненужный объект?

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 10:05
Cr0c
Ну блин, формализуй условия генерации.
Тебе никакие лучи тут не нужны, генеришь массив, потом по нему строишь уровень.

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 11:36
Колян
Cr0c писал(а):Ну блин, формализуй условия генерации.
Тебе никакие лучи тут не нужны, генеришь массив, потом по нему строишь уровень.

Мне бы ссылку на подобный пример. Или на более подробные описания.

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 12:17
Cr0c
1. Уровень состоит из [3,6] этажей
2. Любой этаж имеет [1,3] соединений с другим
3. (Чото-там-с-водой/лавой-на-каждом-уровне)

Re: Генерация 2D уровня.

СообщениеДобавлено: 20 ноя 2017, 16:55
Yaro
Колян писал(а):Подскажите как сделать генератор 2D уровня по типу Lode Runner, так чтоб соблюдалась определённая логика?

Методы описания логики...
Синтаксис:
Используется csharp
for (int x = 0; x < MapSize.x; x++) {
        for (int y = 0; y < MapSize.y; y++) {
                if ( ) {
                       
                } else if ( ) {
                       
                } else {

                }
        }
}

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

Re: Генерация 2D уровня.

СообщениеДобавлено: 21 ноя 2017, 06:10
ru66ssb
как вариант - если хорошее знание английского - глянуть сюда . у меня с англ не очень. но худо-бедно можно понять что происходит генерация уровня по шаблону с рандомным размещением блоков

Re: Генерация 2D уровня.

СообщениеДобавлено: 21 ноя 2017, 07:40
samana
ru66ssb писал(а):генерация уровня по шаблону с рандомным размещением блоков

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

Re: Генерация 2D уровня.

СообщениеДобавлено: 21 ноя 2017, 12:10
Колян
Вот что-то подобное хочу реализовать процедурной генерацией.
Изображение

Re: Генерация 2D уровня.

СообщениеДобавлено: 21 ноя 2017, 13:00
Tolking
Руками собирай уровни пока не поймешь как можно автоматизировать процесс...