Автоматизирует создание видео из демок для игры Need For Kill.
Набор из четырех утилит для развертывания на выделенном сервере (требуется видеокарта для запуска игры).
Заложена возможность параллельного запуска на разных серверах с передачей согласованных результатов на сайт статистики. Для этого достаточно изменить appid
в config.xml.
Проект запущен на выделенном сервере и продюсирует видео от последних сыгранных игр на http://www.youtube.com/user/needforkilldemo
Запрашивает информацию о демке из API сайта статистики, скачивает файл демки запускает ndm2video.exe
для создания из нее видео файла. При запуске не создает окон, предназначена для запуска по планировщику (раз в минуту с запретом дублирующего процесса).
- управляет appid (увеличивает его в виде
appidНОМЕР
, если в папке уже есть json файлы с предыдущим номером appid) - скачивает демку с сайта статистики, для которой еще не создано видео, через определенный appid
- запускает
ndm2video
с необходимыми параметрами столько раз, сколько игроков в демке - по одному видео от первого лица для каждого игрока - при успешном создании всех видео для всех игроков создает json файл с информацией о демке, иначе, если
ndm2video
завершился с ошибкой, — удаляет незаконченный видео файл
Создает видео файл из демки. Консольная программа, может работать отдельно с параметрами запуска через командную строку.
- в autoexec.cfg добавляются команды в числе которых avi_start
- запускается nfk.exe
- при появлении первой картинки в basenfk, меняется следуемый игрок путем посыла нескольких команд nextplayer
- здесь же запускается утилита ffmpeg с захватом видео из окна игры
- по окончании проигрывания демки (время задается в параметрах запуска) nfk.exe убивается, а за ним и ffmpeg закрывается сам с готовым видео файлом
- если в конфиге
ParallelEncoding
=false
, то выполняются следующие раунды (кодирование и склеивание с видео заставкой)
Используется опционально для кодирования видео (запускает все раунды, кроме первого — запись видео делается через ndm2video
). Уменьшается общее время создания видео за счет параллельного кодирования видео. Но для этого потребуется SSD, поскольку обычный диск не справится с одновременным записью и кодированием видео и в некоторых видео будут лаги. Консольная программа, может работать отдельно с параметрами запуска через командную строку. При запуске не создает окон, предназначена для запуска по планировщику (раз в минуту с запретом дублирующего процесса).
- мониторит json файлы, если в json параметр
demo.local_completed
=false
то выполняет дальнейшие шаги - если в конфиге
ParallelEncoding
=true
, то кодирует все видео файлы, которые были сделаны черезndm2video
(сжимает до приемлемого размера) - при успешном кодировании всех видео устанавливает
demo.local_completed
=true
, иначе удаляет json файл, чтобыndm2video
дополнил недостающие видео
Работает отдельно, загружает видео на Youtube. При запуске не создает окон, предназначена для запуска по планировщику (раз в минуту с запретом дублирующего процесса). Возможно добавить несколько заданий в планировщике, переименовав в разные файлы nfkuploader1.exe
, nfkuploader2.exe
, и т.д.
-
мониторит json файлы, читает из них информацию о демке, имена видео файлов для закачки на YouTube; если в json параметр
demo.local_completed
=true
то выполняет дальнейшие шаги -
загружает файл демки на файловый хостинг mega.co.nz
-
загружает видео файлы на YouTube, в описание вставляется информация о демке, ссылка на сайт статистики и ссылка на скачивание файла демки с mega.co.nz
-
по окончании загрузки посылает YouTube ссылки на сайт статистики
-
по окончании загрузки выполняет команду из опции конфига
YoutubeUploadCompleteExec
(по-умолчанию записывает текст вmessage.txt
)
Irc bot, запускается отдельно в качестве службы.
message.lua
плагин, в новом потоке проверяет файлmessage.txt
на обновления- при обнаружении изменения файла добавляет в очередь текст из файла, и через 20 минут посылает его на канал
#nfk
(с задержкой — чтобы видео успелось обработаться на Youtube) - дополнительно, с запуском раз в 5-10 минут, в планировщик можно добавить Powershell скрипт
planetchecker.ps1
, он будет отправлять сообщение на канал#nfk
черезirccdctl.exe
, когда на NFK планете в игре не хватает одного игрока