Немножко про создание видеоигры. Заполнение текстов

Любая игра должна с чего-то начинаться. Как и книга или фильм. Мне всегда нравилось, когда есть повествование истории. Поэтому подумал, как бы сделать так, чтобы создалось ощущение, будто мы играем в чьих-то воспоминаниях.


Первое, что вспомнилось, как начинается мультфильм Шрек 2001 года. Идет наводка камеры на книгу, которая открывается, перелистывается и начинается повествование. Красиво!


Но мы пошли другим путем. И вот, что получилось:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Исходные данные: Unity 3d, парочка симпатичных ассетов и желание сделать интересно (получилось или нет, на ваш суд, господа).


Предпринятые шаги:


1. Анимация движения камеры:

В аниматоре создаем клип и записываем движение камеры (если кому интересно более подробно узнать про создание анимации движения объекта в Unity, дайте знать в комментариях, сделаю отдельный пост). Изменяем позицию, вращение и угол обзора камеры.

Выглядит это так:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

2. Заполнение текста:

2.1 Заполнение текста осуществляется кодом функции. Скрипт с функцией вешаем на камеру и в анимации камеры, кликнув правой кнопкой мыши на верхней темной линии добавим анимационное событие:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

И выбираем функцию:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

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


2.2 Создание скрипта:

Что за тексты мы будем заполнять. Их 4:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Создаем скрипт, назовем его FillTexts и пропишем 4 публичных текстовых переменных и сохраним скрипт:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Дальше назначим каждый текст своей переменной:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Пропишем сами тексты, которые хотим изобразить:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

tempText - это та переменная, которая будет отображаться в конкретный момент для того или иного текста. Понятнее станет чуть ниже ;)


Очистим тексты при запуске сцены:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Сама функция, которая запускается в анимации:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

textIs - переменная, отвечающая за то, какой в данный момент заполняется текст. То как только анимация запускает эту функцию мы говорим: заполняется первый текст.


Заполнение будет происходить в функции Update(), стандартная функция Unity, которая запускается каждый фрейм.

Мы хотим сделать эффект записей. Значит, если мы будем писать новую букву каждый фрейм, будет очень быстро. Нужно сделать пропускание n-го числа фреймов и писать новую букву каждый 5-й раз, например.

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Для пропускания n-го количества фреймов использую переменные step, fasterStep (если хочу пропускать меньше фреймов и быстрее заполнять тексты) и ts (счетчик, который считает количество пропущенных фреймов).

Логика пропуска фреймов линии 41 - 47


Линии 49-61 - логика заполнения текста. В данном случае первого. Когда первый текст заполнится, переменная textIs принимает значение 2. Переходим к заполнению второго текста:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Как видим, логика заполнения такая же. Переходим к тексту 3.

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

В данном случае, когда заполнится третий текст, мы хотим, чтобы скорость заполнения четвертого текста стала быстрее. Для этого меняем step на fasterStep.

Четвертый текст заполняется по такой же логике, что и остальные:

Немножко про создание видеоигры. Заполнение текстов Gamedev, Unity, Unity3D, Medieval, Анимация, Инди, Компьютерные игры, Видеоигра, Геймеры, Steam, Разработка, Game Art, Гифка, Видео, Длиннопост

Больше текстов нет, поэтому textIs, принимая значение 5, просто закончит всю полезную работу скрипта.


P.S. постарался сделать код как можно понятнее, поэтому есть повторяющиеся блоки (опытные программисты, привет), новички, надеюсь, вам понравилась идея и вы ее попробуете.


Это мой первый пост про создание игр. Вернее, одной игры. Делаю ее уже 5-й год. Но это уже совсем другая история.

Если кому интересно, в инстаграме меня можно найти leonardo.island

Там все остальные ссылки.


Спасибо за внимание и напоследок видео (качество съедает, правда):

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

6.8K поста22.2K подписчик

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

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

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

1
Автор поста оценил этот комментарий
Благодарю! Очень много полезного фидбека собрал. Оказалось, дневник разработки вести на пикабу очень полезно. )) Так что присоединяйтесь, коллега!
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо!))

1
Автор поста оценил этот комментарий
5 лет? Долго
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

В отдельном посте расскажу подробнее, но, чтобы было понятно: 5 лет назад пришла идея сделать игру. А о Unity вообще ничего не знал. Так что 5 лет включает в себя обучение программированию и дизайну в Blender. И да, долго!!! ахахаха ужасно хочу уже подойти к завершающей стадии!!

1
Автор поста оценил этот комментарий
О, было бы здорово почитать об этом! Подписался везде.) Буду ждать пост! Всего вам наилучшего, сил и терпения в разработке!
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо!! Да, аналогично! Еще вчера видел ваш пост про встроенный интерфейс вроде жизней на рюкзаке! Чертовски понравилось!!

показать ответы
1
Автор поста оценил этот комментарий
Проект заинтриговал! Особенно, после просмотра материалов в инстаграме. А где-то есть исчерпывающая информация по игре? В виде статьи или другой форме? Просто не очень удобно просматривать отдельные посты в инстаграме, да и информация в постах там скорее обрывочная.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я ждал этого комментария!! Спасибо за интерес!! Настроение поднято на весь день)

На данный момент такого места с исчерпывающей информацией, к сожалению, еще не сделал. Сайт находится на стадии разработки. Но все будет! Вы можете подписаться на меня в инстаграмме или здесь. Планировал сделать отдельный пост: о чем игра, как менялась идея, идея на данный момент. Спасибо!!

показать ответы
Автор поста оценил этот комментарий

Я понимаю, что пост в основном о другом, но анимация камеры выглядит как "катсцена для бедных", когда игра перехватывает управление и куда-либо ведет. Я думал что это записано на игровом движке фрапсом, причем с одного дубля.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Использовал OBS. Что конкретно вы имеете ввиду? "Катсцена для бедных" мне ни о чем не говорит. Если есть какие-то мысли, было бы интересно послушать.

Автор поста оценил этот комментарий

это сознательная "квадратность" ? я словно в 2003 год попал

раскрыть ветку (1)
Автор поста оценил этот комментарий

Вообще подумал, вы правы. Переделаю. Будет лучше. Сделаю пост, вас отмечу.

1
Автор поста оценил этот комментарий
В общем то что вам нравится это здорово, но в целом ассеты должны быть сопоставимы по количеству треугольников.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо

Автор поста оценил этот комментарий

это сознательная "квадратность" ? я словно в 2003 год попал

раскрыть ветку (1)
Автор поста оценил этот комментарий

Хотя стол мне тоже нравится. Ромбиком. Дело вкуса.

Автор поста оценил этот комментарий

это сознательная "квадратность" ? я словно в 2003 год попал

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы
1
DELETED
Автор поста оценил этот комментарий
Изучи корутины и не мучай update такими вещами ))
раскрыть ветку (1)
Автор поста оценил этот комментарий

Корутины) Знаем, любим, применяем) Но не в данном контексте)