Модификации. Создание сцен-на-движке (cut-scenes, кат-сцен)

RU EN +

Примечание: эта статья была создана для редактора UnWorld. Поэтому упоминаемые автором патчи могут быть полезны только для этого редактора. Но основной принцип создания кат-сцены является универсальным для большинства известных редакторов.

Рассмотрим варианты создания этих самых cut-scenes.

Тайная комната.

Итак, как и обещал я напишу статью о кат сценах. Если что не понятно, спрашивайте в комментариях.
Начнём с того, что необходимо скачать и установить патч https://yadi.sk/d/_Xp_Ua_33Hzy2s без него ничего не получится. Для начала нам нужно в голове придумать какой-нибудь ролик, а объяснять я буду на примере своего. Сцена будет такой: Гарри с Роном подходят к непонятной комнате, они заходят туда, Рон спрашивает «Что это было?» и неожиданно выходят два больших краба. Мальчики кричат «нееееееееет» и потом начинают убегать, а крабы идут за ними( тут придется им увеличить скорость). Всё же они забегают в какую-то комнату, где безопасно и Рон говорит «фух, пронесло».

Итак, добавим на карту всё, что нам надо: двух крабов, Рона и Гарри, оформим карту как надо, т.е сделаем комнаты и начнём.

  1. В общем, сначала надо указать ДЛЯ КАЖДОГО ГЕРОЯ, свое имя в cut scene. Для этого открываем свойство гарри и выбираем вкладку cut scene и пишем туда «Harry». Далее открываем свойство Рона, опять же открываем Cut Scene и пишем «Ron». Тоже самое делаем для крабов, пишем «Crab1» и «Crab2», хотя на самом деле названия можно давать любые.
  2. Заходим в папку игры, открываем system, затем CutScenes и копируем любой файл, стираем всё что внутри него и задаём имя файлу на английском.
  3. Тут начинается самое сложное. Итак, запоминаем, ЛЮБАЯ КАТ СЦЕНА начинается со строки «[Thread_0]» (Квадратные скобки обязательны). Я думаю эта фраза переводится как «сцена». После того как мы написали эту фразу, нажимаем на Enter и мы переходим на другую строку. Все последующие строки и фразы будут начинаться со слов «line», т.е line_0, line_1, line_2. В общем, сейчас поймёте. Значит мы прописываем:

[Thread_0]
line_0=Capture Harry
line_1=Capture BaseCam
line_2=Capture Ron
line_3=Capture Crab1
line_4=Capture Crab2

Что же значит Capture? Сapture — это захват какой-либо цели, т.е мы должны захватить всех персонажей, которые у нас двигаются (ВНИМАНИЕ: Capture BaseCam пишется всегда, это тоже надо запомнить, т.е базовую камеру(BaseCam) надо всегда захватывать, чтобы она могла работать в кат сцене).

4. Возвращаемся снова в редактор и мы должны найти объект CutCameraPos (Navigation Point, UWNavigation Point). Ставим камеру где-нибудь сверху и открываем её свойства, открываем вкладку Cut Scene и пишем любое название камеры. Я дал название «Cam1». Добавим объект CutMark и расположим его между Роном и Гарри, зададим ему название «E2». Затем снова открываем наш текстовый документ и пишем line_5=BaseCam Target FlyTo E2, т.е это значит, что наша базовая камера будет направлена на CutMark с названием E2 (Target — цель, на что направлена). Следующая строка будет line_6=BaseCam FlyTo Cam1 — эта строка указывает на то, какой предмет будет снимать происходящее.

5. Дальше нам надо, чтобы Гарри с Роном подошли к комнате одновременно. Для этого добавляем два CutMark и ставим их возле комнаты, затем указываем имена для каждого, например «CutMarkHarry», т.е это место до куда дойдёт Гарри, а «CutMarkRon» это место до куда дойдёт Рон. Снова возвращаемся в текстовый редактор и пишем:

line_7=Harry RunTo CutMarkHarry *
line_8=Ron RunTo CutMarkRon

WalkTo — идти к чему-либо, ну и RunTo — бежать. Т.е это все значит, что Гарри идёт к своему CutMark, а Рон к своему. Звёздочка означает, что последующее действие выполняется одновременно с тем действием, на строке которой она написана, т.е Гарри с Роном будут бежать одновременно.

6. Теперь ставим вторую камеру правее первой, она будет показывать на вход в комнату и опять указываем ей имя(Cam2). Также поставим еще два CutMark в комнате, туда пойдут мальчики и укажем имена (CutMarkHarry1 и CutMarkRon1). Поставим CutMark, туда будет смотреть наша вторая камера(E3- название камеры). Возвращаемся в Текстовый редактор и пишем:

line_5=BaseCam Target FlyTo E3
line_6=BaseCam Cam2 FlyTo Cam2

Это значит, что наша базовая камера теперь вторая, которую мы поставили и что она смотрит на наш CutMark(E3). Дальше пишем:

line_11=Harry WalkTo CutMarkHarry1 *
line_12=Ron WalkTo CutMarkRon1

Думаю тут всё понятно.

line_13=Ron TurnTo Harry *
line_14=Harry TurnTo Ron

TurnTo — повернуться к чему или к кому-либо.

7. Дальше пойдут реплики. Рон должен сказать «Что это было?». Для того, чтобы прослушивать звуки надо скачать патч https://yadi.sk/d/hlyZDt4gvVVrG/HP2/UPDATES , а все реплики Рона можно скачать здесь https://yadi.sk/d/YeXxT8N43LPrAi . PC_Ron_DuelSnake_06 — Что это было? Значит эта фраза будет прописываться так:

line_15=Ron talk PC_Ron_DuelSnake_06

Для разговоров можно использовать Talk или Say, это одно и то же

8. Теперь анимации. Гарри делает анимацию, что ничего не понимает, называется talk_dontKnow.

Значит мы прописываем:

line_16=Harry animate talk_dontKnow

Harry animate — это значит, что Гарри показывает анимацию. Все анимации можно скачать здесь https://yadi.sk/d/hlyZDt4gvVVrG/HP2/UPDATES .

9. Также перед тем как Рон спросил «Что это было?» камера показывала Рона вблизи, для этого используются координаты:

line_15=BaseCam FlyTo Ron z=27 x=40 y=10
line_16=BaseCam Target FlyTo Ron z=27 x=10

Тоже самое прописывается для Гарри.

10. Затем у нас должны выйти крабы, а перед этим нужен небольшой промежуток времени, мы используем команду Sleep 1 — это значит, что ничего не будет происходить одну секунду, можно вместо единицы написать два или три.
11.Создаём ещё одну камеру Cam3 и CutMark E4:

line_21=BaseCam Target FlyTo E4
line_22=BaseCam FlyTo Cam3

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

line_23=Crab1 WalkTo CutMarkCrab1 *
line_24=Crab2 WalkTo CutMarkCrab2
line_25=Crab1 TurnTo Ron *
line_26=Crab2 TurnTo Harry
line_27=Crab1 animate roar *
line_28=Crab2 animate roar.

Вообщем до конца описывать слишком долго. Все основные команды я написал.

Внимание!!! Это еще не всё. Когда вы указали название текстовому документу, которое написано на АНГЛИЙСКОМ, вы на карту должны поставить объект CutScene, открыть его свойства, выбрать вкладку CutScene и в строке FileName указываете то имя на английском, которое вы дали текстовому документу. Не забудьте нажать Build all и сохраниться.

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

line_33=Release Harry
line_34=Release Ron
line_35=Release BaseCam
line_36=Release Crab1
line_37=Release Crab2

Release — значит освободить, т.е если Capture — это захват, то Release — это наоборот. Надеюсь всё понятно, всем удачи) Если что непонятно спрашивайте.


Автор: Джон56



Сов к статье “Модификации. Создание сцен-на-движке (cut-scenes, кат-сцен)”: 21
  1. Не знаю, правильно ли у меня получится, но…
    [Thread_0]
    line_0=Capture Harry
    line_1=Capture BaseCam
    line_2=Capture MadamPomfrey
    line_3=Capture TomRiddle
    line_4=BaseCam Target FlyTo E2
    line_5=BaseCam Target FlyTo Cam1
    line_6=Harry WalkTo CutMarkHarry
    line_7=MadamPomfrey talk PC_MadamPomfrey_PomfreyBumps2
    line_8=BaseCam Target FlyTo E3
    line_9=BaseCam Target FlyTo Cam2
    line_10=TomRiddle animate talk_smile
    line_11=Harry TurnTo TomRiddle
    line_12=Harry animate talk_die path
    line_13=MadamPomfrey RunTo CutMarkMadamPomfrey
    line_14=TomRiddle animate talk_nooooo
    line_15=Release Harry
    line_16=Release BaseCam
    line_17=Release MadamPomfrey
    line_18=Release TomRiddle
    Для наглядности- то же самое, но как в книге:
    Гарри подошёл к шкафу, из которого шёл пар.
    -Гарри, отойди от шкафчиков, там ядовитые зелья!- сказала Мадам Помфри.
    Тут раздался леденящий душу смех. Гарри обернулся, увидел Тома Реддла и упал в обморок. Мадам Помфри тут же подбежала к нему. Том Реддл крикнул:
    -НЕЕЕЕЕЕЕТ!!!

  2. Это мне и без инструкции понятно всё, мне больший интерес представляет написание сцены в виде скрипта, без кат-файла. В МОДе от Koop’s используется такая схема, у меня с её записью явные проблемы. Приходится использовать файл.

    От модератора: там можно и мод целиком в unr-файл засунуть (включая текстуры), но возни слишком много.

    • Передвиньте ползунок повыше в консоли, т. к. все проблемы исходят из того, что Драко не «захвачен», видимо при захвате произошла какая-то ошибка, т. е. в начале кат-сцена….

      • Все, уже не надо. Я решил, с свойствах персонажа, там пункт Cut-Scene и там нужно было прописать Draco. Вот такую простую ошибку совершил.

        • Я тоже так думал, потому что не представляю другую ошибку, которая могла произойти при «захвате» персонажа (разве что, где-то совершить опечатку в CutName или в самом кат-сцене))

          От модератора: слово «сцена» таки женского рода 😉

  3. Такая вот проблема возникла, делаю вторую кат сцену (в 1 карте) — все делал как в прошлый раз, но на этот раз Персонаж не говорит (Гарри доходит до точки, а персонаж по сценарию должен заговорить — я прописал там реплику, но она не отвечает). Что делать? Может у меня реплики (в 1 кат сцене и 2) начинаются на line_9= — но это странно, ибо начало у меня тоже одинаково.

    От модератора: приведите пример всей строки, лучше с предыдущей — чтобы тот, кто захочет вам помочь, мог понять причину.

    • Хорошо (на всякий сделаю полностью).

      [Thread_0]
      line_0=Capture Harry
      line_1=Capture BaseCam
      line_2=Capture Draco
      line_3=BaseCam Target FlyTo A1
      line_4=BaseCam FlyTo RAM1
      line_5=Harry WalkTo CutMarkHarry11
      line_6=BaseCam Target FlyTo A2
      line_7=BaseCam RAM2 FlyTo RAM2
      line_8=Harry WalkTo CutMarkHarry12
      line_9=Draco Talk PC_Drc_DiagonAlley_75
      line_10=Draco Talk PC_Drc_DiagonAlley_77
      line_11=Draco Talk PC_Drc_QuidFight_28
      line_12=Draco WalkTo CutMarkDraco

      • А вот прошлый.

        [Thread_0]
        line_0=Capture Harry
        line_1=Capture BaseCam
        line_2=Capture Hagrid
        line_3=BaseCam Target FlyTo E2
        line_4=BaseCam FlyTo Cam1
        line_5=Harry WalkTo CutMarkHarry
        line_6=BaseCam Target FlyTo E3
        line_7=BaseCam Cam2 FlyTo Cam2
        line_8=Harry WalkTo CutMarkHarry1 *
        line_9=Hagrid talk PC_Hdw_HagArrest_19
        line_10=Hagrid talk PC_HDW_BUMPLINES_353
        line_11=Hagrid talk PC_Hdw_HagArrest_27
        line_12=Hagrid talk PC_Hdw_HagArrest_28
        line_13=Hagrid WalkTo CutMarkHagrid
        line_14=Release Harry
        line_15=Release Hagrid
        line_16=Release BaseCam

        • Может быть, дело в забытой звёздочке после WalkTo? Она у тебя кстати в прошлом варианте присутствует…

          • Пробовал и без звездочки, и с ней — результат тот же.

          • А в консоли (которая по тильде вызывается) что-то выводится при этом «затупе» реплики? Иногда там появляется полезная информация

  4. Чтобы анимация персонажа повторялась, надо после названия анимации написать Loop.

  5. Статья отличная, но если кому вдруг понадобится: если при кат-сцене также должна заиграть другая музыка, то нужно ввести:
    BaseCam PlayMusic .ogg Fade=<кол-сто секунд плавного "нарастания" (чтобы музыка не появилась резко), если не надо, вписываем "0" (.ogg файла, кстати, необязательно дописывать)
    Если музыку надо остановить:
    BaseCam PlayMusic StopMusic Fade=<колс-тво секунд плавного "затухания", соответственно;)
    Вместо BaseCam можно указывать любого другого персонажа, который есть в данном кат-сцене, например Harry PlayMusic и т. д.
    Также следует не забывать, если музыка до начала кат-сцена должна играть, а в кат-сцене она должна смениться, первую будет необходимо остановить всё тем же "StopMusic", иначе будут играть одновременно 2 файла.
    Если одна и та же музыка должна играть несколько раз в уровне, то можно просто создать один триггер с каким-нибудь тэгом (например "CutSceneMusic"), а потом вместо длинных команд просто писать
    Trigger (в моём случае Trigger CutSceneMusic). (также разрабы из KnowWonder неоднократно создают в уровне спец. триггер для остановки музыки, называя его «Silence», его также при желании можно создать:)

      • Я просто просматриваю уже имеющиеся кат-сцены в игре, и по сути, то что я знаю — уже описано в статье, кроме PlayMusic)) Однако также ещё знаю, что если необходимо воспроизвести анимацию при разговоре (допустим, Гарри говорит и одновременно с этим анимация), то в конце строки нужно приписать startanim= ( Harry Talk startanim= )
        Ещё можно использовать waitfor, когда, к примеру, Гарри что-то говорит, в это время Рон куда-то бежит, но Рон прибежал раньше конца фарзы Гарри, а Гарри (сорян за тавтологию) надо закончить фразу и тоже побежать. Тогда 1)Harry Talk blabla *HarryDone1 2)Ron RunTo 3)WaitFor HarryDone1 4)Harry RunTo… как-то так…..

        • Ааа, треугольные скобки пропали… После startanim=название_анимации, после RunTo название_точки

          От модератора: угловые скобки 〈 действительно могут пропадать — особенность работы движка сайта. Для их отображения стоит использовать юникод-эквиваленты вида & # 12296;

      • Ну, и ещё можно изменять скорость игры обыкновенным «slomo (скорость в цифрах, стандартная скорость принимается как 1)». Т. е., если я хочу SlowMotion (хотя я не понимаю, когда он может пригодиться :), ввожу «slomo 0.4» и наслаждаюсь. Только потом в конце кат-сцена надо не забыть вернуть нормальную скорость 😉 Вообще там ещё можно использоваться не только [Thread_0] но и [Thread_1] и тд в случае, если кат-сцен очень большой и не приходилось добавлять где-то в середине новые строки и заново их пронумеровывать. Допустим если в середине хочу изменить скорость, то после необходимой команды в конце строки пишу *SlowMoBegin (например), ав конце кат-сцена дописываю *SlowMoEnd, потом в Thread_1 пишу line_0=WaitFor SlowMo line_1=slomo 0.4 line_2=WaitFor SlowMoEnd line_3=slomo 1. В случае, если надо что-то с персонажем делать и тоже в другом Thread, то его надо заново «закапчить» с помощью ReCapture (имя_персонажа). Также как-то возможно сделать какой-либо цветной оттенок камеры (в игре используются при голосе, который слышит только Гарри — камера уходит в розовый оттенок (как-то с помощью BaseCam FadeIn r=70 g=0 b=70 time=0, но делается это довольно сложно, и я пока не разобрался в этом…..

  6. У меня работало в другом порядке всегда. Сначало Flyto, а не Target Flyto. И лучше использовать редактор Koops, так как UnWorld при обновлении может сбросить необходимое, а старые версии не берут cutscene. А также желательно использовать Notepad++ для устойчивости процесса.