Генерация уровня поклеточно
|
|
lentinant | Дата: Понедельник, 27 Января 2014, 02:49 | Сообщение # 1 |
ленивый программист
Сейчас нет на сайте
| Я собираюсь создавать более продвинутую версию Block Temple, и первым шагом к этому является переход от квадратных уровней к генерируемым.
На этот момент я использую банальную рекурсию - комната случайным образом создает соседние комнаты, те, в свою очередь, случайным образом создают комнаты в пустых соседних клетках, и так до определенного количества комнат. Однако этот метод довольно часто создает "кишечные" уровни - такие состоят, в основном, с коридора единичной толщины, и это, ясное дело, меня не устраивает.
Знает ли кто хорошие методы генерации уровней, подходящие для уровней, состоящих из клеток?
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
Tiendil | Дата: Понедельник, 27 Января 2014, 11:02 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Цитата lentinant ( ) и первым шагом к этому является переход от квадратных уровней к генерируемым. От красного к плоскому?
Вот хороший алгоритм:
1. выбираем желаемое количество комнат — N; 2. на карте ставим N случайных точек так, чтобы они не были слишком близко друг к другу; 3. считаем, что точка — это квадрат со стороной 1; 4. итерационно начинаем увеличивать фигуры, выбирая одну из сторон и двигя её (увеличивая площадь фигуры); 5. там, где они столкнулись, замораживаем стенки; 6. когда карта заполнена, на стыках ставим двери.
P.S. в Block Temple не играл, так что алгоритм может и не подойти.
Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Текущий проект: the-tale.org - indie mmozpg
|
|
| |
Ordan | Дата: Четверг, 30 Января 2014, 09:59 | Сообщение # 3 |
Главный зомби
Сейчас нет на сайте
| В игре "Побег из Эдема" я сделал чисто рандомную систему) К примеру клетка, при передвижении в нее, рандомом определяются все её стороны к примеру рандом из 10 1-4 будет стена 5-8 ничего (коридор) 9- дверь 10-какая нить фигня на стене
Получается очень забавный лабиринт) Запилить эту систему на твою и будет класс)
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
dddmax | Дата: Четверг, 30 Января 2014, 11:29 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Вот как делал я (код на си под DGLE2): generator Принцип не очень сложный, Берешь карту н на м, раскидываешь по ней прямоугольные комнаты, потом соединяешь их коридорами. Думаю разобраться не сложно.
ПС: НА абсолютную истину не претендую
Сообщение отредактировал dddmax - Четверг, 30 Января 2014, 11:31 |
|
| |
Ordan | Дата: Четверг, 30 Января 2014, 15:38 | Сообщение # 5 |
Главный зомби
Сейчас нет на сайте
| dddmax, это не то, генерация должна быть автоматическая и рандомная
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
dddmax | Дата: Четверг, 30 Января 2014, 16:27 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Ordan Цитата раскидываешь по ней прямоугольные комнаты Здесь и имеется в виду рандомная расстановка, смотри исходник.
Сообщение отредактировал dddmax - Четверг, 30 Января 2014, 16:32 |
|
| |
Ordan | Дата: Пятница, 31 Января 2014, 02:29 | Сообщение # 7 |
Главный зомби
Сейчас нет на сайте
| dddmax, ему нужно чтоб число комнат было не фиксированное, размеры и формы тоже.
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
dddmax | Дата: Пятница, 31 Января 2014, 06:34 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Мне сматериться или как? Посмотри уже исходник, там все это есть Все можно настроить под себя, размеры карты, размеры и кол-во комнат. Единственное ограничение то что комнаты прямоугольны. Если код слегка доработать можно добавить и генерацию наполнения комнат. И думаю нет повода в дальнейшей дискуссии. Я поделился, использовать или нет решать вам.
Сообщение отредактировал dddmax - Пятница, 31 Января 2014, 06:39 |
|
| |