ПК-ностальгия
HOME
Железо
Программы
Оборудование
Статьи и публикации
Фототаблица
Ссылки
Почта
Гостевая
ПОИСК
Новости Яndex
О сайте

Этот сайт предназначен, прежде всего, людям, ностальгирующим по ушедшим РУССКОМУ СЛОВУ, Windows 3.1, ФОТОНУ, процессорам 486SX и иже с ними.
Конечно, времена должны идти вперед, но почему они обязательно должны уходить?

StuhlbergR 2007-2008 ©
DOOM ностальгия

"Why are there monsters?"
(DOOM - Infernal Sky)

Статьи про DOOM
Скриншоты DOOM
Рисунки DOOM
DOOMострой
Демки
Разное...

"Кровищи, кровищи побольше..." или еще раз о детализации в мапинге DOOM 3
(продолжение)


Камера! Мотор!

И снова позволю себе некоторое отступление от канвы моего рассказа про детализацию. После долгого перерыва продолжаю данную статью, во многом благодаря вопросам "а как сделать?.." на форуме DOOM 3. (Иначе, Бог знает, когда бы взялся за продолжение...) В настоящем случае - а как сделать ролик на движке?.

Руки сами чешутся провести небольшой экскурс в историю роликов на игровых моторах, машинимы и т.д., но понимаю, что мапперы ждут не этого. В конце концов, в Сети можно отыскать некоторое количество ресурсов данной тематики. Хочется лишь напомнить, что одной из первой полноценные, практически кинематографичные, ролики в игровой индустрии стала поддерживать народная "Халва" Первая. До того, впрочем, даже восьмибитные игрушки эпохи Dendy имели внутренние ролики, исполненные на движке. Впрочем, вопрос о том, были ли сие ролики или просто демки, оставлю открытым...

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

Естественно наш общий любимец DOOM 3 также позволяет почувствовать себя в качестве кинорежиссера (заодно декоратора и сценариста, а также специалиста по эффектам и т.д.). Имеются даже целые фильмы, "снятые" на движке DOOM 3.

Ну да, предположим, до полноценного фильма нам далеко, а вот эффектно подать завязку сюжета или, скажем, ввести в бой нового монстра - уж очень хотелось бы. Здесь же отмечу: обязательно, обязательно, обязательно давайте возможность игроку пропустить ролик нажатием клавиши ESC. Благо, по умолчанию так оно и есть, а вот в "пицотпервый" раз просматривать знакомый до скрежета пальцами по мыши видеофрагмент (нередко качества ниже среднего) - то еще занятие, надо сказать. Хотя именно этим испытывают терпение игроков даже некоторые именитые игры (не будем показывать пальцем).

Наверняка всем памятны и появление первого импа в DOOM 3, и эффектное явление пинки народу, и, конечно же, финальный ролик игры(впрочем, он имеет также GUIшную природу). Вот сейчас мы и попробуем соорудить нечто подобное, пусть на первых порах и примитивное, но: 1) зато свое; 2) со временем и желанием, из наших рук неизбежно выйдет качественный игровой короткометражник (а может и не коротко). Но приступим же!

Финальный ролик на моторе HL
Финальный ролик на моторе в HL
Появление импа в DOOM 3
Появление импа в DOOM 3

Создадим небольшую комнатку - это и будет наша пробная съемочная площадка. Впрочем, вы можете проводить эксперименты непосредственно на вашей карте.

Ролики на движке DOOM 3

Если планируется начальная заставка с участием главного героя, можно вставить, например, модель marscity_cinematic_player, прописав нужную анимацию (stand, idle и т.д.) и совместив ее с положением игрока на карте. Только в данном случае модель игрока потребуется убрать по завершении ролика (скажем, скриптом), иначе наш двойник та и останется стоять безмолвным эго всю оставшуюся игру. Монстры помрут со смеха.

Создание ролика на движке DOOM 3

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

Занятие рутинное и требует внимательности, но совершенно необходимое. Кстати, во всех дальнейших func_... также прописываем cinematic: 1, иначе просто ничего не заработает.

Ролики на движке DOOM 3

Теперь создадим func_mover (это подвижная часть, что-то типа площадки, на которой будет стоять наша камера). Из многочисленных параметров нам будут интересны: cinematic: 1, model: func_mover_1 (или какой там у вас номер), move_speed: 50 (это, собственно, скорость продвижения камеры, ее можно изменять, в зависимости от нужд ролика). Желательно текстуру натянуть NoDraw.

Создание роликов на движке DOOM 3

Делаем, собственно, камеру. Для этих целей имеется func_cameraview. Обратим внимание на белую стрелку, указывающую направление "объектива" (в продвинутом случае, с этим параметром можно экспериментировать при помощи всевозможных хитроумных штук, но здесь я их рассматривать не буду, по крайней мере, пока). Не забываем про cinematic: 1 (хотя замечено, что на некоторых сборках DOOM 3 оное было не обязательно, но рисковать не будем) и привязываем ("биндим") саму камеру к созданной ранее "площадке" (func_mover), прописав bind: func_mover_(номер). К слову сказать, параметра bind в стандартных наборах параметров вы не найдете (как и во многих других случаях в иных объектах). Обходится это просто. Делаем двойной клик на Usage, переходим в нижнюю часть панели и, установив курсор в поле Key: Usage, очищаем место, затем вписываем необходимое нам (например, тот же самый bind). В поле Val вводим также требуемый параметр (например, 1 или что там нам потребуется...). Но это я так, на всякий случай, вдруг кто-то не знаком с такими тонкостями.

На скрине func_cameraview и func_mover находятся рядом друг с другом, но это совершенно не обязательно, просто так нагляднее группировать объекты и вообще, на мой взгляд, аккуратнее и удобнее.

Создание роликов на движке DOOM 3

Пришло время поставить нашу камеру на рельсы. Иными словами, указать путь, по которому она будет двигаться. Создадим обычный func_static и натянем текстуру NoDraw. Не помешает прописать cinematic: 1, a также model: func_static_номер. Если вдруг не прописалось автоматически. Также лично я иногда для подстраховки пробелом копирую всякий важный func, дабы не нарваться на глюк, подобный тому, какой я описывал выше касательно вставки моделей. Можно, конечно, перезагрузить редактор, но пробел, как вы понимаете, нажать получается быстрее. Также можно в именах всех func_... указывать свои наименования (например, camera, ploschadka, ...), но в дальнейшем это придется учитывать при написании управляющего скрипта. Лично мне проще тупо скопировать напрямую из редактора тот же func_cameraview_1 и затем вставить в скрипт, но это дело вкуса. Кроме того, можно прописать solid: 0. Это если вдруг ваш func_static окажется хоть невидимым (текстуру-невидимку мы все-таки натянули), но твердым, а потому натыкаться не него игроку будет не очень приятно...

А теперь наступило время творческого колдовства. Выделив func_static, на вкладке Entity жмем кнопку Curve, а в открывшемся диологовом окошке в выпадающем меню выбираем Nurbs. От нашего func_static протянется тонкая синяя линия - это и есть путь, по которому будет двигаться камера. Вообще-то, линия называется сплайном. Ну да ладно.

Создание роликов на движке DOOM 3

Создание роликов на движке DOOM 3

Пока линия крива и неказиста. Будем исправлять. На панели редактора есть группа кнопок, отвечающих как раз за редактирование сплайна. Самая первая - с изображением крохотной камеры - осталась для меня загадкой. По логике вещей, она должна тестировать камеру. Но в моем случае при нажатии ее редактор обижается и вылетает... да уж... так что я обхожу эту кнопку стороной. Остальные же вполне себе рабочие и отвечают за:
Edit (Edit Curve Points) - непосредственно редактирование узловых точек пути;
Add (Add Curve Points) - добавление узловых точек в конец сплайна;
Ins (Insert Curve Point) - вставить узловую точку в сплайн;
DEL (Delete Curve Point) - удалить неугодную выделенную точку.

Создание роликов на движке DOOM 3

Само редактирование происходит достаточно просто. При выделенном func_static жмем на указанные выше кнопки меню, двигаем узловые точки мышью (часто удобно это делать непосредственно в окне *CAM). В общем, на ваше операторское усмотрение...

Создание роликов на движке DOOM 3

Создание роликов на движке DOOM 3

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

void test_move_cam() //вызов скрипта (имя можно придумать свое)
{
$func_mover_1.time(20); //время, в течение которого должна двигаться камера
$func_mover_1.accelTime(5); //время разгона камеры в секундах (можно пропустить)
$func_mover_1.decelTime(5); //время торможения камеры в секундах (можно пропустить)
$func_mover_1.startSpline( $func_static_1 ); //заставляет камеру двигаться по намеченному сплайну
sys.setCamera( $func_cameraview_1 ); //устанавливает вид из "объектива" камеры
sys.wait($func_mover_1); //указывается время в секундах, во время которого проигрывается ролик, но в нашем случае - пока камера не пройдет по сплайну
sys.firstPerson(); // устанавливает вид снова от лица игрока
}

Названия func_... у вас могут отличаться, так что придется исправить. Даем скриптовому файлу имя вашей карты и кидаем в папку с этой же картой. Кстати, скрипты пишутся обычно в Блокноте, а затем сохраняются с расширением .SCRIPT. Все просто, но у новичков может получиться обычный текстовый файл вместо скриптового. А дело в том, что на этапе "Сохранить как..." нужно в пункте "Тип файла" выбрать "Все файлы", а не "Текстовые документы (*.txt)", как это там стоит по умолчанию. Не Бог весть, какая хитрость, однако можно споткнуться и на этом.

Сохранение скриптового файла

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



Но вернемся к нашей карте. Завершающий этап - установка триггера, вызывающего написанный выше скрипт. В свойствах триггера указываем call: test_move_cam (или какое там у вас наименование скрипта...). Компилируем. Если все сделано правильно и внимательно, чувствуем себя Хичкоком :)

Ну а доводку камеры по сплайну производим через редактирование узловых точек, как это только что описывалось. В общем, тишина на площадке, камера, мотор!

Готовый ролик

Скачать карту-пример (10 Kb)

Продолжение следует

[1] [2] [3] [4] [5] [6] [7] [8] [9]

Ветка DOOM-ностальгия
Статьи о DOOM

Большинство предоставленного здесь материала является цитированием со старых номеров компьютерных журналов, таких, как "Мир ПК" или "Весь Компьютерный Мир". К сожалению, все мои попытки связаться с этими изданиями по поводу вопроса о цитировании были безуспешны. Издания упорно хранили молчание. Что я разрешил себе расценивать как знак согласия, указывая, тем не менее, повсюду как выходные данные издания (с работающей ссылкой на Интернет-представительство), так и автора публикации. Тем более, что, в силу срока давности этих публикаций, вряд ли материал можно рассматривать как коммерческий или рекламный, пусть даже названия фирм здесь и присутствуют (уж без этого никуда). Ежели появятся какие претензии по оному поводу, прошу издания связаться со мной

Райво Штулберг


Rambler's Top100

Рейтинг@Mail.ru Сайт мышонка Портал HotINDEX: знакомства, товары, хостинг, создание сайта, Интернет-магазин, развлечения, анекдоты, юмор, эротика, погода, курсы валют и многое другое! Сайт Татьяны Полукаровой Яндекс цитирования Каталог Ресурсов Интернет
Белый каталог сайтов Литературное ДАО

Автор обращает внимание на то, что никакой представленный здесь материал не служит рекламным целям ни фирм,ни их продкутам, а носит сугубо информационно-образовательный характер