Введение 3
1. Теоретические аспекты технологии «UNET» 5
1.1. Основные тезисы и определения 5
1.2. Понятие «UNET» 9
2. Архитектура и принцип работы «UNET» 11
2.1. Высокоуровневый API (HLAPI) 11
2.2. Низкоуровневый API (LLAPI) 21
2.3. Минусы технологии «UNET» 32
3. Реализация собственного сервера 36
3.1. Подключение к серверу 36
3.2. Обработка событий на клиенте/сервере 41
3.3. Общение клиента с сервером. Ответ сервера клиенту 45
3.4. Игровые события на сервере и клиенте 49
Заключение 58
Список литературы 60
Приложение
Видеоигровая индустрия с каждым годом становится все популярнее. Уже сейчас индустрия компьютерных игр по прибыли стоит на одном пьедестале с киноиндустрией и спортом. В нынешний век информационных технологий интернет-технологии не стоят на месте и развиваются семимильными шагами. Интернет активно входит практически во все сферы деятельности, все чаще и чаще давая нам выполнять огромное количество различных действий практически в любой точке мира. Конечно же, видеоигры не стали исключением. С развитием интернета появился такой термин, как много-пользовательские игры, т.е. игры, позволяющие играть с несколькими игроками одновременно как по локальной сети, так и удаленно по всему свету. Наряду с другими главными критериями в создании такого рода игр является создание сервера.
Сервер в этом случае - связующий элемент не только игроков, но и всех ключевых элементов игры, без которого игра такого жанра попросту не может существовать. Именно поэтому задача создания сервера - не менее, а порой и более важная задача при создании мультиплеерной игры. Актуальной проблемой задачи по созданию сервера является выбор технологии.
Задача заключается в определении языка, с помощью которого можно наиболее легко работать с web-сервисами и технологиями, при этом язык не должен быть слишком сложен для понимания. Так же основными критериями сервера являются скорость работы, масштабирование и стабильная работа. Сервер должен быстро обрабатывать и отвечать на запросы со стороны клиента, обрабатывать информацию и события во время игры. Так же он должен быть максимально масштабируемым, т.к. чем популярнее игра, тем больше в нее играют игроков и чем выше показатель масштабируемости, тем больше игроков могут находиться онлайн в игре одновременно. Главным же показателем является стабильность, т.к. стабильная и бесперебойная работа сервера - самое необходимое в любых онлайн играх и периодические разрывы соединения с сервером могут отрицательно, если не критично повлиять на оценку и популярность игры. Нередко бывали случаи, когда из-за нестабильной работы серверов даже игры крупных и всемирно известных разработчиков теряли своих игроков чуть-ли не в первые месяцы с момента ее выхода.
Одно из решений данной задачи и создания игрового сервера предоставляет компания «Unity Technologies» в своем игровом движке «Unity 3D» в виде технологии под названием «UNET».
Цель данной работы - детально изучить технологию и реализовать игровой сервер на основе этой технологии.
Задачами работы разделены на 2 этапа: изучения и создание. На этапе изучения необходимо будет детально рассмотреть и изучить возможности технологии UNET, особенности, свойства, структуру, плюсы и минусы по сравнению с другими технологиями.
На этапе создания необходимо будет создать собственный сервер, основываясь на полученных данных и знаниях предыдущего этапа. Необходимо будет реализовать запуск сервера и подключение клиента (-ов), общение между сервером и клиентом, а также обработку событий в игре и ответы сер-вера на них клиенту.
Для выполнения работы нам понадобится игровой движок Unity 3D, который предоставляется бесплатно самими разработчиками движка.
В данной выпускной квалификационной работе мы рассмотрели такую технологию, как UNET. Рассмотрели детально все его аспекты, возможности и недостатки, а также на основе полученных знаний создали свой собственный игровой сервер.
Данная технология очень хорошо подходит для разработчиков, которые планируют сделать многопользовательскую игру на движке Unity, т.к. они будут иметь ряд преимуществ. Сервер начинает работать сразу при запуске и так же при запуске начинает обрабатывать стартовые функции и настройки. Технология входит в базовый функционал движка, поэтому разработчикам не придется скачивать что-то дополнительно для работы с ней и имеет общую логику как для клиента, так и для сервера, что облегчает задачи программистам, т.к. им просто нужно разработать общую логику лишь с небольшими отличиями. Так же плюсом является то, что сервер имеет мультиплатформенность, т.е. он может запускаться практически на всех платформах, поддерживаемых Unity.
Однако технология так же имеет и недостатки, такие как ограничение в Unity, т.е. клиентская часть должна быть так же создана в Unity, как и сервер. Ограниченность технологии, связанной с платными сервисами и, наверное, самое главное, отсутствие четкой и детально написанной документации на официальных источниках.
По итогу можно сказать, что данная технология отлично подойдет разработчикам, которые хотят написать игру с небольшими вычислительными данными или не очень крупными проектами на Unity 3D, т.к. с такой возможностью технология справляется на отлично. Для сервера, от которого требуется большие вычислительные процессы и большие потоки данных, данная технология к сожалению, не может быть рекомендована, т.к. разработчики скорее всего будут натыкаться на множество недостатков, что в итоге приведет их к решению выбрать другую технологию для реализации сер¬вера, в то время, как сам клиент так же можно создать с помощью Unity.
Ну и на личном примере, рассмотренном в главе 3 было видно, насколько легко, удобно и быстро можно работать с данной технологией. При желании освоить ее нетрудно, хоть и придется порыться по многочисленным сайтам. Но в целом данная технология — отличное решение как для новичков, так и опытных разработчиков в области разработки видеоигр инди или AA уровня