Вы находитесь на странице: 1из 12

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Высшая школа информационных технологий и информационных систем

ОТЧЕТ О ПРОХОЖДЕНИИ ПРОИЗВОДСТВЕННОЙ ПРАКТИКИ

Digital Media Lab


Студент группы 11-603______________________________Козар Богдан Александрович
подпись (Ф.И.О.)

Руководитель практики от ИТИС:


Старший преподаватель Кугуракова В. В.__________________________________________
(должность, звание, Ф.И.О.)
Оглавление
Введение .................................................................................................................. 3
Основной концепт ................................................................................................. 4
Начало работы ....................................................................................................... 4
Основная часть ...................................................................................................... 5
Визуальная часть ................................................................................................ 10
Заключение ........................................................................................................... 12

2
Введение
После того как была сформирована группа и распределены
обязанности, появилась задача сделать игру в жанре «файтинг», что для нас
являлось в новинку, в которой в обязательном порядке должны
присутствовать следующие темы: Good and Evil, Revolution. В качестве
игрового движка была выбрана Unity. Для работы с 3D моделями была
выбрана программа Autodesk Maya, для работы с текстурами – Adobe
Photoshop. А также для работы со звукозаписью и аудио – FL-Studio 12.
Обязанности и работы были распределены следующим образом:
Андрей отвечал за всю работу с 3D объектами, рисование спрайтов
для разверток, создание локаций, а также курирование в этой области.
Айдар взялся за создание локации и 3D моделирование.
Работа в команде заключалась в полной технической реализации
задуманного. (скрипты, аудио, пост обработка…)

Рис. 1 – Тестовая сцена для работы с моделями

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

Рис. 2 – Тестовая сцена для создания эффектов

Начало работы
В начале опираясь на предыдущий
опыт в разработке было решено сделать самое
важное в техническом плане – Плавное
управление камерой (рис. 4) и игроком. А
также начать прописывать искусственный
интеллект.
На протяжении первой недели была
проделана колоссальная работа с анимацией и
созданием слоев (Layers) для взаимодействия
игрока с противником.
Рис. 3 – Layers
4
Основная часть
После того как были прописаны удобное управление, распределены
hitbox’ы, hurtbox’ы, pushbox’ы (…и другие боксы) и найдены приемлемые
анимации, началась работа с управлением модели персонажа.
Первоначально планировалось сделать один скрипт для управления
всем персонажем, но в последующих возникших ситуациях от этой идеи
отказались. Самым оптимальным на тот момент выходом было отделись все
части на отдельные скрипты (анимацию, нажатие кнопок, движение,
состояния). Было это сделано так же по причине создания собственного
искусственного интеллекта, дабы облегчить управление состояниями (рис. 5).

Рис. 4 – Управление камерой

5
Рис. 5 – Состояния персонажа

Также это значительно упрощало создание различных комбо ударов,


используя 3 и больше кнопки для атаки. Для каждого удара было прописаны
тип атаки, коллайдер и задержка для включения коллайдера в случае
длинных анимаций (рис. 6).

Рис. 6 – Анимации персонажа и скрипты


6
Рис. 7 – Переменные для ИИ и его
состояния

Создание ИИ было хоть и самой важной задачей, но и самой сложной


в реализации. Так как ранее были отсортированы все состояния, анимации и
движение, нужно было всего лишь все это соединить в один скрипт для
управления. У самого ИИ есть искусственная задержка и анализ
происходящего.
Первое что проверяет противник – это дистанцию между ним и
игроком. Если расстояние меньше заданного значение, состояние меняется
на «близкое», в обратном случае состояние «нормальное».
Было решено сделать 2 основных состояния: В близи (closeState), на
расстоянии (normalState). От этих состояний ИИ анализировал и решал, что
будет делать дальше.
Также при closeState определяется с помощью переменной
дальнейшие действия. Значение storeRandom каждый ход определялось
7
случайно, и, в случае если оно меньше 60, происходит передвижение. Если
же искусственный интеллект находится на расстоянии, то его множитель
увеличивается, что дает на 30% меньше шанса на удар, в обратном случае
шанс повышается. После чего высчитывается вероятность удара. Если сумма
случайного значения и множителя меньше 50, то выполняется атака.
Атаки заранее записываются, и при использовании метода, случайно
выбирается одна из них. (рис. 8)

Рис. 8 – Набор атак (можно задавать любые)

Не обошло стороной внимание к катсценам перед каждой битвой.


Нужно было вкратце посвятить игрока на какой карте он будет биться и с
кем, так что были прописаны скрипты для начала боя: один отвечал за
проигрывание анимаций камеры, второй за состоянием боя (таймер, здоровье
и т.п.). (рис. 9)

8
Рис. 9 - LevelManager

Также были проведены очень важные работы по исправлению


критических ошибок, которые показали важные аспекты использования
Github и различных веток.

9
Визуальная часть
Большая работа была проделана в визуальной части. На каждой
локации были расставлены Light Probes (рис. 10). Была использована пост
обработка и применена на камеру. (рис. 11)

Рис. 10 – Light Probes на карте «Школа»

В последние дни происходило завершение работ и добавление UI,


который в свою очередь контролировался тем же LevelManager'ом (рис. 9).
Вся технология таймингов и самого таймера была прописана IEnumerator.

10
Рис. 11
Рисунок сверху – без пост обработки
Рисунок снизу – с пост обработкой
11
Заключение
Благодаря данной практике был приобретен очень ценный опыт в
работе с жанром файтинг, а также в создании искусственного интеллекта.
Было освоено написание скриптов, используя состояния и распределение. На
данный момент за эту практику было рассмотрено множество способов
реализаций задач и получен огромный опыт в работе с github, а также в
работе с эффектами (рис. 2). Благодаря слаженной работе в команде и
грамотному распределению обязанностей множество реализаций увидели
свет.
Как итог данная практика позволила еще больше углубиться в
игрострой, понять свои возможности и стать более опытным в этом деле, а
также найти работу по назначению.

12