Найти в Дзене

Генерация ландшафта с видом сверху на Construct 2

Оглавление

Генерация ландшафта привлекла меня тем, что это ведь хороший способ оптимизировать игру, и при этом уровни каждый раз будут выглядеть иначе.

Здесь двойная польза - и не подвисает особо, и игроку интересно каждый раз при перезапуске видеть разное поле.

Бонус: в конце статьи пример бесконечного ландшафта

В итоге, 2D генерация ландшафта, в самом простом варианте, будет выглядеть так:

Все зависит от количества кадров, которые будут помещены в Sprite.

Графика

Для выполнения этого урока шаблоны не нужны. Если позже захочется как-то разнообразить игру, вы можете нарисовать что-нибудь с помощью графических редакторов или в самом Construct 2.

Создаю новый проект, в размер холста и экрана ставлю 640, 384. Подобный выбор размера нужен для того, чтобы все клеточки, равные 32х32, поместились на экран. Но, в принципе, я могла взять любые размеры, которые делятся на 32.

Размер холста и экрана: создаю новый проект --> нажимаю на холст --> в левой основной панели напротив Layout Size ставлю 640, 384 --> в той же панели ниже нажимаю View --> напротив Window Size пишу 640, 384

Размер холста и экрана
Размер холста и экрана

Теперь нужно загрузить объект, внутри которого будет меняться анимация.

Добавление объекта: правой кнопкой мыши нажимаю на холст --> Insert new object --> Sprite --> Insert --> нажимаю на холст, чтобы открылся редактор изображений --> нажимаю в верхней части редактора на Resize --> ставлю размер 32х32 --> OK --> в левой части редактора выбираю Fill --> набираю цвет в отдельном окошке Color Palette --> закрашиваю квадрат --> в отдельном окошке Animation frames нажимаю правой клавишей мыши на закрашенный кадр и выбираю Duplicate --> выбираю более темный цвет и закрашиваю им квадрат --> таким образом получаю шесть кадров (от 0 до 5) --> закрываю редактор без сохранения

Добавление объекта
Добавление объекта

Так же я ставлю анимацию на 0, чтобы при запуске все кадры не перескакивали сразу в последний.

Изменение скорости анимации: открываю редактор изображений --> в отдельном окошке Animations нажимаю на Default --> в левой основной панели напротив Speed ставлю 0 --> закрываю редактор без сохранения

Изменение скорости анимации
Изменение скорости анимации

Если не поставить скорость анимации на 0, то результат будет таким:

Результат без настройки скорости анимации
Результат без настройки скорости анимации

Теперь нужно расставить добавленный объект копированием по всему холсту. Чтобы не промахиваться и не расставлять по каждому пикселю, я ставлю сетку размером 16х16.

Размер сетки 16х16 обоснован тем, что центр моего квадрата поставлен именно на эту позицию. Если я поставлю сетке размер 32х32, то все будет расставляться с промежутками.

После этого я расставляю объекты по карте. Копировать их можно и через правую кнопку мыши, а потом вставлять, но быстрее это сделать горячими клавишами*. Я постоянно использую их.

Заметка*: Ctrl + C обозначает "копировать", а Ctrl + V обозначает "вставить". Для приближения и отдаления экрана я использую Ctrl и колесико мыши, а для возвращения на шаг назад Ctrl + Z.

Сетка и копирование объектов: в верхней основной панели нажимаю View и закрепляю панель с помощью стрелок вверху справа --> в Snap to grid и Show grid ставлю галочки --> в ячейках области Grid size ставлю 16 и 16 --> расставляю квадраты на холсте с помощью горячих клавиш

Сетка и копирование объектов
Сетка и копирование объектов

Механика

Механика в этом уроке состоит из всего лишь одного события и одного действия.

Перехожу в Event sheet и прописываю случайность кадров.

(событие) Изменение кадров: перехожу во вкладку вверху под названием Event sheet --> нажимаю правой клавишей мыши на пространство --> Add event --> System --> Next --> On start of layout (пролистываю вниз) --> Done

(действие) Изменение кадров: напротив события нажимаю Add action --> зеленый квадрат --> Next --> Set frame --> Next --> в отдельном окошке Object with expressions выбираю System двойным нажатием --> листаю вниз и дважды нажимаю на random --> в появившейся надпись random(Range) вместо Range вписываю 6, получается 'random(6)' --> Done

Изменение кадров
Изменение кадров

Запуск проекта

Теперь можно запустить проект и проверить его работоспособность.

Воспроизведение проекта
Воспроизведение проекта

Все работает. Размер квадратов может быть больше или меньше, как может быть любой и графика.

Например, здесь я добавила несколько голубых квадратов:

-9

Бонус

А можно сделать бесконечную генерацию ландшафта с помощью квадрата 16х16:

Бонус: бесконечная генерация ландшафта
Бонус: бесконечная генерация ландшафта

На моем канале вы можете найти другие статьи, например, о том, как сделать гибкую систему жизней для босса.