Игровой движок

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Игрово́й движо́к (англ. game engine) — базовое программное обеспечение компьютерной игры[1]. Разделение игры и игрового движка часто расплывчато, и не всегда студии проводят чёткую границу между ними. Но в общем случае термин «игровой движок» применяется для того программного обеспечения, которое пригодно для повторного использования и расширения, и тем самым может быть рассмотрено как основание для разработки множества различных игр без существенных изменений[2].

Определение

[править | править код]

Термин «игровой движок» появился в середине 1990-х в контексте компьютерных игр жанра шутер от первого лица, похожих на популярную в то время Doom. Архитектура программного обеспечения Doom была построена таким образом, что представляла собой разумное и хорошо выполненное разделение центральных компонентов игры (например, подсистемы трёхмерной графики, расчёта столкновений объектов, звуковой и других) и графических ресурсов, игровых миров, формирующие опыт игрока, игровые правила и другое. Как следствие, это получило определённую ценность за счёт того, что начали создаваться игры с минимальными изменениями, когда при наличии игрового движка компании создавали новую графику, оружие, персонажей, правила игры и тому подобное[2].

Разделение между игрой и игровым движком часто неопределённо. Некоторые движки имеют разумное и ясное разделение, в то же время другие практически невозможно отделить от игры. Например, в игре движок может «знать» о том, как рисовать дугу, в то же время другой движок может работать с другим уровнем абстракции, и в нём дуга будет частным случаем параметров вызываемых функций. Одним из признаков игрового движка является применение архитектуры управления данными. Это определяется тем, что если игра содержит жёсткое кодирование, влияющие на логику, правила игры, рисование объектов и тому подобное, то становится сложно применять данное программное обеспечение в разных играх[2].

Большинство игровых движков разработано и настроено для того, чтобы запустить определённую игру на определённой платформе. И даже наиболее обобщённые многоплатформенные движки подходят для построения игр определённого жанра, например, шутеров первого лица или гонок. В данном контексте можно более аккуратно сказать, что игровой движок становится не оптимальным при его применении не для той игры или той платформы, для которой разработан. Данный эффект проявляется от того, что программное обеспечение представляет собой набор компромиссов, основанных на тех предположениях, какой должна быть игра. Например, проектирование рендеринга внутри зданий приведёт к тому, что движок, скорее всего, не будет таким же хорошим для открытых пространств. В первом случае движок может использовать BSP-дерево для отрисовки объектов, близких к камере. В то же время для открытых пространств могут использоваться менее точные способы, а также более активно применяются технологии отрисовки с разной степенью детализации, когда более далёкие объекты прорисовываются менее чётко, так как занимают меньшее количество пикселей[3].

Специализация

[править | править код]

Как правило, игровые движки специализированы в рамках жанра компьютерных игр. Так, движок, спроектированный для двумерного файтинга на боксёрском ринге, будет существенно отличаться от движка для массовой многопользовательской игры, шутера от первого лица или стратегии в реальном времени. Но в то же время движки имеют существенные общие части — все трёхмерные игры, невзирая на жанр, требуют взаимодействия игрока посредством клавиатуры, геймпада и/или мыши, некоторую форму трёхмерного рендеринга, средства индикации, как на лобовом стекле (например, печать текста поверх графического изображения), звуковую систему и многое другое. Так, движок Unreal Engine, несмотря на то, что был спроектирован для шутера от первого лица, успешно использовался для создания игр во множестве других жанров, таких как шутер от третьего лица Gears of War, приключенческая ролевая игра Grimm[англ.], или футуристичная гонка Speed Star[4].

Исторически шутеры от первого лица относятся к играм, которые наиболее технологически сложны, так как им необходимо представлять игроку иллюзию трёхмерного мира, и делать это для активных действий в реальном времени. Движки шутеров от первого лица больше обращают внимание на такие технологии, как эффективный рендеринг трёхмерных миров, отзывчивая игровая механика контроля и прицеливания, высокая точность анимации оружия и рук управляемого игроком персонажа, широкий спектр ручного вооружения, «прощающая» модель движения игрока и его столкновения с препятствиями, высокое качество анимации и искусственного интеллекта неигровых персонажей. При этом характерны малая масштабируемость в многопользовательских играх (типична поддержка до 64 игроков) и повсеместная ориентация на игровой процесс deathmatch[5]. Графические движки игр данного жанра используют ряд оптимизаций в зависимости от текущего окружения игрока, но вместе с тем предъявляются требования по анимации персонажа, аудио и музыке, динамики твёрдого тела[англ.], кинематике и другим технологиям[6].

Движки платформеров обращают больше внимания на анимацию персонажа и его аватара, и при этом им не требуется той реалистичности, которая присуща трёхмерным шутерам. Для платформеров характерно применение ряда технологий: множество способов перемещения (движущиеся платформы, лестницы, верёвки, подпорки и другие), элементы из головоломок, использование следящей за персонажем камеры от третьего лица, рендеринг нескольких слоев геометрии в сочетании с системой столкновений объектов, и другие[7].

Файтинги ориентированы на богатую анимацию, точность ударов, возможность задания сложных комбинаций посредством кнопок и/или джойстика и тому подобное. Анимационные персонажи предъявляют требования движкам по высокой детализации, дополнительно движки обеспечивают возможность изменения и добавления спецэффектов (шрамов после ударов, выступление пота и тому подобное), а также предоставляются возможности симуляции причёски, одежды и других элементов[8].

Автосимуляторы могут быть разными и здесь имеется ряд поджанров. Графика таких игр ориентирована на «коридорность» и кольцевые треки, и поэтому движки больше обращают внимание на детализацию машин, трека и непосредственное окружение. Как следствие, используются технологии для рендеринга далёких фоновых объектов (отображаемых двумерно), трек часто разделяется на несколько секторов, внутри которых проводится оптимизация по рендерингу. В случае движения по туннелям или другим «тесным» местам используются техники для того, чтобы камера с видом от третьего лица не пересекалась с фоновой геометрией. Используемые структуры данных и искусственный интеллект ориентируются на решение задач машин неигровых персонажей, таких как поиск пути и других технических проблем[9].

У стратегий реального времени нет высоких требований к графике и поэтому движок ориентируется на то, что отображает юнитов в низком разрешении, но при этом он должен быть способен работать с большим числом юнитов одновременно. Отдельные особенности имеются у интерфейса взаимодействия игрока и элементов управления, в которые входят инструменты работы с группами юнитов (выделение по площади, управление) и ряд меню и панелей инструментов, содержащих команды управления, элементы снаряжения, выбор типов юнитов и зданий и тому подобное[10].

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

На домашних компьютерах 1980-х из-за отсутствия стандартизации и ограничений памяти портирование было ручным и трудоёмким: переносилась только логика работы, а остальные части — вывод графики на экран, вызов прерываний и т. п. — писалось заново. Тем не менее, в те времена появились игровые движки Z-Machine и SCI от компаний Infocom и Sierra соответственно. В 1980-е компания Incentive Software начала разработку Freescape — переносимого 3D-ядра.

Сам же термин «игровой движок» появился в середине 1990-х годов — в это время окончательно установилось доминирование IBM-совместимых компьютеров, а быстрые процессоры и «хитрое» программирование дали 30 и более кадров в секунду в трёхмерных играх. Игры Doom и Quake от id Software оказались настолько популярными, что другие разработчики вместо того, чтобы работать с чистого листа, лицензировали основные части программного обеспечения и создавали свою собственную графику, персонажей, оружие и уровни — «игровой контент» или «игровые ресурсы». Движок Quake был использован в более чем десяти проектах и дал серьёзный толчок развитию middleware-индустрии.

Более поздние игры, такие как Unreal 1998 года (движок Unreal Engine) и Quake III Arena (на движке id Tech 3) 1999 года, были спроектированы с применением данного подхода, с отдельно разработанными движком и наполнением. Практика лицензирования такой технологии оказалась полезным вспомогательным доходом для некоторых разработчиков игр. Так, стоимость одной лицензии на коммерческий игровой движок класса high-end может варьироваться от 10 тыс. до 3,75 млн $ (в случае Warcraft III)[источник не указан 5025 дней], а число лицензиатов может достигать несколько десятков компаний (как для Unreal Engine). По крайней мере, многократно используемые движки ускоряют и упрощают разработку игры, что является ценным преимуществом в конкурирующей индустрии компьютерных игр.

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

Шутеры от первого лица остаются преобладающими пользователями сторонних игровых движков, но сейчас такие движки также используются в других жанрах. Например, RPG Morrowind и MMORPG Dark Age of Camelot основаны на движке NetImmerse, в то время, как Oblivion и Fallout 3 используют новую версию данной технологии — Gamebryo. Известная MMORPG Lineage II построена на движке Unreal Engine 2 (несмотря на то, что данный движок изначально предназначался для использования в шутерах).

Игровые движки также используются в играх, первоначально разработанных для игровых консолей; например, движок RenderWare используется в таких франшизах как Grand Theft Auto и Burnout.

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

В дополнение к многократно используемым программным компонентам, игровые движки предоставляют набор визуальных инструментов для разработки. Эти инструменты обычно составляют интегрированную среду разработки для упрощённой, быстрой разработки игр на манер поточного производства. Эти игровые движки иногда называют «игровым подпрограммным обеспечением» (сокр. ППО; англ. middleware), так как, с точки зрения бизнеса, они предоставляют гибкую и многократно используемую программную платформу со всей необходимой функциональностью для разработки игрового приложения, сокращая затраты, сложность и время разработки — все критические факторы в сильноконкурирующей индустрии видеоигр.

Как и другие ППО решения, игровые движки обычно платформо-независимы и позволяют некоторой игре запускаться на различных платформах, включая игровые консоли и персональные компьютеры, с некоторыми внесёнными в исходный код изменениями (или вообще без них). Часто игровое ППО имеет компонентную архитектуру, позволяющую заменять или расширять некоторые системы движка более специализированными (и часто более дорогими) ППО компонентами, например, Havok — для физики, FMOD — для звука или SpeedTree — для рендеринга. Некоторые игровые движки, такие как RenderWare, проектируются как набор слабосвязанных ППО компонентов, которые могут выборочно комбинироваться для создания собственного движка, вместо более традиционного подхода расширения или настройки гибкого интегрируемого решения. Тем не менее расширяемость достигнута и остаётся высокоприоритетной в игровых движках из-за широких возможностей их применения. Несмотря на специфичность названия, игровые движки часто используются в других типах интерактивных приложений, требующих графику в реальном времени, таких как рекламные демо-ролики, архитектурные визуализации, обучающие симуляторы и среды моделирования.

Некоторые игровые движки предоставляют только возможности 3D-рендеринга в реальном времени вместо всей функциональности, необходимой играм. Эти движки доверяют разработчику игры реализацию остальной функциональности или её сбор на основе других игровых ППО компонентов. Такие типы движков обычно относят к «графическим движкам», «движкам рендеринга» или «3D-движкам» вместо более содержательного термина «игровой движок». Однако эта терминология используется противоречиво: так, многие полнофункциональные игровые 3D-движки упомянуты просто как «3D-движки». Некоторые примеры графических движков: RealmForge, Ogre 3D, Power Render, Crystal Space и Genesis3D. Современные игровые или графические движки обычно предоставляют граф сцены — объектно-ориентированное представление 3D-мира игры, которое часто упрощает игровой дизайн и может использоваться для более эффективного рендеринга огромных виртуальных миров.

Аппаратная абстракция

[править | править код]

Чаще всего 3D-движки или системы рендеринга в игровых движках построены на графическом API, таком как Direct3D или OpenGL, который обеспечивает программную абстракцию GPU или видеокарты. Низкоуровневые библиотеки, например, DirectX, SDL и OpenAL, также используются в играх, так как обеспечивают аппаратно-независимый доступ к другому аппаратному обеспечению компьютера, такому как устройства ввода (мышь, клавиатура и джойстик), сетевые и звуковые карты. До появления аппаратно-ускоряемой 3D-графики использовались программные визуализаторы. Программный рендеринг всё ещё используется в некоторых инструментах моделирования для рендеринга изображений, для которых визуальная достоверность важнее производительности (количество кадров в секунду) или когда аппаратное обеспечение компьютера не удовлетворяет требованиям, например, не поддерживает шейдеры.

Примечания

[править | править код]
  1. game engine | Definition of game engine in English by Oxford Dictionaries. Oxford Dictionaries | English. — «The basic software of a computer game or video game». Дата обращения: 11 декабря 2017. Архивировано из оригинала 12 декабря 2017 года.
  2. 1 2 3 Jason, 2009, p. 11.
  3. Jason, 2009, p. 12.
  4. Jason, 2009, p. 13.
  5. Jason, 2009, p. 13, 14.
  6. Jason, 2009, p. 14.
  7. Jason, 2009, p. 16, 17.
  8. Jason, 2009, p. 17, 18.
  9. Jason, 2009, p. 19—21.
  10. Jason, 2009, p. 22, 23.
  11. Jason, 2009, p. 23, 24.

Литература

[править | править код]
  • Jason, Gregory. Game Engine Architecture : [англ.]. — CRC Press, 2009. — 864 с.