Skip to main content

characters

Тип: список

Определяет статичные спрайты персонажей для команды show.

Внутри нода прописываются ноды с параметрами статичных (неанимированных) спрайтов персонажей:

# resources.yaml
---
  characters:
    dv:
      # ... параметры
    un:
      # ... параметры
    sl:
      # ... параметры
    us:
      # ... параметры

Каждый спрайтовый нод может содержать следующие параметры:

  • poses
  • positions
  • sizes
  • shortnames
  • default

poses

Тип: список

Определяет позы спрайта.
Под позами понимаются различные вариации спрайта:

mt_poses.png

3 различных позы на примере спрайта из Бесконечного Лета

Каждая поза может содержать несколько параметров: 

  • parts — обязательный параметр
  • canvasSize
  • positions
  • sizes
  • spritecolors
# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
           # ... параметры
          canvasSize: 900 1080
          positions:
           # ... параметры
          sizes:
           # ... параметры
          spritecolors:
           # ... параметры

parts

Тип: список

Определяет части, из которых собирается спрайт. 

Части могут быть двух типов:

  • постоянные
  • непостоянные

Тип ассетов у частей — texture.

Постоянные части

Постоянные части видны всегда и никогда не меняются (например, тело персонажа).

Определяются следующим образом:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
            body: sprites/mt/mt_1_body.png # тело персонажа, которое должно отображаться всегда
            
          # ... остальные параметры

На примере выше мы определили часть body — тело спрайта, на которое будут накладываться остальные элементы.

Непостоянные части

Непостоянные — соответственно, те части, которые могут меняться. Это эмоции, одежда, различные аксессуары и прочее. Такие части объединяются в группы, которые позволяют менять активную (отображаемую) часть из сценария.

Непостоянные части определяются так же, как и постоянные, только внутри отдельного нода, начинающегося со знака ~ — такой нод называется группой:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
            body: sprites/mt/mt_1_body.png # это постоянная часть, которую мы определили ранее
            ~uniform: # группа uniform
              pioneer: sprites/mt/mt_1_pioneer.png # пионерская форма
              dress: sprites/mt/mt_1_dress.png # платье
              swimsuit: sprites/mt/mt_1_swim.png # купальник
              
          # ... остальные параметры

У частей спрайта в группе также может указываться параметр position, синтаксис аналогичен.

На примере выше мы создали группу uniform с различными вариациями одежды, которые можно использовать в игре. Однако мы не указали, какая часть должна отображаться по умолчанию — в случае, если мы явно не обозначили это в сценарии. 

Чтобы сделать какую-либо часть в группе частью, отображаемой по умолчанию, можно воспользоваться параметром default:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
            body: sprites/mt/mt_1_body.png # это постоянная часть, которую мы определили ранее
            ~uniform: # группа uniform
              default: pioneer # по умолчанию при вызове спрайта будет выводиться пионерская форма
              parts:
                pioneer: sprites/mt/mt_1_pioneer.png # пионерская форма
                dress: sprites/mt/mt_1_dress.png # платье
                swimsuit: sprites/mt/mt_1_swim.png # купальник                
              
          # ... остальные параметры

Как видно из примера, ID части, выводимой по умолчанию, прописывается в ноде default, а сами части — в parts.

Если нод default не указан, то по умолчанию ни одна часть не будет выводиться.

Позиционирование частей

Каждой части спрайта можно задать положение относительно канваса:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
            body: 
              asset: sprites/mt/mt_1_body.png
              position: 0 100
              
          # ... остальные параметры

На примере выше изображение будет смещено на 100 пикселей по вертикали относительно левого верхнего угла канваса спрайта. Ассет же прописывается в ноде asset.

Использование параметра position у части спрайта возможно только если указан параметр canvasSize у позы.

Порядок наложения частей

Части спрайта (будь то постоянная часть или группа) накладываются друг на друга согласно порядку, в котором они определены:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          parts:
            body: sprites/mt/mt_1_body.png # сначала будет выведено тело
            ~uniform: # затем форма
                pioneer: sprites/mt/mt_1_pioneer.png # пионерская форма
                dress: sprites/mt/mt_1_dress.png # платье
                swimsuit: sprites/mt/mt_1_swim.png # купальник
            ~face: # затем лицо
                normal: sprites/mt/mt_1_normal.png # нейтральное лицо
                smile: sprites/mt/mt_1_smile.png # улыбка
                sad: sprites/mt/mt_1_sad.png # грустное лицо
              
         # ... остальные параметры

canvasSize

Тип: текстовый нод

Определяет размер канваса спрайта. Этот параметр нужен для использования параметра position у частей спрайта, т.к. относительно значения этого параметра производится позиционирование изображений.

Значение должно состоять из двух целых чисел, разделённых пробелом, и представлять собой корректное разрешение:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          canvasSize: 900 1080 # 900x1080              
          
          # ... остальные параметры

positions

Тип: список

Определяет именованные положения спрайта относительно игровой сцены. Не стоит путать с параметром positions у частей спрайта.

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          positions:
            center: 0 0 # центр
            left: -0.5 0 # лево
            right: 0.5 0 # право
          
          # ... остальные параметры

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

Указанные внутри нода персонажа позиции будут переопределять одноимённые позиции выше по иерархии.

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

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          positions:
            center: -0.5 . # изменена только X-координата
            left: . -0.5 # изменена только Y-координата
          
         # ... остальные параметры

Значение для недостающей координаты будет браться из позиций с таким же ID выше по иерархии, если же таких нет — будет выставлен 0.

Подробнее о положениях можно почитать здесь.

sizes

Тип: список

Определяет именованные размеры спрайта относительно игровой сцены. Синтаксис схож с positions:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          sizes:
            normal: 1 1
            close: 2 .
          
          # ... остальные параметры

Внутри каждого нода можно также прописать позиции — они будут использоваться, когда у спрайта будет указанный размер:

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          positions:
            center: 0 0 # это значение будет использоваться при любых других размерах
          sizes:
            normal: 1 1
            close: 
              value: 2 .
              positions: # позиции при размере close
                center: 0 0.25 # это значение будет использоваться при размере close
          
          # ... остальные параметры

Размер в таком случае указывается внутри нода value.

На примере выше, когда у спрайта в сценарии будут прописаны size close и at center, в качестве координат для center будет использоваться значение 0 0.25, а не 0 0.

Аналогично positions, размеры, указанные внутри нода персонажа, будут переопределять одноимённые размеры выше по иерархии.

Подробнее о размерах можно почитать здесь.

spritecolor

Тип: список

Цвета для наложения на спрайт. Используются для более естественного отображения спрайтов на различных фонах (день, ночь и т.п.).

Значением может быть как цвет, заданный в colors, так и HEX-код или RGB(A)-код.

# resources.yaml
---
  characters:
    mt:
      poses:
        front_1:
          spritecolor:
            tokyo_street_sunset: #FFF1ED
 
          # ... остальные параметры

Подробнее о цветах спрайтов можно почитать здесь.

shortnames

Тип: список

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

Короткие имена прописываются так же, как прописываются позы и группы внутри сценария:

# resources.yaml
---
  characters:
    mt:
      shortnames:
        front_sd: front smile dress # или front face:smile uniform:dress

После определения коротого имени, его можно использовать внутри сценария:

show mt front_sd with dissolve

default

Тип: текстовый нод

Определяет позу и части групп, которые будут выводиться по умолчанию (если конкретные значения не указаны в команде сценария).

В качестве значения можно прописать короткое имя или позу и параметры групп:

# resources.yaml
---
  characters:
    mt:
      default: front smile dress
      # ... остальные параметры

Теперь, когда в сценарии будет прописано show mt, по умолчанию будет спавнится вариация front smile dress.

positions

Тип: список

Определяет позиции, которые могут использовать все позы спрайта. Любые позиции внутри конкретной позы будут переопределять данные позиции, если у них совпадают ID.

Синтаксис идентичен синтаксису positions внутри позы:

# resources.yaml
---
  characters:
    mt:
      positions:
        center: 0 0
        left: -0.5 0
      # ... остальные параметры

sizes

Тип: список

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

# resources.yaml
---
  characters:
    mt:
      sizes:
        normal: 1 1
        close: 2 .
        far:
          value: 0.7 0.7
          positions:
            center: 0 -0.25
      # ... остальные параметры

spritecolor

Тип: список

Определяет оверлей-цвета спрайтов, которые могут использовать все позы спрайта. Любые цвета внутри конкретной позы будут переопределять данные цвета, если у них совпадают ID.

# resources.yaml
---
  characters:
    mt:
      spritecolor:
        tokyo_street_sunset: #FFF1ED
      # ... остальные параметры