Игровой движок — это программная среда, предназначенная в первую очередь для разработки видеоигр и обычно включающая соответствующие библиотеки и вспомогательные программы, такие как редактор уровней. [1] Терминология «движка» аналогична термину « программный движок », более широко используемому в индустрии программного обеспечения .
Игровой движок также может относиться к программному обеспечению для разработки, поддерживающему эту среду, обычно это набор инструментов и функций для разработки игр. [2] [3]
Разработчики могут использовать игровые движки для создания игр для игровых консолей и других типов компьютеров . Основные функциональные возможности, обычно предоставляемые игровым движком, могут включать в себя механизм рендеринга («рендерер») для 2D- или 3D- графики , физический движок или обнаружение столкновений (и реакцию на столкновение), звук , сценарии , анимацию , искусственный интеллект , работу в сети , потоковую передачу, управление памятью , многопоточность , поддержка локализации , граф сцены и поддержка видео для кинематографических изображений . Разработчики игровых движков часто экономят на процессе разработки игр , повторно используя/адаптируя по большей части один и тот же игровой движок для создания разных игр [4] или для помощи в портировании игр на несколько платформ.
Во многих случаях игровые движки предоставляют набор инструментов визуальной разработки в дополнение к повторно используемым программным компонентам. Эти инструменты обычно предоставляются в интегрированной среде разработки, что позволяет упростить и ускорить разработку игр на основе данных . Разработчики игровых движков часто пытаются предвосхитить потребности разработчиков, разрабатывая надежные пакеты программного обеспечения, которые включают в себя множество элементов, которые могут понадобиться разработчику игр для создания игры. Большинство комплектов игровых движков предоставляют средства, упрощающие разработку, такие как графика, звук, физика и функции искусственного интеллекта (ИИ). Эти игровые движки иногда называют « промежуточным программным обеспечением », потому что, как и в деловом смысле этого термина, они предоставляют гибкую и многократно используемую программную платформу, которая обеспечивает все основные функции, необходимые прямо из коробки , для разработки игрового приложения при одновременном снижении затрат. , сложность и время выхода на рынок — все это важнейшие факторы в высококонкурентной индустрии видеоигр . [5]
Как и другие типы промежуточного программного обеспечения, игровые движки обычно предоставляют абстракцию платформы , позволяя одной и той же игре запускаться на различных платформах (включая игровые консоли и персональные компьютеры) с небольшими изменениями, если таковые имеются, в исходный код игры . Часто программисты разрабатывают игровые движки с компонентной архитектурой , которая позволяет заменять или расширять определенные системы в движке более специализированными (и часто более дорогими) компонентами промежуточного программного обеспечения игры. Некоторые игровые движки содержат ряд слабо связанных компонентов промежуточного программного обеспечения игры, которые можно выборочно комбинировать для создания специального движка вместо более распространенного подхода расширения или настройки гибкого интегрированного продукта. Как бы то ни было, расширяемость остается высоким приоритетом для игровых движков из-за широкого спектра применений, для которых они применяются. Несмотря на специфику названия «игровой движок», конечные пользователи часто повторно используют игровые движки для других видов интерактивных приложений с графическими требованиями в реальном времени , таких как маркетинговые демонстрации , архитектурные визуализации , обучающие симуляции и среды моделирования . [6]
Некоторые игровые движки предоставляют только возможности 3D-рендеринга в реальном времени вместо широкого спектра функций, необходимых играм. Эти движки полагаются на то, что разработчик игры реализует остальную часть этой функциональности или собирает ее из других компонентов промежуточного программного обеспечения игры. Эти типы движков обычно называются «графическим движком», «движком рендеринга» или «3D-движком» вместо более широкого термина «игровой движок». Эта терминология используется непоследовательно, поскольку многие полнофункциональные игровые движки 3D называются просто «движками 3D». Примеры графических движков: Crystal Space , Genesis3D , Irrlicht , OGRE , RealmForge, Truevision3D и Vision Engine . Современные игровые или графические движки обычно предоставляют граф сцены — объектно-ориентированное представление трехмерного игрового мира, которое часто упрощает игровой дизайн и может использоваться для более эффективного рендеринга огромных виртуальных миров. [ необходима ссылка ] Большинство игровых и графических движков используют графический API , который позволяет легко взаимодействовать с графическим процессором . Но старые игры не имели аппаратного ускорения или графических процессоров, и им приходилось создавать собственный программный рендерер.
По мере старения технологий компоненты двигателя могут устареть или оказаться недостаточными для требований конкретного проекта . Поскольку сложность программирования совершенно нового движка может привести к нежелательным задержкам (или потребовать перезапуска проекта с самого начала), группа разработчиков движка может решить обновить свой существующий движок новыми функциями или компонентами.
До появления игровых движков игры обычно писались как отдельные объекты: например, игра для Atari 2600 должна была разрабатываться снизу вверх, чтобы оптимально использовать аппаратное обеспечение дисплея — эта базовая процедура отображения сегодня называется разработчиками ядром . игр для старых систем. Другие платформы имели больше свободы действий, но даже когда дисплей не вызывал беспокойства, ограничения памяти обычно саботировали попытки создать проект с большим объемом данных, который нужен движку. Даже на более удобных платформах очень мало что можно было повторно использовать между играми. Быстрое развитие аркадного оборудования — которое в то время было передовым преимуществом рынка — означало, что большую часть кода потом все равно придется выбросить, поскольку в последующих поколениях игр будут использоваться совершенно другие игровые дизайны, использующие преимущества дополнительных возможностей. ресурсы. Таким образом, большинство игровых дизайнов 1980-х годов разрабатывались с использованием жестко запрограммированного набора правил с небольшим количеством уровней и графических данных. Со времен золотого века аркадных видеоигр компании, занимающиеся видеоиграми , стали обычным явлением разрабатывать собственные игровые движки для использования со сторонним программным обеспечением.
Ярким примером собственного игрового движка на домашних консолях середины 1980-х годов был движок плавной боковой прокрутки, разработанный командой Сигэру Миямото из Nintendo для Nintendo Entertainment System (NES). Движок, который они разработали для гоночной игры с боковой прокруткой Excitebike (1984), позже был использован в платформере с прокруткой Super Mario Bros. (1985). Это позволило Марио плавно ускоряться от ходьбы до бега, а не двигаться с постоянной скоростью, как в более ранних платформерах. [7]
Хотя сторонние игровые движки не были распространены до появления компьютерной 3D-графики в 1990-х годах, в 1980-х годах было создано несколько систем создания 2D-игр для независимой разработки видеоигр . К ним относятся конструктор для пинбола (1983), конструктор для военных игр ASCII ( 1983), [8] Thunder Force Construction (1984), [9] Adventure Construction Set (1984), GameMaker Гарри Китчена (1985), конструктор для военных игр. (1986), Shoot-'Em-Up Construction Kit (1987), Конструктор для аркадных игр (1988) и, начиная с 1998 года, наиболее популярные движки ASCII RPG Maker . Klik & Play (1994) — еще одно устаревшее предложение, которое все еще доступно. [10]
Термин «игровой движок» возник в середине 1990-х годов, особенно в связи с 3D-играми, такими как шутеры от первого лица с движком шутера от первого лица . Epic games, основанная разработчиком Тимом Суини, дебютировала на Unreal Engine в 1998 году. [11]
Популярность игр Doom и Quake от Id Software была такова , что вместо того, чтобы работать с нуля, другие разработчики лицензировали основные части программного обеспечения и создавали собственную графику, персонажей, оружие и уровни — «игровой контент» или «игровой контент». ресурсы". Отделение правил и данных, специфичных для игры, от базовых концепций, таких как обнаружение столкновений и игровая сущность, означало, что команды могли расти и специализироваться. [10]
Более поздние игры, такие как Quake III Arena от id Software и Unreal 1998 года от Epic Games, были разработаны с учетом этого подхода, при этом движок и контент разрабатывались отдельно. Практика лицензирования такой технологии оказалась полезным дополнительным источником дохода для некоторых разработчиков игр, поскольку стоимость одной лицензии на высококлассный коммерческий игровой движок может варьироваться от 10 000 до миллионов долларов США, а число лицензиатов может достигать нескольких десятков. компаний, как это видно на примере Unreal Engine . По крайней мере, многоразовые движки ускоряют и упрощают разработку сиквелов игр, что является ценным преимуществом в конкурентной индустрии видеоигр . Хотя примерно в 2000 году между Epic и id существовало сильное соперничество, с тех пор Unreal Engine от Epic стал гораздо популярнее, чем id Tech 4 и его преемник id Tech 5 . [12]
Современные игровые движки — одни из самых сложных написанных приложений, часто состоящие из десятков точно настроенных систем, взаимодействующих друг с другом для обеспечения точно контролируемого взаимодействия с пользователем. Продолжающаяся эволюция игровых движков привела к четкому разделению рендеринга, сценариев, графики и дизайна уровней . Сейчас, например, в типичной команде разработчиков игр обычно бывает в несколько раз больше художников, чем настоящих программистов. [13]
В шутерах от первого лица по-прежнему преобладают сторонние игровые движки, но теперь они используются и в других жанрах . Например, ролевая видеоигра The Elder Scrolls III: Morrowind и MMORPG Dark Age of Camelot основана на движке Gamebryo , а MMORPG Lineage II — на движке Unreal Engine. Игровые движки также используются в играх, изначально разработанных для домашних консолей; например, движок RenderWare используется во франшизах Grand Theft Auto и Burnout .
Поточность приобретает все большее значение из-за современных многоядерных систем (например, Cell ) и возросших требований к реалистичности. Типичные потоки включают рендеринг, потоковую передачу, аудио и физику. Гоночные игры обычно были в авангарде многопоточности, когда физический движок работал в отдельном потоке задолго до того, как были перемещены другие основные подсистемы, отчасти потому, что рендеринг и связанные с ним задачи требуют обновления только с частотой 30–60 Гц. Например, на PlayStation 3 физика в Need For Speed работала с частотой 100 Гц, а в Forza Motorsport 2 — с частотой 360 Гц.
Хотя этот термин был впервые использован в 1990-х годах, в 1980-х годах существует несколько более ранних систем, которые также считаются игровыми движками, например системы Sierra Adventure Game Interpreter (AGI) и SCI, система SCUMM LucasArts и система Incentive Software . Движок Freescape (1986 г. [14] ). В отличие от большинства современных игровых движков, эти игровые движки никогда не использовались ни в каких сторонних продуктах (за исключением системы SCUMM, которая была лицензирована и использовалась Humongous Entertainment ).
По мере того, как технология игровых движков развивается и становится более удобной для пользователя, сфера применения игровых движков расширяется. Сейчас они используются в серьезных играх : приложениях для визуализации, обучения, медицины и военного моделирования , одним из примеров является CryEngine . [15] Чтобы облегчить эту доступность, новые аппаратные платформы теперь используются игровыми движками, включая мобильные телефоны (например, телефоны Android , iPhone ) и веб-браузеры (например, WebGL , Shockwave , Flash , Trinigy 's WebVision, Silverlight , Unity Web Player ). , O3D и чистый DHTML ). [16]
Кроме того, все больше игровых движков создаются на языках более высокого уровня , таких как Java и C# / .NET (например , TorqueX и Visual3D.NET ), Python ( Panda3D ) или Lua Script (Leadwerks). Поскольку большинство 3D-игр в настоящее время в основном ограничены графическим процессором (то есть ограничены мощностью видеокарты), потенциальное замедление из-за накладных расходов на перевод языков более высокого уровня становится незначительным, в то время как прирост производительности, предлагаемый этими языками, работает на игровой движок. выгода разработчиков. [17] Эти последние тенденции продвигаются такими компаниями, как Microsoft, для поддержки разработки инди- игр. Microsoft разработала XNA в качестве предпочтительного SDK для всех видеоигр, выпущенных для Xbox, и сопутствующих продуктов. Сюда входит канал Xbox Live Indie Games [18], созданный специально для небольших разработчиков, у которых нет обширных ресурсов, необходимых для упаковки игр для продажи на полках магазинов. Разрабатывать игровые движки для платформ, поддерживающих управляемые платформы, становится проще и дешевле, чем когда-либо. [19]
Производители игровых движков решают, как они позволяют пользователям использовать их продукты. Игры — это индустрия , так же как и двигатели, на которых они построены. Основные игровые движки продаются по разным ценам, будь то в виде абонентской платы или лицензионных платежей. [20] Unity и Unreal Engine в настоящее время являются двумя наиболее популярными вариантами для разработчиков игр. [21] Хотя различия между различными игровыми движками стираются, поскольку они создают на их основе свои собственные инструменты, разные разработчики игр могут быть слишком привыкли к системе, чтобы ее можно было изменить, или быть привлечены огромными преимуществами таких движков независимо от платных условий. .
В более широком смысле этого слова сами игровые движки можно назвать промежуточным программным обеспечением. Однако в контексте видеоигр термин «промежуточное программное обеспечение» часто используется для обозначения функциональных подсистем внутри игрового движка. Некоторые промежуточные программы для игр делают только одну вещь, но делают это более убедительно и эффективнее, чем промежуточные программы общего назначения.
Четыре наиболее широко используемых пакета промежуточного программного обеспечения [22] , которые предоставляют подсистемы функциональности, включают RAD Game Tools 'Bink, Firelight FMOD , Havok и Scaleform GFx. RAD Game Tools разрабатывает Bink для базового рендеринга видео, а также аудио Miles и рендеринга Granny 3D . Firelight FMOD — это недорогая надежная аудиобиблиотека и набор инструментов. Havok предоставляет надежную систему моделирования физики, а также набор приложений для анимации и поведения. Scaleform предоставляет GFx для высокопроизводительного пользовательского интерфейса Flash и высококачественного воспроизведения видео, а также надстройку редактора метода ввода (IME) для поддержки азиатского чата в игре.
Другое промежуточное программное обеспечение используется для оптимизации производительности — например, Simplygon помогает оптимизировать и генерировать сетки с уровнем детализации , а Umbra добавляет оптимизацию отсеивания окклюзии в 3D-графику.
Некоторые промежуточные программы содержат полный исходный код , другие просто предоставляют ссылку на API для скомпилированной двоичной библиотеки . Некоторые промежуточные программы можно лицензировать в любом случае, обычно за более высокую плату за полный исходный код.