Введение
Среда разработки программного обеспечения, предназначенная для создания видеоигр.
Игровой движок — это программный каркас, разработанный преимущественно для разработки видеоигр и обычно включающий соответствующие библиотеки и вспомогательные программы, такие как редактор уровней. Термин "движок" аналогичен термину "программный движок", более широко используемому в индустрии программного обеспечения. Игровой движок также может относиться к программному обеспечению для разработки, поддерживающему этот каркас, как правило, представляющему собой набор инструментов и функций для разработки игр. Разработчики могут использовать игровые движки для создания игр для видеоигровых консолей и других типов компьютеров. Основные функции, обычно предоставляемые игровым движком, могут включать в себя движок рендеринга ("рендерер") для 2D или 3D-графики, движок физики или обнаружение столкновений (и обработку столкновений), звук, скрипты, анимацию, искусственный интеллект, сетевое взаимодействие, потоковую передачу данных, управление памятью, многопоточность, поддержку локализации, сцену графов и поддержку видео для кинематографических роликов. Разработчики игровых движков часто оптимизируют процесс разработки игр, повторно используя/адаптируя в значительной степени один и тот же игровой движок для создания различных игр или для облегчения переноса игр на несколько платформ.
Цель
Во многих случаях игровые движки предоставляют набор инструментов визуальной разработки в дополнение к многократно используемым программным компонентам. Эти инструменты обычно поставляются в интегрированной среде разработки, чтобы обеспечить упрощенную и быструю разработку игр, основанную на данных. Разработчики игровых движков часто стремятся предугадать потребности разработчиков, создавая надежные программные пакеты, включающие множество элементов, которые могут потребоваться для создания игры. Большинство игровых движков предоставляют средства, облегчающие разработку, такие как графика, звук, физика и функции искусственного интеллекта (ИИ). Эти игровые движки иногда называют «промежуточным программным обеспечением» (middleware), поскольку, подобно бизнес-определению этого термина, они предоставляют гибкую и многократно используемую программную платформу, которая сразу же обеспечивает всю основную функциональность, необходимую для разработки игрового приложения, одновременно снижая затраты, сложность и время выхода на рынок — все критически важные факторы в высококонкурентной индустрии видеоигр. Как и другие типы промежуточного программного обеспечения, игровые движки обычно обеспечивают абстракцию платформы, позволяя одной и той же игре работать на различных платформах (включая игровые консоли и персональные компьютеры) с минимальными или отсутствующими изменениями в исходном коде игры. Часто программисты разрабатывают игровые движки с компонентно-ориентированной архитектурой, которая позволяет заменять или расширять определенные системы в движке более специализированными (и часто более дорогими) компонентами игрового промежуточного программного обеспечения. Некоторые игровые движки состоят из серии слабо связанных компонентов игрового промежуточного программного обеспечения, которые можно выборочно комбинировать для создания пользовательского движка, вместо более распространенного подхода расширения или настройки гибкого интегрированного продукта. Однако, расширяемость остается высоким приоритетом для игровых движков из-за широкого спектра областей их применения. Несмотря на специфичность названия «игровой движок», конечные пользователи часто используют игровые движки для других видов интерактивных приложений, требующих графики в реальном времени, таких как маркетинговые демонстрации, архитектурные визуализации, учебные симуляции и среды моделирования. Некоторые игровые движки предоставляют только возможности 3D-рендеринга в реальном времени, а не широкий спектр функциональности, необходимой для игр. Эти движки полагаются на разработчика игры для реализации остальной функциональности или сборки ее из других компонентов игрового промежуточного программного обеспечения. Такие движки обычно называют «графическим движком», «движком рендеринга» или «3D-движком», а не более общим термином «игровой движок». Эта терминология используется непоследовательно, поскольку многие полнофункциональные 3D-игровые движки называют просто «3D-движками». Примеры графических движков включают: Crystal Space, Genesis3D, Irrlicht, OGRE, RealmForge, Truevision3D и Vision Engine. Современные игровые или графические движки обычно предоставляют сцену — объектно-ориентированное представление 3D-игрового мира, которое часто упрощает дизайн игры и может быть использовано для более эффективного рендеринга обширных виртуальных миров. С устареванием технологий компоненты движка могут устаревать или оказываться недостаточными для требований проекта. Поскольку разработка совершенно нового движка может привести к нежелательным задержкам (или потребовать перезапуска проекта с самого начала), команда разработчиков движка может решить обновить существующий движок новыми функциями или компонентами.
История
До появления игровых движков игры обычно разрабатывались как единые сущности: игра для Atari 2600, например, должна была быть спроектирована с нуля для оптимального использования аппаратного обеспечения дисплея. Этот базовый программный модуль дисплея сегодня разработчики игр для старых систем называют ядром. Другие платформы предоставляли больше свободы, но даже когда дисплей не был проблемой, ограничения памяти часто срывали попытки создать дизайн, требующий большого объема данных. Даже на более гибких платформах очень мало что можно было повторно использовать между играми. Быстрое развитие аркадного оборудования — лидера рынка в то время — означало, что большая часть кода в любом случае приходила в негодность, поскольку последующие поколения игр использовали совершенно иные игровые конструкции, использующие дополнительные ресурсы. Таким образом, большинство игровых проектов 1980-х годов создавались на основе жестко закодированного набора правил с небольшим количеством уровней и графических данных. С наступлением золотого века аркадных видеоигр, компаниям, разрабатывающим видеоигры, стало обычным делом разрабатывать собственные игровые движки для использования с программным обеспечением первого уровня. Заметным примером игрового движка для домашних консолей в середине 1980-х годов был плавный движок боковой прокрутки, разработанный командой Сигеру Миямото в Nintendo для Nintendo Entertainment System (NES). Движок, разработанный ими для гоночной игры с боковой прокруткой Excitebike (1984), позже был использован для платформера с прокруткой Super Mario Bros. (1985). Это позволило Марио плавно разгоняться от ходьбы к бегу, а не двигаться с постоянной скоростью, как в более ранних платформерах. Хотя сторонние игровые движки не были распространены до появления 3D-компьютерной графики в 1990-х годах, в 1980-х годах было создано несколько систем для создания 2D-игр для независимой разработки видеоигр. Среди них: Pinball Construction Set (1983), War Game Construction Kit от ASCII (1983), Thunder Force Construction (1984), Adventure Construction Set (1984), GameMaker от Garry Kitchen (1985), Wargame Construction Set (1986), Shoot 'Em Up Construction Kit (1987), Arcade Game Construction Kit (1988) и, наиболее популярные, движки RPG Maker от ASCII, начиная с 1998 года. Klik & Play (1994) — еще одно устаревшее предложение, которое до сих пор доступно. Термин «игровой движок» появился в середине 1990-х годов, особенно в связи с 3D-играми, такими как шутеры от первого лица с движком шутера от первого лица. Epic Games, основанная разработчиком Тимом Суини, представила Unreal Engine в 1998 году. Игры Doom и Quake от Id Software были настолько популярны, что вместо того, чтобы начинать с нуля, другие разработчики лицензировали основные части программного обеспечения и разрабатывали собственную графику, персонажей, оружие и уровни — «игровой контент» или «игровые ресурсы». Разделение игровых правил и данных от базовых концепций, таких как обнаружение столкновений и игровые объекты, позволило командам расти и специализироваться. Современные игровые движки — одни из самых сложных приложений, когда-либо написанных, часто включающие десятки тщательно настроенных систем, взаимодействующих для обеспечения точно контролируемого пользовательского опыта. Продолжающаяся эволюция игровых движков привела к четкому разделению рендеринга, скриптов, графики и дизайна уровней. Например, сейчас в типичной команде разработчиков игр художников в несколько раз больше, чем программистов. Шутеры от первого лица остаются основными пользователями сторонних игровых движков, но теперь они также используются и в других жанрах. Например, ролевая видеоигра 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-х годов, которые также считаются игровыми движками, такие как системы Adventure Game Interpreter (AGI) и SCI от Sierra, система SCUMM от LucasArts и движок Freescape от Incentive Software (в 1986 году). В отличие от большинства современных игровых движков, эти игровые движки никогда не использовались в сторонних продуктах (за исключением системы SCUMM, которая была лицензирована и использовалась Humongous Entertainment). По мере развития и повышения удобства использования технологии игровых движков, область их применения расширяется. Теперь они используются для серьезных игр: визуализации, обучения, медицинских и военных симуляций, в качестве примера можно привести CryEngine. Чтобы облегчить эту доступность, новые аппаратные платформы теперь являются целью игровых движков, включая мобильные телефоны (например, телефоны Android, iPhone) и веб-браузеры (например, WebGL, Shockwave, Flash, Trinigy's WebVision, Silverlight, Unity Web Player, O3D и чистый DHTML). Кроме того, все больше игровых движков создаются на основе языков программирования более высокого уровня, таких как Java и C#/. NET (например, TorqueX и Visual3D. NET), Python (Panda3D) или Lua Script (Leadwerks). Поскольку большинство 3D-игр с богатой графикой теперь в основном ограничены графическим процессором (то есть мощностью видеокарты), потенциальное замедление из-за накладных расходов на трансляцию языков более высокого уровня становится незначительным, в то время как повышение производительности, предлагаемое этими языками, идет на пользу разработчикам игровых движков. Эти последние тенденции продвигаются такими компаниями, как Microsoft, для поддержки независимой разработки игр. Microsoft разработала XNA в качестве SDK для всех видеоигр, выпущенных на Xbox и связанных продуктах. Это включает канал Xbox Live Indie Games, предназначенный специально для небольших разработчиков, у которых нет достаточных ресурсов для выпуска игр в розничной продаже. Разрабатывать игровые движки для платформ, поддерживающих управляемые платформы, становится все легче и дешевле.
Игровые движки как отрасль
Производители игровых движков определяют, как пользователи могут использовать их продукты. Игровая индустрия – это индустрия, и сами движки, на которых она построена, тоже. Ведущие игровые движки предлагаются по разным ценам, будь то в виде подписки или лицензионных платежей. В настоящее время Unity и Unreal Engine – два самых популярных варианта для разработчиков игр. Несмотря на то, что различия между игровыми движками стираются по мере того, как они добавляют собственные инструменты, разработчики могут быть слишком привыкшими к определенной системе, чтобы переходить на другую, или же привлекаются значительными преимуществами этих движков, несмотря на необходимость оплаты.
Среднее ПО игры
В более широком смысле этого термина, игровые движки сами по себе могут быть описаны как промежуточное программное обеспечение. Однако в контексте видеоигр термин "промежуточное ПО" часто используется для обозначения подсистем функциональности внутри игрового движка. Некоторые игровые промежуточные программы выполняют только одну задачу, но делают это более убедительно или эффективнее, чем промежуточное ПО общего назначения. Четыре наиболее широко используемых пакета промежуточного ПО, предоставляющих подсистемы функциональности, включают 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 для скомпилированной двоичной библиотеки. Некоторые программы промежуточного обеспечения могут быть лицензированы как в одном, так и в другом варианте, обычно за более высокую плату за полный исходный код.