---
title: "🏁 Тайловый (повторяющийся) фон в GameMaker"
date: 2022-12-18T22:00:55+03:00
draft: false
tags: [gamemaker, gamedev, tutorial]
---

В этом руководстве я на примере покажу, как в сцене GameMaker
сделать [тайловый фон](https://ru.wikipedia.org/wiki/Тайловая_графика).

Пример того, как это будет выглядеть.

![](/content/images/2022/gm_tiled_example.gif)

## Шаг первый — Сцена

Я создал для примера сцену размером 320x192 пикселя.
Размеры сцены кратный 16 пикселям.

Включил вьюпорты [**Enable Viewports**].  
В настройках камеры [**Camera Properties**] установил **Width** — 320px, **Height** — 192px.  
В настройках вьюпорта [**Viewport Properties**] установил **Width** — 960px, **Height** — 576px.

Эти размеры соответсвуют размеру сцены умноженные на 3 (**x3**).

## Шаг второй — Спрайт

Я нарисовал спрайт размером 32x32 пикселя, который состоит из четырёх квадратов,
размером 16x16 пикселей и назвал его `s_tile_bg`.

![](/content/images/2022/gm_tiled_sprite_window.png)

Спрайт: ![](/content/images/2022/s_tile_bg.png)

## Шаг третий — Объект

Далле я создал объект `o_tiled_bg` с двумя событиями `Draw` и `Step`.

![](/content/images/2022/gm_tiled_object.png)

В событии `Draw` рисуем на сцене спрайт используя функцию `draw_sprite_tiled()`.

**draw_sprite_tiled(sprite, subimg, x, y)** — функция принимает
в качестве первого аргумента имя спрайта и затем многократно
чередует его по всей комнате, начиная с указанных координат.

Код события `Draw`:

```cpp
/// @description Draw tile

draw_sprite_tiled(s_tile_bg, 0, x, y);
```

Как видишь, в качестве первого аргумента я установил ранее нарисованный спрайт `s_tile_bg`.

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

Третий и четвёртый аргументы, это координаты на которых мы отрисовываем спрайт.

Для создания эффекта движения спрайта, эти значения должны быть динамические.

В собитии `Step` я просто сделал увеличение значений положения объекта.

```cpp
/// @description Move tile

x += 1;
y += 1;
```

## Готово

Запускаем сцену и наслаждаемся результатом.

Готовый `*.yyz` проект можно скачать по этой
[ссылке](/content/files/tiled_bg.yyz).
