Игровой дизайн, гейм дизайн (game design)
GameDev.ru / Игровой Дизайн / Форум / Генерация уровня "шахтёрским способом". Идеи по геймплею приветствуются.

Генерация уровня "шахтёрским способом". Идеи по геймплею приветствуются.

Pulsar541Новичокwww11 июня 20183:02#0
Предлагаю вашему вниманию  метод генерации случайного уровня следующим способом
(при этом условимся .что уровень будет состоять из блоков-кубов):
1. Инициализируем трехмерный массив  mas [I][J][K]
2. Каждая ячейка - это число, где 0 -это отсутствие блока, а 1 - присутствие. 
Заполняем весь массив  mas[I][J][K]   единицами.
3. Объявляем структуру Miner{ int i,j,k; } и переменную Miner digger.
4. Случайно выбираем стартовую ячейку  ,в которой появляется игрок.  
   Т.е. 
digger.i = random(0,I);    
digger.j = random(0,J);    
digger.k = random(0,K);  
5*. Присваиваем тому или иному полю этой структуры дополнительное случайной приращение  на +1 или -1. 
Нарпример digger.j += (random(0,100)>50?(1):(-1))
Причем не обязательно  каждое поле сразу, а  используя свои дополнительные условия и  булевые флаги.   
6. Присваиваем  mas[ digger.i ][ digger.j ][  digger.k]  = 0
7. Повторяем пункт 5 до нужного количества "вырезанных" блоков .

*-пункт (5)  можно сколь угодно усложнять - например вводить дополнительные под-циклы
 для создания больших "залов"  или побочных ответвлений от "основого пути" нашего "шахтера")

Демонстрационный пример: Скачать newdoom

Название: newdoom (пока рабочее название)

Управление: (работает только в английской раскладке):

A/W/S/D - движение
Tab - режим 3d карты
ЛКМ - стрелять
F - фонарик (пригодится когда темно, т.к. в "игре" реализована динамическая смена дня и ночи)
Пробел - прыгать
C - режим от третьего лица
F1 - сгенерировать новую карту

Цель игры: отсутствует. Это только концепт-продукт.

Скачать newdoom

Изображение

Скачать newdoom

Правка: 17 июня 2018 13:12

/ Форум / Игровой Дизайн / Общее

2001—2018 © GameDev.ru — Разработка игр