Персонажи

Персонаж может передвигаться в восьми направлениях, поворочиваться, говорить, также для него можно создавать любую требуемую анимацию (например, «подобрать предмет»). Типичный персонаж имеет порядочное количество анимаций. По этой причине разработка персонажа требует немалого времени.

Как правило, в адвенчуре (квесте) встречается много персонажей, но они в большинстве своём ограничены каким-либо образом, т.е. они только стоят/сидят в одной фиксированной позиции. В WME рекомендуется использовать объекты (entities) для создания таких упрощённых персонажей (подробнее об объектах).

В WME нет специального инструмента для создания персонажей. Для этого Вы должны будете написать простой текстовый файл, описывающий свойства персонажа. Не волнуйтесь, структура такого файла не слишком сложна, да и Вам, скорее всего, понадобится совсем немного персонажей для Вашей игры.

Итак, что нам нужно для создания персонажа? Во-первых, анимированные (спрайты). Каждому персонажу требуется набор анимаций: ходьба, когда он просто стоит, поворот и разговор. Также следует помнить, что он способен передвигаться в восьми направлениях, так что Вам понадобятся по восемь версий каждого типа анимаций для разных направлений. Если у Вас имеется только четыре направления, Вы можете использовать одну анимацию для нескольких направлений, но файл, задающий свойства персонажа, должен всегда описывать все 8. Например, если у Вас есть анимация «идти влево», Вы можете назначить её для направлений «идти влево» и «идти вверх-влево».

Файл, задающий свойства персонажа, не описывает специальных анимаций, таких как «взять предмет». Такие особые ситуации обрабатываются с помощью языка сценариев WME (подробнее о сценариях).

 

Анимация ходьбы

Эта анимация имеет одну специфическую особенность: Вам нужно задать значение свойств «движение» («move») спрайта в программе SpriteEdit. Свойства «движение по X» («Move X») и «движение по Y» («Move Y») определяют насколько пикселей персонаж должен перемещаться при ходьбе.

На следующей иллюстрации показана анимация «идти влево». Как видно из изображения, для выбранного кадра задано смещение на -12 пикселей по координате X (т.е. 12 пикселей влево).

Таким образом, Вы можете задавать скорость передвижения при ходьбе Вашего персонажа. Следует отметить, что количество пикселей пересчитывается автоматически при масштабировании персонажа (т.е. он движется медленнее, если его размер уменьшен).

 

Анимация бездействия

Эта анимация используется в том случае, когда персонаж стоит на одном месте. Вы можете задать её как одним кадром, так и целым рядом кадров, создающих какой-либо эффект. Например, дыхание.

 

Анимация поворота

Эта анимация задана для каждого направления. Когда персонаж поворачивается, для каждого направления отображается своя анимация поворота. Также вид анимации зависит от того, в каком направлении персонаж поворачивается: вправо (по часовой стрелке) или влево (против часовой стрелки). Например, когда персонаж стоит лицом в направлении «вверх» и ему нужно развернуться к направлению «вниз», воспроизводятся анимации для направлений «вверх», «вверх-вправо», «вправо» и «вниз-вправо», при этом будет задействован набор анимаций «повернуться вправо».

Анимация поворота обычно состоит из одного кадра, но Вы можете создать более сложную анимацию для достижения реалистичного эффекта (люди, как правило, переставляют ноги при повороте, попробуйте добиться этого :-)

 

Анимация разговора

Эффект, когда персонаж разговаривает, достигается с помощью так называемых «экземпляров речи» («talk stances»). Они представляют собой различные анимации разговора, которые могут быть скомбинированы для одной команды actor.Talk. Например, Вы можете использовать их, чтобы добавить мимику персонажу при разговоре. Вы можете задать столько анимаций, сколько Вам понадобится. При вызове метода Talk из сценария, Вы можете задать конкретные анимации, которые будут использованы при разговоре персонажа (подробнее о команде actor.Talk). Если Вы не указали ни одной анимации, WME будет выбирать их случайным образом. Т.е., Вы можете заготовить несколько анимаций и позволить WME воспроизводить их в случайном порядке.

Конечно, не всегда предпочтительно использовать некоторые конкретные анимации случайным образом (в случае, если они разработаны для специфической ситуации), по этой причине Вы можете создать два набора анимаций: для обычных ситуаций и специфических. Анимации для обычных ситуаций будут выбираться случайно, специфические же - только непосредственно по запросу из сценария.

Прежде чем испугаться всех сложностей, описанных выше, :-) обратите внимание, что для простого персонажа Вы можете создать только одну анимацию (или даже ни одной). Механизм речевых положений предлагается для продвинутых пользователей.

 

Сценарии (скрипты)

Анимации только определяют вид Вашего персонажа, его «тело». «Мозг» же составляют сценарии (подробнее о программировании в WME). Как и для всех WME-объектов, персонажам можно назначить один и более сценариев, задающих их поведение.

 

Файл описания персонажа

Итак, мы разобрали всё, что нам нужно для описания персонажа, теперь мы соберём все эти компоненты в одном файле (по условному соглашению, он имеет расширение .actor). Ниже приведена основная часть такого файла:

ACTOR
{
  NAME = "MyActor"
  CAPTION="My brand new actor"
  X = 100
  Y = 100
  SCALABLE = TRUE
  INTERACTIVE = FALSE
  COLORABLE=TRUE
  ROTATABLE = FALSE
  SOUND_PANNING=TRUE
  SCRIPT="actors\MyActor\MyActor.script"
  FONT = "fonts\outline_red.font"
Описание:

Далее следует определение всех анимаций, описанных выше. В каждой секции должно быть восемь анимаций, по одной на каждое направление.

Ниже приведён пример для анимации ходьбы:

  WALK
  {
    SPRITESET
    {
      LEFT       = "actors\MyActor\ll\walk.sprite"
      RIGHT      = "actors\MyActor\rr\walk.sprite"
      UP         = "actors\MyActor\uu\walk.sprite"
      DOWN       = "actors\MyActor\dd\walk.sprite"

      UP_LEFT    = "actors\MyActor\ul\walk.sprite"
      UP_RIGHT   = "actors\MyActor\ur\walk.sprite"
      DOWN_LEFT  = "actors\MyActor\dl\walk.sprite"
      DOWN_RIGHT = "actors\MyActor\dr\walk.sprite"
    }
  }
Остальные анимации задаются подобным образом, нужно только заменить ключевое слово WALK (идти) на STAND (стоять), TURN_LEFT (поворот влево), TURN_RIGHT (поворот вправо), TALK (говорить) или TALK_SPECIAL (говорить_специальное) соответственно.

Определений для TALK и TALK_SPECIAL может быть больше одного. Т.е., Вы можете подготовить несколько анимаций речи. Для каждой из них нужно задать своё название. Ниже приведён пример:

TALK
{
  SPRITESET
  {
    NAME = "stance name"

    LEFT = "filename.sprite"
    RIGHT = "filename.sprite"
    ...
  }
}
 

В качестве примера завершённого файла описания персонажа см. проект WME demo. Персонаж molly находится в папке actors\molly. Также следует отметить, что Вам не придётся писать файл с нуля, в программе ProjectMan доступен шаблон персонажа (подробнее о ProjectMan).

 

См. также: объект Actor