Вниз

4 Август 2013

Как сделать из демки видео

Очень давно хотел написать статью по этой теме, но никак не получалось. Сейчас у меня есть свободное время, в распоряжении неплохой компьютер – так почему бы и нет?

Все наверняка видели крутые ролики с нарезками крутейших убийств со спецэффектами, и задумывались – а как создать мувик? Сразу огорчу вас предупреждением, что в этой статье я только покажу как из обычной демки сделать видеоролик, без добавления ничего лишнего.

Итак, допустим, вы только что сделали офигенное убийство, и срочно хотите всем показать вашу крутость. Или вас обвинили в читерстве, забанили, а вы хотите восстановить справедливость, кидаете всем демки, но всем лень их смотреть. Тогда нам остаётся только смонтировать из демки видео. Сначала я расскажу о технологии. Возможно, вы уже слышали как это всё делается в общих чертах, но лично я, когда готовился к написанию статьи, нашёл только неграмотные и нечитаемые советы, к тому же ещё и с неправильно написанными командами. Есть также офигенное видео от MovieNations, но лично мне было неудобно смотреть видео и при попытке повторить снова и снова перематывать его. Собственно, это и было основной мотивацией для написания. Кстати, ссылка на это видео будет внизу – если у вас хватит терпения дойти до конца, это будет вашим бонусом.

Сразу скажу, что процесс создания из демки видео довольно сложен и долог, и требует терпения. Забудьте всякие Fraps и другие программы для записи видео – мы будет действовать хардкорно, по старинке. Сначала мы запустим демо, найдем нужный момент, потом будем этот момент оцифровать, а точнее – заставим наш бедный компьютер делать скриншоты (фотографии) игры по 30 раз в секунду. Потом мы всё это огромное количество фото объединим, сделаем видео, а потом, если хотите, наложим звук. Звучит довольно просто, не так ли?

Запись демо

Первый шаг – заснять демо. Я буду рассматривать случай с обычным киллом от первого лица – этот способ доступен всем. Если вы не в курсе, игра может записывать весь процесс от первого лица в .dem файле. Это не вызывает никакой нагрузки на игру и никак не повлияет на качество картинки. Проблема в том, что воспроизвести этот .dem файл сможет только сама игра. Кстати, есть ещё один вариант – запись HLTV демо, это уже серверное решение, выглядит так: кто-то запускает запись  HLTV, клиент подключается к серверу как обычный игрок, и сидит в Spectators и просто всё записывает. Потом любой может скачать этот файл, открыть его, и просмотреть любой момент игры с любого ракурса – очень круто, согласны? Именно так и делаются ролики от третьего лица, но это, как я уже говорил, немного не наша тема. Мы пишем pov-демку, от первого лица (то есть от вас). Для этого просто пишем в консоли

record demoname

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

stop

Не забывайте, что запись демо автоматически останавливается при смене карты.

Проигрывание демки

Удачные моменты записаны, перейдем к следующему пункту – вопроизведение демо-файла. Как мы помним, наша демка лежит в папке /cstrike или /cstrike_russian, и для её воспроизведения есть 2 команды: viewdemo demoname и playdemo demoname. Разница в том, что viewdemo запускает демо с бегунком для редактирования времени, а playdemo – просто запускает демо. Сразу видно, что viewdemo намного удобней, так что пишем в консоли

viewdemo demoname

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

stopdemo

или нажатием на кнопку «Stop» в окошке с бегунком.

Оцифровка демки

Отлично, теперь перейдем к самому интересному – оцифровке. Как я уже писал выше, мы будем делать по 30 кадров в секунду. Для этого существует команда startmovie moviename FPS, где moviename – это имя для нашего мувика (я думаю, вы уже поняли, откуда пошло слово «мувик», да?), а FPS (frames per second) – это количество кадров в секунду – обычно это либо 25, либо 30.  Все кадры будут сохраняться в папку /cstrike или /cstrike_russian – в общем туда же, где лежит демка.

Lifehack: если в будущем вы будете пользоваться сборкой HLAE, у вас будет возможность указать папку, куда записывать файлы.

Как вы понимаете, просто воспроизводить нам игру и показывать по 100 кадров в секунду (обычно рекомендуют играть с FPS именно 100, то есть максимальным. это не относится к записи видео), и воспроизводить и ещё попутно делать по 30 кадров в секунду и сохранять их на жесткий диск – это немного разные вещи, так что при записи видео вы наверняка столкнетесь с немного замедленным процессом воспроизведения, который, возможно, будет сопровождаться скрежетом старенького жесткого диска – ничего страшного. Лично у меня на ПК с процессором intel i5 3570k, видеокартой GeForce GTX670 и обычным жестким (не твердотельным) накопителем с 7200 оборотами в минуту игра «замедлилась» где-то в полтора раза, на старом (очень, очень старом) ПК игра замедлялась раз в 10. Думаю, если писать кадры на SSD – игра и вовсе не будет замедляться. Впрочем, это не очень важно.

Кстати, я говорил, что нужно довольно много места на накопителе? При формате картинок 1920х1020 (а у меня сейчас именно такое разрешение) каждая будет весить по 6 мегабайт, то есть 1 секунда с 30 кадрами будет весть 30*6 = 180 мегабайт. 10 секунд – почти 2 ГБ. Чуть не забыл, кадры будут делаться с тем разрешением, которые выставлено у вас в настройках компьютера, но если в игре у вас стоит другое разрешение – кадры будут просто растягиваться. Так что когда изначально записывал на FullHD мониторе кадры из игры, где стоит разрешение 800×600, вышло, мягко говоря, некрасиво: огромные картинки с растянутым изображением. Не надо так.

Но вернемся к процессу съемки. Для удобства записи, а также учитывая ценность каждой снятой секунды, рекомендую вам забиндить кнопки с командами для записи и остановки записи видео. Делается это так:

bind "f1" "startmovie moviename 30"
bind "f2" "endmovie"

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

Ну что же, теперь всё готово. Запускаем демо, ждем нужный момент, жмем F1, ждем пока запишется нужное, жмем F2, останавливаем демо. Готово, клиент игры можно даже закрыть, если вы уверены что всё сделали правильно, и не придется переделывать.

Собираем картинки в видео

Следующий шаг довольно простой – нам нужно собрать все картинки в одно единое целое. Для этого мы воспользуемся программой pkBmp2Avi, скачать можно с нашего сервера. Нужно распаковать архив, запустить pkBmp2Avi.exe, указать путь до папки /cstike или /cstrike_russian, и внизу кликаем на первую по счёту картинку. Внизу вводим нужный FPS (если снимали 30 кадров в секунду – то и собирать видео нужно с таким же FPS), и можно указать путь к .wav файлу – тогда программа склеит видео и к тому же добавит аудио, но учтите, что у вас не будет возможности редактировать исходный ролик. Вы можете либо забить на это и просто вставить крутую вырезку из крутой песни, либо отнестись посерьезней и добавить к видео звуки из игры (об этом написано ниже), либо не добавлять ничего, просто сделать видео, а потом обрабатывать его в профессиональном редакторе вроде Sony Vegas, с наложением музыки и прочего. Жмём на «Create» и выбираем кодек для сжатия – тут можно и поэкспериментировать, лично у меня при использовании кодека Intel быстро компилировалось видео объемом 700 мб, а кодек CinemaPak довольно долго компилировал, но в итоге получилось видео с объемом всего 70 мб – а это уже приемлемо. Уже можно запилить в ютуб:

Запись со звуком

Если вы всё же решили сделать видео со звуками стрельбы, вам придётся посидеть подольше. Сначала скачаем программу для записи звука - Audacity. Она бесплатная, никаких проблем с установкой быть не должно. Насколько я понял за 5-10 минут изучения информации, это самая простая программа для захвата аудио.

Затем убедитесь, что программа пишет звук со звуковой платы, а не с микрофона, если всё же с микрофона – то либо попробуйте поковыряться в настройках программы, либо идем в пуск – панель управления, ищем и выбираем пункт про «звук», переходим на страницу «запись», где должны быть показаны звукозаписывающие устройства. Там жмем правой кнопкой и выбираем «показывать все устройства», и когда появится устройство «mix audio», или «стерео микшер», или что-то вроде такого, жмём на него правой кнопкой и включаем. Опять проверяем в Audicity, откуда пишется звук.

Самое сложное в программе – начать запись. Проблема в том, что программа не может начать записывать звук по нажатию клавиш из игры, как хотелось бы. Приходится сначала начать записывать звук в программе, потом переключаться в CS, там начинать запись мувика, потом опять выходить и прекращать запись звука. А потом нужно будет долго и нудно синхронизировать звук. Я рекомендую делать это в нормальных редакторах вроде Sony Vegas.

Бонус

В самом начале я упомянул видео от MovieNation, в котором видна установка специального клиента игры, а также есть примеры создания интересных, хороших мувиков. Если у вас хватит терпения – посмотрите, и попробуйте сами. Туториал очень хороший. Можно скачать с сайта MovieNations, а также продублирую на своём сервере.

На этом всё, друзья. Приветствуются ссылки на ваши работы в комментариях.

Спонсоры: пиво Bud, напиток Red bull, сок Моя семья.

Понравился урок? Поделись со всеми!

Ещё из категории Уроки CS игры

Поделись своими мыслями!

(обязательно)
(обязательно)

Почтовые адреса не публикуются.

Подпишись на комментарии

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: