Сообщество - Лига Разработчиков Видеоигр
Добавить пост

Лига Разработчиков Видеоигр

6 541 пост 22 044 подписчика

Популярные теги в сообществе:

Делаю Vampire Survivors Like игру

Привет! Сегодня сделал пробный тизер для своей новой игрушки, зацените :)

«Кошмары ипотечной квартиры» - визуальная новелла про взрослую жизнь

Всем привет! Я хочу рассказать о моей новелле «Кошмары ипотечной квартиры» и поделиться прогрессом разработки.

Это история о Лене - обычной девушке, которая взяла в ипотеку квартиру с призраками. Изгнать новых соседей не так просто, поэтому вариантов не так много - надо просто с ними ужиться, параллельно справляясь с повседневными делами: оплатой счетов, снятием показаний счетчика и, конечно же, работой.

«Кошмары ипотечной квартиры» - визуальная новелла про взрослую жизнь Визуальная новелла, Разработчики игр, Дневник разработки, Длиннопост

Вся игра будет в стиле аниме с использованием нейросетей для генерации фонов. В дополнение к небольшому интерактиву (типа ответа на звонок) я хочу сделать передвижение по локациям и дневник, где будут важные заметки об ипотеке и взрослой жизни (например, об оплате коммуналки). Всего я планирую выпустить шесть эпизодов бесплатно на Itch.io и VK Play.

«Кошмары ипотечной квартиры» - визуальная новелла про взрослую жизнь Визуальная новелла, Разработчики игр, Дневник разработки, Длиннопост

В команде всего пять человек: я (сценарист), композитор, программист и два художника персонажей (для сюжетной графики и для спрайтов). Игра будет на движке Ren'Py, если это, конечно, важно. Просто я никогда никому не рассказывала о своих играх, кроме моего молодого человека:)

На данный момент готовится к выходу эпизод 0.5 - он будет доступен в VK Play как демоверсия. В нём будет три сюжетных арта и самое начало истории Лены.

«Кошмары ипотечной квартиры» - визуальная новелла про взрослую жизнь Визуальная новелла, Разработчики игр, Дневник разработки, Длиннопост

Я буду очень рада, если вы будете следить за проектом и оставлять отзывы о разработке! Я всегда открыта для предложений и идей)

Показать полностью 3

Жена попросила сделать угадайку чисел

Супруга увидела в тиктоке фоновую игру с угадыванием цифр, поискала в аппсторе - не нашла. Попросила сделать.

Сделяль:

Жена попросила сделать угадайку чисел Инди игра, Игры, Инди, Числа, Головоломка

Если бы залетело, добавил бы прирост опыта с возможностью угадывать больше цифр (типа 4 минимум, а так можно хоть до 10, там уже вопрос чисто в порядке расположения был бы), но вроде и так пока норм.

Для желающих оценить и высказаться: тык

Warning: в приложении каждые 3 игры идет короткая реклама. По тапу на подсказку - длинная реклама.

Показать полностью 1

Что вы думаете об онлайн-курсах? Поделитесь мнением!

Онлайн-курсов становится все больше, и нам интересно собрать статистику, чтобы лучше понимать запросы читателей Пикабу.

Пожалуйста, поделитесь своим мнением!

Сделал браузерную игру "Филворды"

Игра, в которой надо находить слова на поле с буквами.

Сделал браузерную игру "Филворды" Сайт, Инди игра, Игры, Филворды, Браузерные игры, Инди

Дизайн пока сыроват, будет дорабатываться. Как и функционал.

На данный момент можно выбрать размер сетки. На данный момент есть 3х3, 4х4, 6х6 и 8х8.

Если какое-то слово вам незнакомо, вы можете нажать на него чтобы прочитать описание.

Буду благодарен за конструктивную критику.

https://fillwords.ru/

Показать полностью

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash Программирование, Разработка, Gamedev, Инди игра, Инди, YouTube, Youtube Shorts, Видео, Длиннопост

Продолжаю серию материалов о своей «хакерской» игре. Ранее я рассказывал об ее процессе разработки, а сегодня затрону не менее важную часть — маркетинг.

Для продвижения игры я начал публиковать Shorts на YouTube, но это отнимало много времени и ресурсов. Будучи инженером, я стараюсь автоматизировать рутинные задачи, поэтому сделал решение, которое самостоятельно нарезает видео на 60-секундные фрагменты.


Проблема инди-игр

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

Существует огромное количество гайдов по маркетингу инди-игр. Мне удалось не только ознакомиться с ними, но и опробовать на практике. Ниже делюсь своими выводами, которые могут помочь начинающим gamedev-разработчикам.

  • Контента должно быть много. Необходимо показать игру как можно большему количеству людей, чтобы они узнали и добавили ее в вишлист.

  • Частота публикации важнее уникальности. Конечно, адаптировать контент под каждую соцсеть — круто, но это отнимает много времени и ресурсов. Эффективнее публиковать несколько простых материалов, чем один уникальный.

  • Вертикальные видео дают хорошие охваты. Причем необязательно даже записывать свой голос, достаточно показать игровой процесс.

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

Небольшой лайфхак для увеличения охвата на YouTube. Если при постинге видео убрать галочку Publish to subscriptions feed and notify subscribers, то знакомые с игрой люди не будут видеть его в своей ленте.

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash Программирование, Разработка, Gamedev, Инди игра, Инди, YouTube, Youtube Shorts, Видео, Длиннопост

Окно с параметрами видео перед публикацией


Что было раньше

Сейчас у меня есть два основных YouTube-канала — игровой и личный. На первом публикую горизонтальные и вертикальные видео для продвижения своей игры. Часть из них уходят в GameJolt, Reddit и другие площадки. На втором — только горизонтальные, но некоторые из них посвящаю разработке игр.

Для монтажа я использую CapCut. В личном канале делаю видеоряд и накладываю звук, а в игровом — добавляю сгенерированный голос. Процесс этот довольно затратный, из-за чего нередко страдает стабильность публикаций. Подливает масла в огонь неудобство генерации голоса из-за ограничений в 300 символов за раз. Приходится генерировать озвучку в несколько этапов, что сильно замедляет подготовку нового контента.

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash Программирование, Разработка, Gamedev, Инди игра, Инди, YouTube, Youtube Shorts, Видео, Длиннопост

Ограничение по тексту


Возможности для автоматизации

Решение автоматизировать процесс долго вынашивать не пришлось, но какие здесь есть возможности для этого? Рассмотрю несколько примеров.

  1. Нарезать горизонтальные видео, чтобы получать больше охватов.

  2. Автоматизировать генерацию голоса и визуала для создания видео. Более того, можно анимировать маскот, от лица которого буду вести повествование.

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash Программирование, Разработка, Gamedev, Инди игра, Инди, YouTube, Youtube Shorts, Видео, Длиннопост

Маскот игры

3. Автоматизировать производство горизонтальных видео за счет подбора визуала. Для этого буду использовать контент из пула видео и хэш-таблицы тегов на основе семантического анализа текста.

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

Итак, мне нужен «черный ящик» для горизонтальных видео, который будет:

  • менять формат с 16:9 на 9:16,

  • заполнять лишнее пространство размытым фоном,

  • нарезать видео в соответствии с таймкодом, но не более 60 секунд,

  • добавлять текст с нумерацией выпуска и призывом посмотреть полное видео.


Выбор инструментария и философия

Не вижу смысла заморачиваться с UI, поэтому буду использовать bash-скрипты. Для обработки видео выбираю библиотеку FFMPEG — поверхностное изучение показало, что ее будет достаточно. Устанавливаю на MacOS с помощью Homebrew:

brew install ffmpeg

Пакеты для других платформ можно найти здесь.

Чтобы продолжить движение этого проекта в рамках философии UNIX, я нашел инструмент для загрузки YouTube-видео из терминала — youtube-dl. С его помощью я удалил свое первое отрендеренное видео.

Утилита проста в использовании. Сперва запрашиваю доступные форматы для скачивания видео:

youtube-dl -F "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

После — получаю список:

[info] Available formats for dQw4w9WgXcQ:

format code  extension  resolution note

249  webm  audio only tiny  46k , webm_dash container, opus @ 46k (48000Hz), 1.18MiB

250  webm  audio only tiny  61k , webm_dash container, opus @ 61k (48000Hz), 1.55MiB

140  m4a  audio only tiny  129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 3.27MiB

251  webm  audio only tiny  129k , webm_dash container, opus @129k (48000Hz), 3.28MiB

...

398  mp4  1280x720  720p  657k , mp4_dash container, av01.0.05M.08@ 657k, 25fps, video only, 16.62MiB

399  mp4  1920x1080  1080p 1180k , mp4_dash container, av01.0.08M.08@1180k, 25fps, video only, 29.83MiB

248  webm  1920x1080  1080p 1556k , webm_dash container, vp9@1556k, 25fps, video only, 39.34MiB

137  mp4  1920x1080  1080p 3024k , mp4_dash container, avc1.640028@3024k, 25fps, video only, 76.45MiB

18  mp4  640x360  360p  343k , avc1.42001E, 25fps, mp4a.40.2 (44100Hz) (best)

Пометка best  — это не лучший формат, а формат с заранее склеенным видео и аудио.

Выбираю нужный формат для видео — в моем случае webm (251) и mp4 (137). Чтобы не скачивать их по-отдельности, использую опцию сложения:

youtube-dl -f 137+251 "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

Не уверен, что она доступна для всех видео, — нужно проверять.
С подготовкой разобрались! Время создать скрипт.


Написание кода

  1. Смена формата видео и размытый фон

Для этой задачи не нужно создавать отдельный скрипт. Решение будет выглядеть следующим образом:

ffmpeg -i video.mp4 -filter_complex \

"[0:v]scale=-1:1920,crop=1080:1920,gblur=sigma=20[bg]; \

[0:v]scale=1080:-1[ov]; \

[0:a]volume=1.0[audio];

[bg][ov]overlay=(W-w)/2:(H-h)/2[mix]" \

-map "[mix]" -map "[audio]" -r 60 result.mp4 -y

Команда запускает библиотеку FFMPEG, чтобы передать на вход файл video.mp4. Применяю к нашему потоку filter_complex. Ниже расскажу, какие фильтры я использовал.

Вторая строка скрипта пропорционально меняет ширину нулевого видеопотока 0:v на его длину scale=-1:1920. Обрезает видео до вертикального формата crop=1080:1920 и размывает фон gblur-sigma=20. После — возвращает преобразованное видео в новый поток bg.

Третья строка снова берет 0:v, пропорционально меняет его длину на ширину scale=1080:-1 и возвращает результат в новый поток ov.

Аналогично преобразовываю аудио, чтобы оно не исчезло. Возможно, получится сделать это намного проще, но напрямую аудиопоток в map не отправить. Поправьте в комментариях, если вы знаете другой способ.

В четвертой строке смешиваю потоки bg и ov и располагаю видео в центре экрана overlay=(W-w)/2:(H-h)/2. Результат перемещаю в mix. После — отправляю потоки в финальный файл при помощи -map"[mix]" -map "[audio]".
Выставляю 60 FPS и сохраняю результат в result.mp4. Флаг -y перезаписывает файл, если он уже существует.

YouTube Shorts из терминала. Как автоматизировать создание видео с помощью FFMPEG и Bash Программирование, Разработка, Gamedev, Инди игра, Инди, YouTube, Youtube Shorts, Видео, Длиннопост

Результат

Начало положено! Нам удалось сэкономить минуту работы ценой всего нескольких часов исследований. Разве это не прекрасно?

2. Нарезка видео

Если длительность видео превышает 60 секунд, то YouTube не пропустить его в раздел Shorts. Для этого нужно модифицировать предыдущий скрипт.

Более того, хочу нарезать видео не просто на куски по 60 секунд, а разделять их на логические части. В описании под видео есть проставленные таймкоды. Значит я могу просто скопировать этот текст и передать в скрипт, а он уже обрежет видео автоматически. Приступим!

Для таймкодов на YouTube использую следующий формат:

00:00 - Text
01:40 - Text2

Их легко можно преобразовать в массив секунд:

time_codes=()

while read -r line; do

minutes=${line:0:2}

seconds=${line:3:2}

minutes="$(printf "%.0f" "$minutes")"

seconds="$(printf "%.0f" "$seconds")"

time_codes+=("$(($minutes*60+$seconds))")

done < $2

Если расстояние между таймкодами больше 60 секунд, их нужно отредактировать. Конечно, можно автоматизировать это разбиение, но так я рискую обрывать видео на нелогичных моментах.

Далее смотрю на длительность видео с помощью команды ffprobe:

lengths=()

prev=

for key in "${!time_codes[@]}"; do

if [[ $key == 0 ]]; then

prev=${time_codes[$key]}

else

current=${time_codes[$key]}

length=$((current-prev))

lengths+=("$length")

prev=$current

fi

done


vid_len=$(ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 $1)

vid_len=${vid_len%.*}

length=$((vid_len-prev))

lengths+=("$length")


Теперь к рендерингу самих видео! Для этого модифицирую команду filter_complex:

for i in "${!lengths[@]}"; do

target="${1}_$(($i+1)).mp4"

ffmpeg -ss ${time_codes[$i]} -i $1 -filter_complex \

"[0:v]scale=-1:1920,crop=1080:1920,gblur=sigma=20[bg]; \

[0:v]scale=1080:-1[ov]; \

[0:a]volume=1.0[audio];\

[bg][ov]overlay=(W-w)/2:(H-h)/2[mix];" \

-map [mix] -map [audio]  -t ${lengths[$i]} -r 60 $target -y

done

Здесь я добавил флаг -ss ${time_codes[$i]} для рендеринга с заданного момента в секундах, а также -t ${lengths[$i]}, который задает соответствующую длительность видео.

Отлично! Теперь видео подходят для раздела Shorts.

3. Добавление текста

Видео готово, осталось добавить текст. Сверху я буду выводить название видео и номер части, а снизу — призыв посмотреть полную версию. Центрировать текст не получится, поэтому приходиться генерировать каждую строку отдельно. Для удобства закину текст в файл с таймкодами и разобью его на две строки.

Далее модифицирую код, который считывает таймкоды:

name1=""

name2=""

time_codes=()

while read -r line; do

if [[ $name1 == "" ]]; then

name1=$line

elif [[ $name2 == "" ]]; then

name2=$line

else

minutes=${line:0:2}

seconds=${line:3:2}

minutes="$(printf "%.0f" "$minutes")"

seconds="$(printf "%.0f" "$seconds")"

time_codes+=("$(($minutes*60+$seconds))")

fi

done < $2

Создаю переменные для параметров текста:

text_size=80

margin_top=160

margin_bottom=320

line_spacing=100

font="$HOME/tools/Ubuntu/Ubuntu-Bold.ttf"

text_border=5


Теперь модифицируем команду для генерации клипов:

ffmpeg -ss ${time_codes[$i]} -i $1 -filter_complex \

"[0:v]scale=-1:1920,crop=1080:1920,gblur=sigma=20[bg]; \

[0:v]scale=1080:-1[ov]; \

[0:a]volume=1.0[audio];\

[bg][ov]overlay=(W-w)/2:(H-h)/2,\

drawtext=text='$name1':fontfile=$font:fontcolor=white:fontsize=$text_size:x=w/2-text_w/2:y=$margin_top\

:bordercolor=black:borderw=$text_border,\

drawtext=text='$name2':fontfile=$font:fontcolor=white:fontsize=$text_size:x=w/2-text_w/2:y=$margin_top+$line_spacing\

:bordercolor=black:borderw=$text_border,\

drawtext=text='Часть $(($i+1))':fontfile=$font:fontcolor=white:fontsize=$text_size:x=w/2-text_w/2:y=$margin_top+$line_spacing*2+20\

:bordercolor=black:borderw=$text_border,\

drawtext=text='Полное видео':fontfile=$font:fontcolor=white:fontsize=$text_size:x=w/2-text_w/2:y=h-$margin_bottom-$line_spacing\

:bordercolor=black:borderw=$text_border,\

drawtext=text='на канале':fontfile=$font:fontcolor=white:fontsize=$text_size:x=w/2-text_w/2:y=h-$margin_bottom\

:bordercolor=black:borderw=$text_border[mix];" \

-map [mix] -map [audio]  -t ${lengths[$i]} -r 60 $target -y

Несмотря на большое количество кода, все довольно просто. В блоке с размытием фона появилось пять команд drawtext. У каждой есть текст, шрифт, цвет, размер, позиция по x, позиция по y, цвет и толщина обводки.

Результат.


Заключение

У меня получилось довольно удобное решение, которое уже не раз помогло мне сэкономить время. Некоторые строки я захардкодил, но это поправимо. Также планирую добавить выбор языка при помощи флага в shell-скрипте. Для русского все работает уже так.

Изначально у меня были мысли встроить в пайплайн загрузку готовых видео, но YouTube воспринимал их как спам и блокировал. Если у кого-то получилось адекватно автоматизировать данный процесс, делитесь своим опытом в комментариях. Буду очень благодарен.

Показать полностью 4 1

MMORPG Rage Battles: Запуск реферальной системы и новая экипировка | Девлог 2

MMORPG Rage Battles: Запуск реферальной системы и новая экипировка | Девлог 2 Инди игра, Telegram, Gamedev, RPG, Инди, Длиннопост, Telegram (ссылка)

Cвершилось! Новое и очень важное обновление нашей игры Rage Battles!

Мы наконец-то добавили в игру шлемы, а получить их можно совершенно бесплатно.

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

Кроме уникальных шлемов также добавлены: каменный топор, каменная булава, капюшон пчеловода и балахон оборванца. Последние относятся к примитивным вещам; получить предметы можно в награду при прохождении Заброшенной шахты.

Как использовать реферальную систему?

Чтобы воспользоваться реферальной системой необходимо выполнить несколько простых действий:

  1. Открыть бота нашей игры

MMORPG Rage Battles: Запуск реферальной системы и новая экипировка | Девлог 2 Инди игра, Telegram, Gamedev, RPG, Инди, Длиннопост, Telegram (ссылка)

2. Перейти в Библиотеку из Главного меню

MMORPG Rage Battles: Запуск реферальной системы и новая экипировка | Девлог 2 Инди игра, Telegram, Gamedev, RPG, Инди, Длиннопост, Telegram (ссылка)

3. Выбрать пункт Реферальная программа

MMORPG Rage Battles: Запуск реферальной системы и новая экипировка | Девлог 2 Инди игра, Telegram, Gamedev, RPG, Инди, Длиннопост, Telegram (ссылка)

4. Поделиться вашей ссылкой с друзьями

Полный список нововведений

  • Добавлена реферальная система (находится в Библиотеке), по которой, приведя друга, можно получить уникальные шлемы: Маска чумного доктора, Маска дракона, Шлем ужаса.

  • В игру введены предметы примитивной экипировки: Каменный топор, Каменная булава, Капюшон пчеловода и Балахон оборванца, которые можно получить после первого проигрыша на арене или подземелье.

  • Нововведение чата: отправив команду /info в чате, можно вывести информацию о своем персонаже; отправив данную команду ответом на чье-либо сообщение, Глашатый выведет информацию об этом человеке.

  • По просьбам игроков кнопка «Написать игроку» после поединка смещена ниже.

  • Монстры в подземелье теперь могут менять свою тактику боя раз в неделю.

  • Доработали английскую локализацию игры.

Увидимся на полях сражений Великой Тонканы! Официальный канал - https://t.me/ragebattles

Показать полностью 4

Как сделать крутую стрелочку под кнопкой Wishlist на Steam-е

Увидел на какой-то страничке игры в Steam прикольную идею. Прыгающая стрелочка показывает на кнопку Wishlist. Классно подталкивает к правильному действию, на мой взгляд. Сделал себе так же. Способ очень простой:

  1. В начале длинного описания вставить ссылку на страничку игры.

  2. Сразу после - гифка со стрелкой.

Можете зайти посмотреть на страничку игры в Steam, как получилось. И завишлистить заодно.

Еженедельный геймдев-дайджест!

Valve обновляет семейный доступ к играм на Steam

Еженедельный геймдев-дайджест! Unreal Engine, Blender, Steam, Telegram (ссылка)

Valve вводит семейные группы Steam, обновляя и расширяя возможности совместного доступа к играм. Теперь до 6 членов семьи могут делиться играми, при условии нахождения в одном регионе. Это обновление заменяет Steam Family Sharing и функцию семейного просмотра, делая игровой процесс ещё более удобным и доступным. 🕹👨‍👩‍👧‍👦

AMD выпускает FSR 3.1 — новый уровень изображения в играх

Еженедельный геймдев-дайджест! Unreal Engine, Blender, Steam, Telegram (ссылка)

AMD представляет FSR 3.1, технологию, которая значительно улучшает стабильность изображения, уменьшает эффект гостинга и обеспечивает кристально чистое изображение как в статике, так и в динамике. Ratchet & Clank: Rift Apart станет одной из первых игр с поддержкой этой новейшей технологии. 🎮✨

Blender открывает официальный Asset Store

Еженедельный геймдев-дайджест! Unreal Engine, Blender, Steam, Telegram (ссылка)

Для всех поклонников и профессионалов 3D-моделирования, Blender представляет свой официальный Asset Store. Теперь пользователи могут наслаждаться бесплатными дополнениями и темами с открытым исходным кодом, полностью совместимыми с Blender 4.2. Это открывает новые горизонты для творчества и разработки в мире 3D

Следите за нашим каналом, чтобы быть в курсе самых свежих и захватывающих новостей из мира технологий! https://t.me/geek_hub_x

Показать полностью 3
Отличная работа, все прочитано!