Menu
Генератор ландшафта для платформера

Нажимайте кнопку Обновить, чтобы создать новый ландшафт.

Пример генератора мира в 2D играх

Всем привет, ребята!
Недавно я копался в одной группе и стал замечать активность вопросов: «Как сделать генерацию мира?»
Что ж, пришло время ответить на этот вопрос :)

Создание блоков ландшафта

Сначала нам нужно создать блоки для генерации нашего ландшафта:

  1. Объект, который будет определять позицию для нового блока generator-mira-1. Это наша начальная точка генерации блоков.
  2. Трава generator-mira-2
  3. Блок земли с травой generator-mira-3
  4. Земля generator-mira-4
  5. Камень generator-mira-5

Ещё добавляем Счётчик Counter на Frame.  Он будет генерировать случайное число, что бы рандомно создавать землю и камень.

Все объекты должны быть расположены за пределом экрана.

Так же нам понадобится сетка размером 32×32:

generator-mira-6

Создание генерации мира

Добавим новую переменную для объекта генерации. Назовём её Начальный_Y.

Теперь переходим в редактор событий и создаем новое событие:
generator-mira-7

Затем запускаем повторение «АБВ».
generator-mira-8

Когда выполняется цикл, объект смены генерации просто перемещается вниз на 32 пикселя.
gm-1

Эти события нужны для того, чтобы начальная точка Объект Генерации не стоял на одном месте.
gm-2

Когда происходит повторение, то каждый раз счётчик устанавливает случайное число от 0 до 8.
generator-mira-9

Если счётчик при очередном повторении не равен нулю, то создаётся блок земли в позиции блока генерации.
generator-mira-10

Если счётчик равен нулю, то создаётся блок камня в позиции блока генерации.
generator-mira-11

Когда блок генерации доходит до самого низа, то:

  • перемещаем объект генерации на следующий столбец (по оси X) в случайную координату по Y
  • перезаписываем переменную Начальный_Y
  • создаем траву (наверху нового столбца)

gm-4

На этом всё, дорогие друзья! :)
Пожалуйста, оставь комментарий и нажми на generator-mira-15, если тебе понравилось :)
Всем удачи в разработке!

 

Скачать исходный файл

Всем привет, ребята! Недавно я копался в одной группе и стал замечать активность вопросов: "Как сделать генерацию мира?" Что ж, пришло время ответить на этот вопрос :) Создание блоков ландшафта Сначала нам нужно создать блоки для генерации нашего ландшафта: Объект, который будет определять позицию для нового блока . Это наша начальная точка генерации блоков. Трава Блок земли с травой Земля  Камень Ещё добавляем Счётчик на Frame.  Он будет генерировать случайное число, что бы рандомно создавать землю и камень. Все объекты должны быть расположены за пределом экрана. Так же нам понадобится сетка размером 32x32: Создание генерации мира Добавим новую переменную для объекта генерации.…

8

Рейтинг: 5 ( 1 голосов)

    Рейтинг: 4,69 ( голосов - 16 )
Загрузка...
Комментариев: 15
  1. MiKITA:

    спасибо конечно за генератор мира, но как его сохранять? Если хочешь сделать пиксельную выживаловку, то как сделать так, чтобы все постройки и разрушения игрока сохранялись?

  2. ???:

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

  3. СТАС:

    Простите может это не по теме но как сделать искуственный интелект для врага в платформере. Чтобы он мог свободно двигаться по миру. Я уже повсюду искал последняя надежда тут

  4. АПВАП:

    иСХОДНИК НЕ РАБОТАЕТ

  5. Zeke89:

    Что сие означает?
    «Эти события нужны для того, чтобы начальная точка Объект Генерации не стоял на одном месте.»
    При отключение двух этих событий, я не вижу изменений в программе.

  6. ОПВАРАКН:

    Ничерта не понятно :?:

  7. Павел Бойко:

    Самое интересное, что это не записывается например в array. Мир на время, пока не закроешь приложение

    • GQ:

      Так мир и не должен сохраняться. Весь смысл в том, что уровень всегда разный) И кстати Я дополнил статью про массив информацией о сохранении и загрузки объектов при помощи массива.

  8. Олег:

    Нифига не понял :-|

  9. VanHuo:

    Можно по-подробнее о циклах?

    • Кашников Андрей:

      Цикл (Loop) — Это действие, которое, при его запуске, начинает работать через определённый отрезок времени в миллесекундах, который вы указываете.

  10. Андрюшка:

    Красавчик 8-O

  11. Аноним:

    Красавцы

Добавить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Вступай в группу!