?. ТЕОРЕТИЧЕСКОЕ ОБОСНОВАНИЕ РАЗРАБОТКИ
ИГРОВОГО ПРИЛОЖЕНИЯ
1.1. Обзор сред разработки и языков программирования
Для создания нашего игрового приложения нам нужно выбрать иг-ровой движок (среда разработки), а также язык программирования.
Игровой движок (англ. «game engine») – это основной набор про-граммных компонентов и визуальных инструментов, который позволя-ет создавать и запускать интерактивные приложения с графическим обеспечением, которое обрабатываются в реальном времени.
Существуют множество различных игровых движков различной сложности и доступности. Мы рассмотрим некоторые из них.
Unreal Engine – это современный игровой движок на базе языка C++, разработкой и поддержкой которого занимается компания Epic Games. Возможности UE позволяют создавать и редактировать элементы 3D анимации, спецэффекты в кинофильмах и играх, а также разрабатывать различные обучающие программы. Код приложения на этом движке ра-ботает на большинстве современных платформ и операционных систем (Android, iOS, Linux, Mac OS, Microsoft Windows, PlayStation 4, PSP, Xbox One, PS Vita). Таким образом, одной из особенностей движка Unreal En-gineявляется его универсальность (рис.1).
Рис.1. Игра Fortnite на Unreal Engine
На движке Unreal Engine создаются множество игр и приложений. Его возможности используется известными студиями разработки игр, та-кими как Rocksteady Studios, Irrational Games, Epic Games и многими дру-гими. Также, движок задействован в разработке приложений для образо-вания или предприятий: Bentheim interior design, Louisiana State University in Shreveport, HKS и т.д. В итоге мы выявили преимущества и недостатки движка Unreal Engine 4 для пользователя.
Преимущества:
1) бесплатная версия;
2) наличие мощного и интуитивно понятного редактора;
3) визуализация элементов редактора в реальном времени;
4) blueprints (чертежи) удобны для реализации базовой логики;
5) интеграция с C++;
6) отличное качество графики;
7) универсальность кода для различных платформ.
Недостатки:
1) нехватка документации по функциям C++ движка UE;
2) возможная путаница в «чертежах»;
3) медлительность мобильной разработки;
4) требование современного "железа" ПК.
Далее мы рассмотрим игровой движок CryEngine.
CryEngine стал известным после выхода Crysis — прорывной для своего времени игры. На нём вышло очень много крутых больших игр: первый Far Cry, MechWarrior Online, Sniper: Ghost Warrior 3, Armored Warfare, Homefront: The Revolution, Prey 2017-го года (рис.2).
Рис.2. Игра Prey на CryEngine
Платформы: ПК, консоли и VR.
Движок отличается продвинутыми возможностями по разработке видеоигр и поддержкой самых передовых технологий, включая DirectX 12, Vulkan API, VR, написание скриптов на C#, попиксельное освещение в ре-альном времени, карты отражений, детализированные текстуры, туман, поверхности с бликами, реалистичную физику, продвинутую анимацию и многое, многое другое.
Есть у движка и недостатки. Так, многие разработчики отмечают трудности при работе с ним, возникающие из-за сложности сборки билда, наличия багов в редакторе, скромного выбора ассетов, ограничений для разработки сетевой игры, а также отсутствия хорошей техподдержки и ак-тивного комьюнити, в результате чего часто приходится решать проблемы методом проб и ошибок.
Язык разработки: C++, С#. Есть Marketplace с ассетами.
Стоимость движка: распространяются бесплатно для всех желающих, но с условием выплаты Crytek 5% прибыли при доходах, превышающих 5000 долларов/евро.
Unity – кроссплатформенный игровой движок для разработки двух-мерных и трехмерных приложений и игр под различные платформы. Со-зданные с помощью Unity игры и приложения работают на таких опера-ционных системах, как: Windows, OS X, Android, iOS, Linux, Blackberry, а также на игровых приставках Wii, PlayStation и Xbox. Приложения, со-зданные с помощью Unity, поддерживают DirectX и OpenGL (рис.3).
Рис. 3. Интерфейс среды разработки Unity
С помощью Unity можно создавать видеоигры любых жанров. Раз-работчик может легко импортировать текстуры, модели и звуки. Для тек-стур поддерживаются все популярные форматы изображений. Создание скриптов осуществляется, в основном, с помощью C#, хотя коды можно писать и на JavaScript. Достоинством Unity можно считать мгновенная компиляция, хорошая документация, богатый набор, простота использо-вания. Недостатки: не супермощная графика, по сравнению с мощными аналогами, нет исходного кода.
Проведём сравнительный анализ вышеперечисленных игровых движков в таблице 1.
Сравнительный анализ игровых движков
Таблица 1
Движки Достоинства Недостатки
Unity быстрое и удобное прототипи-рование;
бесплатная версия для начи-нающих разработчиков и сту-дентов;
совместимость с любой плат-формой;
разработка как небольших, так и AAA-проектов;
во встроенном магазине до-ступно более 50.000 ассетов медленная работа алгорит-ма сжатия
ограниченный инструмен-тарий. Многое придется допиливать самостоятель-но;
закрытый исходный код. Словите баг — придется ждать обновления;
нестабильность редактора и отладчика.
CryEngine
множество инструментов для работы с графикой;
гибкая ценовая политика: ба-зовая версия бесплатна, пока проект не заработает 5000$;
поддержка DirectX 12, Vulkan API, VR;
относительно простая настройка ИИ, если сравнивать с Unity и UE4;
в комплекте с базовой версией идет GameSDK — полноцен-ный шутер, который адапти-руется; под ваши нужды. Эда-кий современный аналог Source Engine. высокий порог вхождения;
техподдержка медленно работает;
разработка для мобильных устройств и портативных консолей не поддерживает-ся;
комьюнити состоит из опытных разработчиков, давно работающих на этом движке и не горящих жела-нием помогать новичкам;
ограничения при разработ-ке многопользовательских проектов.
Unreal Engine широкий набор инструментов;
удобный интерфейс;
огромное количество докумен-тации и обучающих роликов;
бесплатна, пока не начнет при-носить прибыль;
возможность кастомизации на любой вкус.
высокий порог вхождения;
для комфортного исполь-зования требуется мощная конфигурация ПК;
неудобные инструменты для создания 2D игр;
многочисленные баги при разработки бесшовных ми-ров;
дорогие ассеты во встроен-ном магазине
Из таблицы видно, что данные движки очень популярные, мощные, сложно выбрать какой именно нам подойдет, но мы выбираем все-таки Unity зато, что имеет все хорошие качества и простоту использования. Анализировав среды разработки для создания нашего игрового приложе-ния, мы выбрали Unity.
Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяю-щих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Python — высокоуровневый язык программирования общего назна-чения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программи-рование. Основные архитектурные черты — динамическая типизация, ав-томатическое управление памятью, полная интроспекция, механизм обра-ботки исключений, поддержка многопоточных вычислений, высокоуров-невые структуры данных. Поддерживается разбиение программ на моду-ли, которые, в свою очередь, могут объединяться в пакеты.
Python имеет такие достоинства как:
1) простая в использовании;
2) кроссплатформенность, позволяющий работать на более чем одной аппаратной платформе и/или операционной системе;
3) наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности.
Недостатки языка Python:
1) динамическая типизация может стать источником проблем в крупных проектах;
2) появляется повышенная необходимость в юнит-тестах;
3) в некоторых случаях может не хватить производительности, но есть возможность использования/написания нативных модулей;
4) нужно знать и понимать, как готовить многопоточность.
JavaScript – мультипарадигменный язык программирования. Под-держивает объектно-ориентированный, императивный и функциональный стили. Является реализацией языка ECMAScript. JavaScript обычно ис-пользуется как встраиваемый язык для программного доступа к объектам приложений.
Преимущества JavaScript:
1) ни один современный браузер не обходится без поддержки Ja-vaScript;
2) с использованием написанных на JavaScript плагинов и скрип-тов справится даже не специалист;
3) полезные функциональные настройки;
4) постоянно совершенствующийся язык – сейчас разрабатывает-ся бета-вариация проекта, JavaScript2;
5) взаимодействие с приложением может осуществляется даже че-рез текстовые редакторы – Microsoft Office и Open Office;
6) перспектива использования языка в процессе обучения про-граммированию и информатике.
Недостатки JavaScript:
1) пониженный уровень безопасности ввиду повсеместного и сво-бодного доступа к исходным кодам популярных скриптов;
2) множество мелких раздражающих ошибок на каждом этапе ра-боты. Большая часть из них легко исправляется, но их наличие позволяет считать этот язык менее профессиональным, сравнительно с другими;
3) повсеместное распространение. Своеобразным недостатком можно считать тот факт, что часть активно используемых программ (осо-бенно приложений) перестанут существовать при отсутствии языка, по-скольку целиком базируются на нем.
C# объектно-ориентированный язык программирования, относящий-ся к семье языков с C-подобным синтаксисом, из них его синтаксис наибо-лее близок к C++ и Java, да и сам этот язык широко распространён среди программистов. Язык имеет статическую типизацию, поддерживает поли-морфизм, перегрузку операторов. Очень просто писать процессы, которые знают друг о друге и взаимодействуют, так и понятней и значительно лег-че специализировать объекты в Unity. В C# есть три типа: число, строка, и объект (ну а функции и массивы и есть объекты).
Плюсы языка программирования C#:
1) поддержка компанией Microsoft. В отличии от Java, которой не пошел на пользу переход в собственность Oracle, C# хорошо развивается благодаря усилиям Microsoft;
2) в последнее время много совершенствуется. Так как C# был со-здан позже, чем Java и другие языки, то требовалось очень много дорабо-тать. Также это касается популяризации и бесплатности - было обещано открыть исходный код, а инструменты (Visual Studio, Xamarin) стали бес-платными для частных лиц и небольших компаний;
3) много синтаксического сахара. Синтаксический сахар - это такие конструкции, которые созданы для облегчения написания и понимания ко-да (особенно если это код другого программиста) и не играют роли при компиляции;
4) средний порог вхождения. Синтаксис похожий на C, C++ или Ja-va облегчает переход для других программистов. Для новичков это также один из самых перспективных языков для изучения;
5) Xamarin. Благодаря покупке Xamarin на C# теперь можно писать под Android и iOS. Это, несомненно, большой плюс, так как их собствен-ная мобильная ОС (Windows Phone) не завоевала большой популярности;
6) добавлено функциональное программирование (F#);
7) большое сообщество программистов;
8) много вакансий на должность C# программиста в любом регионе.
Минусы языка программирования C#:
1) ориентированность, в основном, только на .NET (на Windows платформу);
2) бесплатность только для небольших компании, учащихся и программистов-одиночек. Для больших команд покупка лицензий обой-дется недешево. Поэтому если у вас есть своя фирма, то придется раско-шелиться;
3) сохранили оператор goto.
Проведём небольшой сравнительный анализ языков программиро-вания. Данные будут отображены в таблице 2.
Сравнительный анализ языков программирования
Таблица 2
Возможности C# Python JavaScript
Макросы +/- + -
Интерфейсы + + -
Мульти методы +/- +/- -
Кортежи + +/- -
Многомерные массивы + + +/-
Инструкция goto + + -
Создание объектов на стеке + + -
Ручное управление памя-тью + + -
Компилятор + + +
Типизация + + -
Проанализировав таблицу, выявили лучшие и худшие стороны названных языков программирования, после чего мы выбрали объектно-ориентировочный язык программирования C# для разработки нашего иг-рового приложения.
1.2. Обоснование выбора технологий разработки игры
В качестве среды разработки компьютерных игр выбрали Unity. Uni-ty позволяет создавать приложения, работающие под более чем 20 раз-личными операционными системами, включающими персональные ком-пьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие. Выпуск Unity состоялся в 2005 году и с того времени идёт по-стоянное развитие.
На Unity написаны тысячи игр, которые охватывают множество платформ и жанров. При этом Unity используется как крупными разра-ботчиками, так независимыми студиями. Любой пользователь может при желании заняться построением своих творческих идей или даже создание крупных приложений.
С помощью Unity можно разрабатывать приложения, имеющих функцию кроссплатформенности, включающими персональные компьюте-ры, игровые консоли, мобильные устройства, интернет-приложения и дру-гие. Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие, каждый день игры выходят тысячами на движке Unity, так как среда бесплатная и общедоступная.
Для работы над командами и скриптами на языке программирования C#, нами был выбран мощнейший инструментарий Visual Studio 2020.
Visual Studio
Visual Studio — это полнофункциональная среда для разработки программного обеспечения. Visual Studio позволяет создавать практически все типы программ, начиная с небольшого мобильного приложения и за-канчивая созданием 3D видеоигр. Visual Studio включает в себя множество инструментов для тестирования и отладки кода.
Плюсы
• Одна из самых больших библиотек расширений и плагинов;
• Инструменты автоматизации;
• Поддержка большинства языков программирования;
• Возможность мониторинга производительности в реальном вре-мени;
Минусы
• Программа использует очень много системных ресурсов. Для запуска требуется достаточно мощный компьютер;
• В отличие от Eclipse и NetBeans которые распространяются бес-платно, Visual Studio имеет платные версии с расширенным функциона-лом, которые распространяется по подписке.
Также мы использовали для работы над спрайтами и текстурами многофункциональный графический редактор Adobe Photoshop, разрабо-танный и распространяемый фирмой Adobe Systems. В основном работает с растровыми изображениями, однако имеет некоторые векторные ин-струменты. Продукт является лидером рынка в области коммерческих средств редактирования растровых изображений и наиболее известным продуктом фирмы Adobe.
Adobe Photoshop
Многофункциональный графический редактор, разрабатываемый и распространяемый компанией Adobe Systems. В основном работает с растровыми изображениями, однако имеет некото-рые векторные инструменты. Продукт является лидером рынка в области коммерческих средств редактирования растровых изображений и наибо-лее известной программой разработчика. [15]
1.3. Анализ аналогичных проектов
Russian Fishing 4 - это рыболовный симулятор с элементами RPG, игровой процесс которого основан на концепции открытого мира и пол-ной свободе действий игрока, показана на рисунке 4.
Рис. 4. Russian Fishing 4
Ключевые особенности игры:
• на данный момент в игре 11 водоемов с уникальными погод-ными условиями и разнообразным набором рыб.
• более 80 видов рыб, и со временем их количество будет увели-чиваться.
• свободное перемещение по водоему
• возможность рыбачить как с берега, так и с лодки.
• различные виды ловли, такие как поплавочная, донная и спин-нинговая. каждый из них тщательно проработан с учетом реального ры-боловного опыта, и включает в себя разнообразные оснастки и техники ловли.
• как и в реальной жизни, поведение рыб может меняться в зави-симости от погодных условий, времени суток и прочих факторов.
• вам предоставлены широкие возможности по развитию навы-ков и умений, как соответствующих выбранной специализации, так и со-путствующих: изготовление приманок, добыча наживок и даже кулинария.
• рейтинги игроков, их достижения и статистика.
• разнообразные состязания с ценными призами.
• изучайте повадки рыб
• получайте новые знания, чтобы собрать идеальную снасть и поймать трофей, о котором мечтали.
• поймайте по-настоящему большую рыбу, и займите свое место в таблице рекордов.
Fishing Planet – это не просто игра о рыбалке. Благодаря потрясаю-щей графике, сверхреалистичной физике повреждений снастей, гидро и аэродинамике, и самое главное, искусственному интеллекту рыбы, осно-ванному на реальном поведении – Вы в прямом смысле слова окажетесь на водоеме и сможете улучшать и оттачивать свои реальные рыболовные навыки, показана на рисунке 5.
Рис.5. Fishing Planet
Главные особенности игры:
• 120+ видов рыбы, каждая со своим уникальными поведением и ии
• 19 живописных водоемов с разными климатическими условия-ми, рельефами дна и растительностью
• три вида рыбалки - поплавочная, спиннинговая и донная
• тысячи комбинаций снастей, с уникальными физическими и гидродинамическими свойствами
• каяки и 3 вида разнообразных моторных лодок: металлические плоскодонки, резиновые моторки и бассовые лодки, которые отличаются параметрами скорости, прочности и другими характеристиками
• динамическая вода, с рябью на поверхности в зависимости от ветра, течения и глубины
• погода – смена дня и ночи, сезонов и погодных условий (дождь, туман, солнце)
• мультиплеер – онлайн соревнования с личным и командным зачетом, системой достижений, лидербордами и топами победителей.
Cat Goes Fishing – компьютерная игра симулятор рыбалки аркадно-го типа. Главным персонажем, которым необходимо будем управлять ко-том, показана на рисунке 6 и 7.