Bricksets/ru

From Open Surge Wiki
Jump to: navigation, search

Блоки

В Open Surge Engine каждый уровень построен с использованием множества небольших кусков, называемых «блоками» ("brick"). Список всех блоков, используемых в уровне, называется Brickset.

Примечание переводчика: не могу найти аналог слову "brickset" в русском языке. Поскольку оно является специфическим и ключевым, было решено оставить его без перевода.

S056.png

Brickset

Пример brickset

Brickset включает два компонента:

1) Изображение

Собственно сам рисунок в формате PNG, в котором содержатся рисунки блоков (мы будем их также называть "кирпичами"). Это изображение может быть создано любым способом и расположение блоков относительно друг к другу на этом изображении может быть любым. Одним нравится когда блоки располагаются на расстоянии, другие наоборот любят склеивать их все вместе, чтобы сэкономить место (имеется в виду не дисковое пространство, а пространство изображения). Оба эти метода имеют положительные эффекты и недостатки. Если вы вручную прописываете блоки в текстовом редакторе, расстояние между кирпичами делает процесс определения более удобным для человека. С другой стороны, склеивая все кирпичи вместе и заставляя их находится в сетке 16х16, можно сразу переходить к работе в Rapid Brickset Editor (сокр. RBE), это такой упрощённый метод создания Brickset-а, о нем будет описано позже.

Кроме того, настоятельно рекомендуется (но не является обязательным), чтобы размер вашего кирпича был кратным 8. (16 пикс., 32, 64 и т.д.). Это значительно облегчит работу в редакторе уровня, поскольку редактор содержит встроенную сетку 8 x 8. Сетка позволит вам помещать блоки максимально ровно и сэкономить много времени и сил в процессе создания уровней.</blockquote>

2) Сценарий определения

Изображение - это то, где прорисованы картинки кирпичей, а сценарий определения - это то, как они попадают в игру.

Программа ищет файл .brk со ссылками ссылок на блоки (эти файлы находятся в папке themes/), считывает оттуда их параметры и свойства и загружает уровень со всеми блоками.

Этот скрипт содержит ссылки на источник(и) изображения, размеры блоков, какую часть изображения использовать как «лицо», угол (для физики), последовательность анимации (если есть) и свойство - будет ли кирпич разрушаться под ногами, быть "облаком" (позже будет дано пояснение), быть декорацией и т.д.

Когда вы сделали изображение с блоками, вы можете сделать две вещи:

1) Открыть и отредактировать файл .brk вручную. Обычно вручную работают если используется очень мало блоков, если вам нужно добавить или удалить блоки из уже существующего набора, либо если вы добавляете блоки, которые не распознались программой RBE.

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

СОВЕТ: Если вы создадите что-то с вашими блоками на пустом уровне и сохраните его, вы сможете открыть уровень в текстовом редакторе и скопировать конструкцию в групповой скрипт, сделав тем самым новую группу кирпичей. Делать это надо в левом верхнем углу карты, начиная с x = 0, y = 0. Теперь рассмотрим оба метода создания Brickset.

Свойства блоков

Обзор

Каждый блок в игре прописан в файле brickset-а и выглядит таким образом:

brick 0
{
   type                OBSTACLE
   behavior            DEFAULT
   angle               0
   zindex              0.5        // необязательный параметр

   sprite
   {
       source_file     images/desert1.png
       source_rect     70 10 128 128
       frame_size      128 128

       animation
       {
           repeat      TRUE
           fps         8
           data        0
       }
   }
}

Каждый блок начинается со слова brick и следующим за ним номером number. Рекомендуется прописывать блоки последовательно, но вы можете указывать номера в любом порядке. Не допускайте двух разных блоков с одним номером!

Спрайт

Раздел sprite в блоке аналогичен спрайтам. Если кратко: source_file - источник файла, source_rect - положение блока по оси X и Y (левый верхний угол), frame_size - размер одного кадра (фрейма).

zindex

Этот параметр определяет порядок расположения блоков на уровне. Проще говоря, это слои. Блоки с большим значением zindex будут показаны поверх блоков с меньшим значением zindex. Значение варьируется в интервале от 0,0 до 1,0. По умолчанию равно 0,5. Параметр необязательный, то есть его можно не указывать.

Type

Параметр "тип" (type) определяет сценарий при столкновении игрока с блоком.

- OBSTACLE означает твердый непроходимый кирпич, т.е. препятствие (пол, стены и тд).

Блок-препятствие

Вы не можете пройти сквозь него

- PASSABLE означает проходимый кирпич, т.е. декорация.

Ветки имеют значение PASSABLE

- CLOUD - "облако". Такой блок будет проходимым по направлению снизу-вверх и с одного бока в другой, но будет препятствием при прохождении сверху-вниз. Полезно для создания движущихся платформа.

Камень как пример "облака"

Заяц стоит на нём

Behavior

Параметр "поведение" (behavior) определяет тип движения блока, а также то, что будет делать блок при столкновении с игроком, значение параметра отлично от default.

- DEFAULT - блок стоит на месте без какого-либо специфичного поведения.

// обычный блок имеет параметры:
type OBSTACLE
behavior DEFAULT

Внимание: проходимые блоки (PASSABLE) должны иметь поведение DEFAULT.

- FALL - блок обрушится при наступлении на него. Пример:

// Синтаксис: behavior FALL ЧИСЛО_ГОРИЗ_ОСКОЛКОВ ЧИСЛО_ВЕРТИК_ОСКОЛКОВ
// когда игрок встанет на платформу, она рухнет с образованием 5 горизонтальных осколков (1 по вертикале означает что блок не будет разделён по вертикале)
type OBSTACLE
behavior FALL 5 1
Игрок наступил на блок...

и блок развалился

- BREAKABLE - блок будет разрушен игроком во время катания его (в виде шара или spindash). Пример:

// Синтаксис: behavior BREAKABLE ЧИСЛО_ГОРИЗ_ОСКОЛКОВ ЧИСЛО_ВЕРТИК_ОСКОЛКОВ
// блок будет разрушен с образованием 25 осколков (5 х 5)
type OBSTACLE
behavior BREAKABLE 5 5
Breakable-блок

25 осколков

- CIRCULAR - движение платформы. Пример:

// Синтаксис: behavior CIRCULAR x-dist y-dist x-speed y-speed initial-phase
// x-dist, y-dist - это амплитуда от центра до края. Подразумевает насколько широким или высоким должно быть движение блока.
// x-speed, y-speed - относительная скорость. Указывает сколько полных циклов в секунду должен сделать блок. Попробуйте установить оба значения 1, затем поменять их. Чем больше значение, тем быстрее будет движение.
// initial-phase - начальная позиция. Это угол со значением между 0 и 359 включительно. 

// в следующем примере блок будет двигаться горизонтально: траектория имеет амплитуду 100 пикселей (слева и справа, то есть ширина 200 пикселей), а скорость - 1 цикл в секунду.
type OBSTACLE
behavior CIRCULAR 100 0 1 1 0
S777.png

Обратите внимание - блок подвинулся вправо

Angle

Праметр "угол" (angle) определяет что это за часть - пол (0º), правая стена (90º), потолок (180º) или левая стена (270º). Значения угла, находящиеся между перечисленными - это склоны.

Как вычислить угол?

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

Вычисление внучную

Предположим, что у вас есть такой уклон:

Brickangle1.png

Чтобы вычислить угол, вспомните математику. И не говорите что синусы и косинусы никому в жизни не пригодились!

Brickangle2.png

Как видите, угол измеряется от положительной оси х. Простой пол имеет 0 градусов. Простые стены / блоки (на которых игрок не должен забегать и бежать вертикально) также должны иметь угол 0 градусов.

Затем вы записываете следующий код в файл .brk:

// Пандус
brick 51
{
    type                OBSTACLE
    behavior            DEFAULT
    angle               45
    
    sprite
    {
        source_file     images/desert1.png
        source_rect     555 60 24 24
        frame_size      24 24
        
        animation
        {
            repeat      TRUE
            fps         8
            data        0
        }
    }
}

Пример Brickset-а (от Celdecea):

Brickset


Упрощённое вычисление

Вместо того, чтобы вручную писать кирпичи, можно использовать автоматизированные инструменты для этой цели. Вы можете нарисовать свой блок поверх сетки 16x16, отображаемой ниже, а затем использовать Rapid Brickset Editor для создания сценария .brk. Программа сделает всю математику за вас.

Опыт показывает, что наилучший подход - это использование Rapid Brickset Editor для записи большей части кирпичей автоматически, с последующей ручной обработкой больших блоков (размером более 16x16). Для них стоит посмотреть Brickset Editor Tool.

Grid16x16.png