Различие видео-роликов, сделанных с помощью редактора и в виде скрипта
Команды для заскриптованных видео-роликов находятся в скрипте, а для созданных в редакторе - в триггерах и waypoint`ах. Вы не можете настолько эффективно управлять камерой в редакторе, насколько это позволяет скрипт, однако их и сложнее создавать.
Основные команды для создания видео-роликов (подробнее смотрите в разделе "Команды"):
CamCreate - создать камеру
CameraEffect - указать эффекты камеры
CamSetPos - указать позицию камеры
CamSetTarget - указать цель камеры
CamSetRelPos - указать позицию камеры относительно ее цели
CamCommit - выполнить изменения
CamDestroy - удалить камеру
Создание заскриптованных видео-роликов
Видео-ролики в виде скрипта - это набор последовательных команд, работающих с камерой и имеющих временные интервалы. Используя лишь указанные выше команды можно сделать отличное видео.
Рассмотрим пример небольшого скрипта, в котором камера пролетает справа от игрока в начале миссии. Данный скрипт вызывается из строки Initialization игрока. Также скрипт требует еще один объект (на расстоянии 20 метров от игрока), чтобы сделать видео более зрелищным.
Откройте редактор миссий и создайте миссию на острове Desert с двумя юнитами: игроком и еще каким-нибудь объектом. Назовем этот объект (не игрока) object2. Сохраните миссию под названием testcam.
Нажмите Alt+Tab, с помощью проводника (или другого файлового броузера) зайдите в папку только что созданной миссии (flashpoint\users\yourusername\missions\testcam.Intro). Создайте в ней текстовый файл с именем testcam.sqs. Теперь будем редактировать именно его (для этого можно воспользоваться обычным блокнотом).
В начале создадим камеру с эффектами internal, back в координатах 0,0,0 (помните, что все нижеуказанные строчки кода надо прописывать в файле testcam.sqs):
_cam = "camera" camcreate [0,0,0]
_cam cameraeffect ["internal", "back"]
Теперь необходимо установить камеру так, чтобы он снимала игрока. Поставим ее на расстоянии 10 метров спереди от игрока, 2 метра влево и 3 вверх (от земли). Команду CamCommit установим в 0, т.к. мы хотим, чтобы данные изменения были произведены немедленно:
; направляем камеру на игрока: 2 м слева, 10 спереди и 3 вверх
_cam camsettarget player
_cam camsetrelpos [-2,10,3]
_cam camcommit 0
Сделаем выход камеры из затенения, чтобы переход к видео был более приятным и плавным. Данный процесс будет длиться 2 секунды. Если вы хотите, чтобы в это время на экране отображался какой-то текст (как это сделано в данном примере), пропишите его между кавычек " " до "BLACK IN" (то есть вместо слова Hello). Чтобы текста небыло вообще, оставьте кавычки пустыми.
; затенение на 2 секунды
titlecut ["Hello","BLACK IN",2]
; ждем 2 секунды, пока пройдет затенение
~2
Пора придать нашему видео немного движения. Передвинем камеру на 5 метров за игрока, на 2 метра влево и полметра вверх (считая от земли). Данное изменение полностью завершится через 5 секунд. Необходимо выделить время на это (иначе сразу же выполнится другая команда), поэтому мы и ждем 5 секунд (~5 ). Далее после каждой команды управления камерой будет стоять аналогичная команда задержки времени, чтобы дать ей выполниться до конца.
; перемещаем камеру через 5 секунд и делаем паузу еще на 5 секунд
_cam camsetrelpos [-2,-5,0.5]
_cam camcommit 5
~5
Чудненько, теперь изменим цель нашей камеры на другой объект (как вы помните, мы назвали его object2). Кроме этого передвинем камеру относительно этого объекта на 3 вперед, 1 влево и 2 над землей. Передвижение будет длиться 2 секунды.
; выбираем цель object2, передвигаем камеру относительно нее и делаем паузу
_cam camsettarget object2
_cam camsetrelpos [-1,3,2]
_cam camcommit 2
~2
Близится финал, пора делать прощальную сцену. Опять применим затенение, но теперь это будет уже обратный эффект - из игры в темноту. Не забудем растянуть это действие на пару секунд, чтобы сделать переход плавным. Здесь есть одна хитрость, все эффекты затенения кроме Black Faded НЕ возвращаются к игровому экрану, то есть их можно применять только для начальной и конечной заставки. Но сам Black Faded для возвращения к игре делает паузу в 13 секунд, поэтому необходимо подождать и не давать игроку управление во время затенения. Это и делает команда "~24" (почему то, чтобы обождать 13 секунд, мне пришлось устанавливать значение 24...), после выполнения которой сразу же удаляется камера со всеми эффектами, и управление передается игроку.
; затенение
titlecut ["Bye\nPlease wait 13 seconds","black faded",2]
; ждем завершения затенения
~24
Вот и все, осталось завершить видео, удалить камеру и выйти из скрипта:
_cam cameraeffect ["terminate", "Back"]
camdestroy _cam
exit
Готово, теперь по окончании ролика управление передастся игроку. Кстати в эффекте затенения можно было использовать также "WHITE IN" и "WHITE OUT", если вам больше нравится белый цвет. Сохраните данный скрипт (testcam.sqs) и вернитесь в редактор миссий (Alt+Tab). Дважды кликните на игроке и в его поле Initialization пропишите:
[] exec "testcam.sqs"
Нажмите OK, а потом Preview и наслаждайтесь своим первым фильмом. Поэкспериментируйте со значениями команды setrelpos, а также с другими эффектами. Попробуйте изменить угол обзора с помощью команды camsetfov. Заставьте второй объект двигаться (для этого вначале расставьте на карте waypoint`ы), а в это время пусть игрок наблюдает за ним с помощью команды dowatch. Добавьте в видео музыку посредством команды playmusic (не забудьте плавно завершить ее воспроизведение командой fademusic). Отличного эффекта в стиле матрицы с замедлением времени можно добиться, используя команду setAccTime, а команда skiptime позволит моментально пропустить некоторое количество часов, например, чтобы ускорить приближение вечера. Для сцен с крупным планом игроков не плохо бы поиграться с командой setmimic, дабы изменять выражение лица персонажу. Все это позволит вам лучше разобраться в данном вопросе и научиться делать по настоящему захватывающие видео-ролики.
А под конец, советы от BIStudio:
1. Если хотите нацелить камеру на какой-нибудь юнит и сделать крупный план, достаточно в строке Initialization этого юнита прописать:
this exec "camera.sqs"
Скрипт camera.sqs является стандартным для игры и входит в набор скриптов из файла Flashopint/DTA/scripts.pbo.
Чтобы получить текущие координаты камеры (и некоторые другие параметры), нажмите клавишу Ctrl. После этого нужная вам информация сохраниться в файле Flashopint/clipboard.txt.
Чтобы уничтожить камеру во время игры, достаточно просто нажать клавишу включения оптического прицела (по умолчанию V).
В принципе это все, что вам нужно знать для освоения профессии режиссера. Видео-ролики могут проигрываться в любой момент миссии и делают ее только более интересной и красивой, так что не избегайте их.
Пример скрипта лежит в папке "ПРИМЕРЫ" с названием "Камера".
Создание Интро
Интро - это видео-ролики, проигрывающиеся вначале миссии еще до появления экрана с картой и заданием. Чтобы создать такое видео, надо выбрать пункт Intro в редакторе вместо Mission (меню выбора расположено над кнопкой Preview). При этом с карты пропаду ВСЕ добавленные вами юниты, триггеры и waypoin`ы - так и должно быть. Видео придется делать с нуля.
Возьмем, к примеру, уже созданную ранее миссию testcam. Загрузите ее в редактор и выберите пункт Интро, снова добавьте игрока и второй объект с именем object2. А в поле Initialization игрока опять пропишите:
[] exec "testcam.sqs"
Сохранив полученное, и загрузив эту миссию из меню Single Missions, видео будет проиграно перед миссией. Точно также создаются и финальные заставки, только из меню надо выбрать не Intro, а Outro.