Отрывок из Разработка 2D-игр с помощью Unity, (Apress Publishing, 2018) Доступно на сайтах: Amazon, Apress.

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

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

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

Хорошо спроектированные современные игровые движки хорошо справляются с внутренним разделением функциональности. Код игры, который состоит из кода, описывающего такие вещи, как игрок, инвентарь и логика для загрузки определенной фоновой звуковой дорожки для уровня игры, хранится отдельно от кода, который распаковывает файл .mp3 и загружает его в память. Код игрового процесса будет вызывать четко определенные интерфейсы API движка для запроса таких вещей, как «нарисовать этот спрайт в этом месте» и так далее.

Компонентная архитектура хорошо спроектированного игрового движка допускает расширяемость, которая способствует принятию, поскольку команда разработчиков не привязана к заранее определенному набору возможностей движка. Эта расширяемость особенно важна, если исходный код игрового движка недоступен в виде открытого исходного кода или чрезмерно дорого лицензировать. Игровой движок Unity специально создан для поддержки сторонних плагинов. Он даже заходит так далеко, что предоставляет Asset Store, содержащий плагины, доступный через редактор Unity.

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

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

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

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

  • Движок графического рендеринга, поддерживающий 2D или 3D графику
  • Физический движок, поддерживающий обнаружение столкновений
  • Аудиодвижок для загрузки и воспроизведения звуков и музыкальных файлов
  • Поддержка сценариев для реализации логики игрового процесса
  • Мировая объектная модель, определяющая содержание и свойства игрового мира.
  • Обработка анимации для загрузки кадров анимации и их воспроизведения
  • Сетевой код для многопользовательской игры, загружаемого контента и списков лидеров
  • Многопоточность для одновременного выполнения игровой логики
  • Управление памятью, потому что ни у одного компьютера нет неограниченного объема памяти
  • Искусственный интеллект для поиска пути и компьютерных противников

Если вы еще не полностью уверены в использовании игрового движка, рассмотрите следующую аналогию.

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

Первый способ построить дом

Выкопайте землю ручной лопатой до тех пор, пока не будете копать достаточно глубоко, чтобы заложить фундамент. Сделайте бетон, нагрея известняк и глину до 2640 ºF в печи, измельчите и смешайте с небольшим количеством гипса. Возьмите созданный вами порошковый бетон, смешайте его с водой, щебнем или мелким песком и положите фундамент.

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

После этого самое время построить каркас, на который вы будете вешать стены. Бери топор и начинай рубить деревья. Чтобы получить сырье, достаточно вырубить несколько сотен или около того древесины, но теперь вам нужно будет взять каждую древесину и превратить ее в пиломатериалы. Когда вы закончите, не забудьте обработать пиломатериалы, чтобы они были водонепроницаемыми, не гнили и не заражались насекомыми. Постройте балки и балки, на которые вы будете укладывать пол, и вы уже устали? Мы только начинаем!

Второй способ построить дом

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

О первом подходе

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

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

О втором подходе

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

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

В заключение…

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

Если вам понравился этот отрывок из моей книги: Разработка 2D-игр с помощью Unity (Apress, 2018), подумайте о покупке его на Amazon или непосредственно в Apress.

Не забудьте аплодировать этой статье, чтобы другие тоже узнали об этом. Если вы хотите узнать больше о Unity или разработке для iOS, вы можете подписаться на меня здесь, на Medium, а также в Twitter. Мой сайт: https://JaredHalpern.com.

Спасибо за прочтение!