Графический двигатель что это

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

А что это за «движок», который скрывается под красивой оберткой текстур и скриптов компьютерной игры? Это же не двигатель автомобиля.

Тогда что? Программный код? Комплекс приложений для программистов и игроков? Разберемся немного подробнее.

Термин «игровой движок» является прямой копией английского «Game Engine».

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

Графический двигатель что это

Впервые этот термин появился в середине 90-х годов прошлого века. Связан он был с играми в жанре «шутер от первого лица», а точнее, с самым популярным на тот момент Doom.

Исходный код этой игры был построен очень продуманно, с выделенными основными компонентами: системой трехмерной графики, звуками, расчетами столкновений, скриптами.

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

Графический двигатель что это

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

В результате ряд компаний занялся разработкой именно игровых движков, а разработчики игр стали покупать на них лицензии, как это получилось с Unreal Engine или id Tech 3.

Стоимость лицензии может составлять от нескольких тысяч до миллионов долларов.

Но при этом надо отметить, что для некоммерческого использования многие игровые движки, например, популярные Unity и Unreal Engine 4 доступны бесплатно. Остановимся на этих движках немного подробнее.

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

Графический двигатель что это

Unreal Engine 4

Этот движок смело можно назвать легендой. Его разработка началась в 1998 году и с тех пор он постоянно модернизируется, дополняется и совершенствуется.

Современный Unreal Engine 4 — это движок, на котором пишут игры для любых платформ и операционных систем, начиная от ОС Windows и заканчивая всеми современными консолями — Playstation 4, Xbox One, а также мобильными платформами, в том числе и iOS.

13 мая 2020 года разработчики из Epic Games анонсировали Unreal Engine 5 и показали демо для консоли Playstation 5. Ожидается, что этот движок выйдет в 2021 году, а пока разработчики продолжают работать с Unreal Engine 4.

В настоящее время он бесплатен при условии, что выпущенные приложения приносят прибыль не более $3 000 в квартал. Если сумма прибыли больше, потребуется лицензировать движок и выплачивать его разработчикам процент от прибыли.

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

Графический двигатель что это

Как и Unreal Engine, Unity — кроссплатформенная система. На ней пишут игры для любых платформ и в любых жанрах.

На Unity делают как простые аркады и головоломки, так и шутеры от первого лица с достаточно сложным игровым миром. Пример — Dead Trigger. Другой пример — интересная стратегия Endless Legend.

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

Графический двигатель что это

Большой плюс Unity — простота его освоения. Минус — графика в играх, созданных на основе этого движка. Она выглядит проще и не настолько реалистична, как у Unreal Engine. Тем не менее, около половины всех мобильных игр, по заверениям разработчиков, написаны именно на этом движке.

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

Но это не значит, что программировать не придется ничего. Разработчику все равно потребуется писать скрипты для внутриигровых действий. На Unity, например, потребуется работа с C#, да и на Unreal Engine знание языков программирования не помешает.

Графический двигатель что это

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

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

Специально для начинающих в Unity существует масса проектов вроде Creator Kit и Microgame, предлагающих большое количество исходных материалов для написания простых приложений в 2D и 3D.

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

Графический двигатель что это

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

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

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

Как разобраться в игровых движках — Пользовательский инди-джем на DTF

Какие они бывают и как выбрать себе подходящий, если вы только начинаете постигать азы разработки

{«id»:236542}

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

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

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

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

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

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

Касательно внутреннего устройства игровые движки делятся на:

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

Если мы говорим о фреймворках, то игра пишется на том же языке, на котором написан фреймворк. Если же мы говорим о полноценном ПО, то программировать в них можно на:

  • Полноценный язык программирования. Такими языками могут быть C++, C#, Javascript, Lua.
  • Адаптированный скриптовый язык. Обычно за основу берётся какой-нибудь скриптовый язык, а его синтаксис и возможности расширяются, чтобы им было проще пользоваться в контексте разработки игр. Тут нет универсальных решений, но чаще всего эти языки очень похожи друг на друга.
  • Визуальный интерфейс. Это абсолютно такой же процесс программирования, но вместо написания строк кода вы соединяете узлы действий между собой. Это ещё проще, чем писать код вручную, но процесс программирования всё равно изучать придётся. А ещё в узлах сложнее ориентироваться из-за их громоздкости.

Если говорить о лицензии, то тут тоже есть несколько вариантов:

  • Платные движки — за использование этих программ придётся платить, иногда даже каждый месяц.
  • Бесплатные для использования — эти движки вы можете спокойно скачать и использовать для разработки, но чтобы продавать игры, сделанные на нём, придётся отчислять процент владельцам движка.
  • Движки с открытым исходным кодом — эти движки вы можете спокойно скачать и использовать с минимумом ограничений.

Возможности, которые может предоставлять или не предоставлять игровой движок (список неокончательный):

  • Система уровней
  • Физика
  • Система частиц
  • Навигация
  • Двумерная анимация
  • Трёхмерная анимация
  • Карты тайлов
  • Редактор местности (terrain)
  • Воспроизведение звука
  • Источники освещения и тени
  • Шейдеры
  • Диалоговая система
Читайте также:  2107 запуск инжекторного двигателя

Чем больше возможностей предоставляет движок, тем сложнее и дольше им пользоваться из-за огромного количества кнопочек и удлинённого времени компиляции, так что подбирать движок лучше не из соображений «чтобы умел побольше», но «взять достаточно для моих нужд — и не больше».

Ну и последнее разделение, которое относится к движкам лишь косвенно — это их дата создания и популярность.

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

Игровой мир состоит из игровых объектов (GameObject). К этой базовой категории можно практически отнести всё, что находится в игре, в том числе игрока, его инвентарь, камеру, землю под ногами, каждый отдельный кустик и даже небо.

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

Все игровые объекты обладают несколькими базовыми свойствами: положение в пространстве (Transform), включены ли они (Active), какой у них родительский объект и есть ли он (Parent).

Игровые объекты так же могут быть дополнены поведением (Behaviour или Component). Поведение — это отдельный код, который привязан к объекту и выполняется при определённых условиях.

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

А ещё у каждого поведения могут быть свои отдельные параметры (выраженные в переменных).

Например, мы можем создать для картинки поведение «Персонаж», у которого будут очки здоровья и возможность прыгать. И когда персонаж падает со слишком большой высоты, эти очки здоровья у него отнимать.

Помимо своих собственных поведений в игровом движке есть несколько стандартных типов поведений: форма столкновения (Bounding Box/Sphere/Capsule/…), физическое тело (Rigidbody), отрисовщик (Renderer), камера (Camera), создатель частиц (Particle Manager), аниматор (Animator) и ещё десятки других типов. Всеми этими поведениями вы можете управлять на лету.

Очень важным концептом является событие (Event). Это сигнал, который возникает при соблюдении каких-то условий. Поведения объектов в игре могут порождать эти события и реагировать на них.

Например, столкновение — это событие, причём одно из самых частых по использованию.

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

Но это и не единственный способ заставить игру работать, ещё есть раздел Update, в который можно написать код и который будет выполняться постоянно, в каждый игровой тик (tick). Тик — это самая минимальная единица времени, которую игра может обеспечить.

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

Но чем меньше кода написано в этой секции — тем лучше.

Место, в котором находятся игровые объекты, называется уровень или сцена (Level или Scene). Уровни можно менять в любой момент, а в некоторых движках ещё и совмещать между собой.

Ваши игровые объекты будут распределены по уровням, чтобы друг другу не мешать. Например это будут локации и их наполнение.

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

В вашем проекте должна быть отдельная папка, в которой вы будете хранить сохранённые объекты (Prefab).

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

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

И последнее, про графику. Объекты в игре могут выглядеть самым разным способом. И дело даже не в отдельный настройках, а в самом способе их отображения на экране. Это могут быть 2D-объекты, например различные простейшие геометрические формы (Shape) или картинки (Sprite).

А могут и 3D-объекты, которые состоят из 3D-модели (Mesh). Все видимые объекты в игре обязаны иметь материал (Material) — набор параметров, влияющий на отображение объекта. Такими параметрами могут являться текстуры (Texture), цвета (Color) и обычные числа (Float).

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

В основе материала лежит шейдер (Shader) — особая программа, которая проводит математические вычисления и проецирует объекты в пространстве на плоский экран камеры.

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

Construct 3 — настоящий ветеран индустрии. Используется для создания 2D-игр и достаточно популярен. У движка больше настроек, с недавних пор есть версия для браузера, очень много примеров и шаблонов. Логика на визуальном интерфейсе. Но большинство возможностей скрыто за крайне дорогой лицензией. Бесплатная версия ограничена.

Stencyl — ещё один движок для создания 2D-игр. Имеет открытый исходный код и и приятный интерфейс. Логика на визуальном интерфейсе. Мало известен, но полностью бесплатен (платно только публикация на ПК).

GDevelop — другой движок для создания 2D-игр, набирающий огромную популярность. Так же имеет открытый исходный код и приятный интерфейс. Логика на визуальном интерфейсе. Полностью бесплатен.

RPG Maker — очень популярный движок для создания пиксельных RPG. Именно для RPG движок и заточен, но он подойдёт и для похожих жанров. Много встроенных ассетов и настроек для персонажей. Есть бесплатный 30-дневный пробник, дальше придётся платить.

Game Maker Studio — очень популярный движок для разработки 2D-игр. Позволяет программировать логику на адаптированном Lua и даёт много возможностей. Есть бесплатный 30-дневный пробник, дальше придётся платить.

Godot — очень многообещающий движок с открытым исходным кодом, который грозится «заменить Unity» в своей распространённости. Godot поддерживает 2D и 3D графику, а так же несколько языков программирования (C++, C# и модификация Python) и имеет свой визуальный скриптинг. Его использование полностью бесплатно.

Ren’Py — самый популярный движок визуальных новелл, на котором написаны тысячи новелл. Использует Python в качестве языка программирования логики. Полностью бесплатен

Monogatari — простой движок визуальных новелл на веб-технологиях. Мало известен, но выглядит интересно, к тому же движок на Javascript легче исправить под свои нужды. Код пишется на том же языке. Полностью бесплатен.

Unity — самый популярный в мире движок для разработки игр. Поддерживает 2D и 3D графику, имеет в себе невиданное количество вспомогательных модулей, огромный магазин ассетов и поддерживает большинство платформ.

К сожалению, с ростом популярности движок становится всё сложнее и тяжелее в освоении, но всё равно очень доступен. Программирование на C#.

Использование условно-бесплатное, при превышении определённого порога прибыли придётся платить за лицензию.

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

В качестве программирования используется визуальный интерфейс, но есть возможность писать и на C++. Инструмент для профессионалов, поэтому очень просто что-то испортить.

Использование бесплатно, но с каждой проданой игры надо отчислять процент.

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

Cocos2d — популярный фреймворк, портированный на несколько языков (C, Python, JS, Swift, C#). С его помощью сделано много игр в том числе для мобильных устройств.

Phaser — набирающий популярность фреймворк для разработки игр на Javascript.

libGDX — завоевавший доверие фреймворк для разработки игр для Java.

SFML — популярный фреймворк для разработки игр на C++

Что ж, теперь вы знаете, как выбрать движок и какие опции доступны. А теперь дерзайте! Скачивайте, тыкайте, экспериментируйте. На сайтах движков вы можете найти очень много шаблонов и примеров, а на YouTube (особенно английской его версии) можно найти буквально сотни и иногда даже тысячи гайдов по тем или иным сторонам разработки. Ждём ваши работы!

«Начинайте с идеи игры, а не движка». Разработчик игровых движков — о том, что это и как устроено — Технологии Onlíner

Василий разрабатывает игровые движки с 16 лет, с того момента, как дома появился первый ZX Spectrum, — и не представляет, чем еще мог бы заниматься в жизни.

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

В рамках спецпроекта Onliner и BGaming мы узнали у разработчика этой компании, как устроен игровой движок и что он собой представляет.

— Простым языком: движок игры — что это такое?

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

Хороший движок избавляет от необходимости делать то, что уже сделано раньше, но в то же время оставляет тебе свободу действий. Продвинутый и удобный движок — это не просто набор библиотек, понятный только программистам. Это инструмент, в котором можно увидеть и отредактировать игру. То есть это, если сильно утрировать, как Photoshop или Word, только для игр.

Такого пути при разработке движка я всегда придерживался.

Читайте также:  Двигатель вальвематик что это

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

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

— По такому принципу можно любую игру сделать?

— Визуально вся игра сводится к тому, что каждый объект перед каждым кадром обновляет свою позицию. У него есть координаты — X и Y. Если к X прибавить 1, объект сдвинется на один пиксель.

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

Я составлял человечков из букв, которые бегали по лестницам, собирали монеты и так далее.

Но есть более продвинутый способ двигать объекты по экрану — это когда мы работаем не с X и Y объекта напрямую, а с его скоростями по оси X и Y. Назовем их speedX и speedY, значения которых попросту прибавляются к X и Y каждый кадр. Теперь, однажды установив speedY значение, равное 1, мы заставим объект двигаться вниз со скоростью 1 пиксель за кадр.

А если мы начнем каждый кадр увеличивать speedY на 1, то объект будет двигаться вниз с ускорением — получится действие гравитации. Нам останется проверить наличие препятствия под объектом и установить speedY в 0, чтобы объект не проваливался сквозь пол.

А можно при касании пола speedY умножить на минус один (изменить скорость на противоположную), и тогда объект «отскочит» и полетит вверх.

Другая, обычная для игры задача — определить момент, когда два объекта друг друга коснулись.

В упрощенном виде касание — это когда расстояние между центрами двух объектов стало меньше, чем размер этих объектов.

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

Универсальность — не всегда хорошо

— Почему нет движков, которые подошли бы под любой игровой жанр?

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

— Бывает так, что движок заточен под определенный жанр? Например, для стратегии подойдет, а для гонок — вообще нет.

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

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

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

Кстати, важный момент в любой разработке — скорость итерации, то есть насколько быстро ты увидишь внесенные тобой изменения в действии.

Бывают проекты, в которых на компиляцию и запуск игры уходит минута и больше, а бывают такие, где хватает 1—2 секунд. И простая математика: ты сразу становишься в 15—30 раз эффективнее.

Даже не в том смысле, что сделаешь в 30 раз больше работы, а в том, что получишь в 30 раз меньше стресса и при этом будешь полон сил двигаться дальше.

— От чего зависит популярность движка? Например, CryEngine, несмотря на технологичность, почти нигде не использовался, а Unreal Engine много где встречается.

— Движков тысячи, есть удобные и не очень. У человека есть какое свойство: когда ты смотришь на что-то новое с большим количеством кнопок — оно тебе всегда не нравится. Допустим, работаешь год в 3ds Max, потом переходишь на Blender — кажется, что это полная муть и его инопланетяне придумали.

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

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

— Почему многие студии делают собственные движки? Не проще ли лицензировать существующий?

— Я лицензированием движков не занимался, но по себе могу сказать, что свое всегда ближе, и ты меньше тратишь времени на доработку и исправление чужих «косяков». Цепляешься за какой-то недочет в стороннем движке — и либо тебе приходится от чего-то отказываться, либо тратить большое количество времени на поиск обходного пути.

Года три назад при переходе с Flash на HTML я около месяца просидел на Unity в качестве эксперимента.

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

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

— Ты разрабатываешь только движок или игрой тоже занимаешься?

— Разрабатывать движок, отгородившись от игры, вредно. Если сам с ним не работаешь как пользователь, то понятия не имеешь, куда двигаться дальше.

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

Как только я натыкаюсь на рутину или баг — сразу добавляю какую-то кнопку, галочку, пару дней проверяю, как оно работает в «боевых условиях», и если все в порядке, включаю ее для всех.

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

Принципы оптимизации

— Как выглядит оптимизация под разные платформы, железо?

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

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

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

В нашем движке для этого есть специальный объект, который обрезает у себя «лишние» части.

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

— Разработчик игры должен быть технарем?

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

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

«Самое сложное — не начать разработку, а закончить ее»

— По каким признакам можно понять, хороший в игре движок или нет?

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

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

У меня была игра Iron Impact: она сделана в 2D с динамическим освещением, то есть каждый спрайт был не плоским, а имел карту высот и нормалей.

И если бы на этом моем движке мне показали другую игру, я бы его узнал.

— Что посоветуешь разработчикам игровых движков?

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

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

Ведь как все идет: за второй день разработки ты удвоишь объем сделанной работы, и это очень много. А день разработки после трех месяцев работы — это лишь один процент от уже проделанного.

Чувство прогресса замедляется, и радость от разработки улетучивается.

BGaming — быстрорастущий игровой провайдер с белорусскими корнями, предлагающий качественные продукты для онлайн-казино по всему миру.

Игрок и его выбор — главная ценность компании, поэтому мы постоянно изучаем и анализируем потребности и предпочтения аудитории, чтобы создавать яркие и запоминающиеся продукты.

Студия разрабатывает онлайн-игры на стыке gambling и gaming, в которых идеально сбалансированы визуальные эффекты и математика.

Это возможно благодаря команде экспертов с безграничной энергией и более чем 20-летним опытом в индустрии.

Спецпроект подготовлен при поддержке ООО «Меркелеон девелопмент», УНП 193084780.

 

Наш канал в Telegram. Присоединяйтесь!

Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро

Перепечатка текста и фотографий Onliner без разрешения редакции запрещена. nak@onliner.by

Grafik-Engine – Wikipedia

Графический движок (буквально «графика машина» , более свободно: «графический движок» или «графический модуль» ) является частью компьютерной программы или компьютерной аппаратной , так называемым двигателем , который отвечает за отображение компьютерной графики .

В большинстве случаев речь идет о максимально реалистичной трехмерной компьютерной графике, такой как объекты, окружающая среда и люди (ключевое слово: виртуальная реальность ). Поэтому в связи с компьютерной 3D-графикой графический движок также называется 3D-движком .

Читайте также:  Двигатель 402 не набирает температур

В частности, это интегрированный или хранимый извне программный код, который отвечает за вычисление графического интерфейса, параллельного реальной игре (см. Игровой движок ).

Графический движок часто понимается как часть игрового движка, но на самом деле он отвечает только за вычисление отображения, в то время как термин игровой движок представляет собой основу всей игры (звук, игровой процесс, меню и т. Д.). Помимо игр, другие приложения, такие как CAD или географические приложения и общее программное обеспечение для визуализации, также могут управлять графическим движком.

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

функция

Графический движок предлагает программисту широкий спектр графических функций и эффектов (геометрическое описание объекта, текстуры поверхности , свет и тень ( затенение ), прозрачность , отражения и т. Д.), Так что ему не нужно повторно программировать их для своих специальных целей. применение.

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

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

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

В продвинутых 3D-движках текстуры покрываются так называемыми картами рельефа , которые создают трехмерную структуру.

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

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

история

Этот термин не использовался до середины 1980-х годов, когда Lucasfilm Games впервые применила свою технологию 3D-фракталов, а Epyx — свой Freescape Engine в играх. Движок Freescape также использовался другими производителями игр.

В начале 1990-х Id Software начала разрабатывать свои графические движки для 3D-графики и делать их доступными для других производителей игр в более крупном масштабе за лицензионную плату. Это позволило им быстрее разрабатывать новые 3D-игры.

Трехмерная графика требует очень сложной оптимизации и вычислений, и программисты из Id Software были лидерами в этих областях в то время.

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

Двигатели в области кино и компьютерных игр

Фильм

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

Наиболее распространенное программное обеспечение для рендеринга:

  • Ментальный луч
  • Pixar RenderMan

С помощью таких программ, как Houdini , Maya , LightWave 3D , Cinema 4D , 3ds Max , Blender и ZBrush , создаются модели (люди, эффекты и т. Д.), Которые затем рассчитываются («визуализируются»), так что трехмерная графика создано.

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

Использование такого сложного программного обеспечения варьируется от визуализации продуктов, архитектуры, эффектов до полностью цифровых фильмов, таких как Final Fantasy VII: Advent Children , В поисках Немо или эффектов и людей в таких фильмах, как « Звездные войны» , « Властелин колец» и « Матрица» . Без постоянной разработки программного обеспечения для рендеринга эти фильмы были бы невозможны.

компьютерная игра

Графических движков для расчета игр гораздо больше, и они быстро развиваются.

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

Текущие двигатели, например, B. id Tech 6 ( Doom ), Unreal Engine 4 ( Gears of War 4 , ARK: Survival Evolved ), CryEngine V ( Prey ), Frostbite 3 ( Battlefield 1 , Star Wars: Battlefront ) и Unity ( Pokémon GO , Firewatch ).

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

Различия между фильмом и игрой

Разницу между игрой и фильмом можно увидеть, например, в фильме Final Fantasy и одноименной игре.

Изображение (1 секунда ~ 24 изображения) рассчитывается на срок до 90 часов в случае пленки, тогда как 24 изображения должны быть рассчитаны за одну секунду для игры.

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

Тенденция к дальнейшему дублированию фильма и игры

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

По этой причине в настоящее время все известные программы 3D-моделирования, такие как Maya , XSI и 3ds Max, поддерживают не только классический автономный рендеринг, но и рендеринг в реальном времени (функция «предварительного просмотра»), где вы можете сразу увидеть результат.

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

Производители графических чипов , такие как Nvidia также делают целевые инвестиции в этой области, например , с разработкой и маркетингом шейдерного языка Cg , который используется в обеих областях. То же самое относится к языку шейдеров HLSL, разработанному Microsoft .

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

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

  • Раньше были отдельные программы для разработки компьютерных игр, например, специальные редакторы уровней. Такие программы, как Maya , теперь используются по умолчанию как для игр, так и для фильмов. Графические движки компьютерных игр и фильмов работают со все более похожими входными данными.
  • Используемые техники моделирования становятся все более похожими. В то время как миры для компьютерных игр раньше состояли из отдельных многоугольников, теперь используются такие методы, как разбиение поверхностей и текстуры , как в кино . Причина здесь также в том, что методы базовых графических движков сошлись.
  • Все больше и больше художников-графиков работают в обеих отраслях. Например, id Software специально наняла графических дизайнеров из киноиндустрии для Doom 3 . Напротив, художники-графики компьютерной игры Final Fantasy позже создали компьютерную графику для одноименного фильма.

Вехи в движках 3D-графики

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

Популярные графические движки, по крайней мере, в области шутеров от первого лица , в последние годы почти полностью принадлежат id Software , Epic Games и Valve . В 2004 году немецкая компания Crytek также сделал прорыв с CryEngine 1.

0, который используется в Far Cry. Как другая немецкая компания, Spinor с помощью своего 3D- движка Shark добилась того, что основанная на нем приключенческая игра Dreamfall от норвежской компании Funcom получила несколько наград на E3 2004.

Коммерческие графические движки

Следующие 3D-движки являются общедоступными и пока опубликованы для коммерческого использования:

Графические движки с открытым исходным кодом

Следующие движки свободно доступны в исходном коде:

Интерфейсы для графических движков

Используемый графический движок оказывает большое влияние на внешний вид компьютерной игры. Вы определили z. B. сколько полигонов может быть отображено и используется ли DirectX , OpenGL или другой графический интерфейс.

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

Графический движок обычно является неотъемлемой частью игрового движка и не может быть просто заменен. Некоторые игры для Windows имеют интерфейс DirectX и OpenGL. Однако под Linux доступны только OpenGL и Vulkan . (DirectX доступен под Linux со средами выполнения Wine или Cedega , но не все игры для Windows работают с Wine.

) Операционная система для Mac , macOS , также полагалась исключительно на OpenGL, пока Apple не запустила собственный графический интерфейс Metal в OS X El. Представлен Capitan в 2015 году (версия 10.11). Metal 2 был основным графическим движком со времен macOS Catalina (версия 10.

14, 2018) и, таким образом, полностью заменяет OpenGL, который остается в macOS, но больше не разрабатывается.

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

веб ссылки

Характеристики:

Обзор 3D-движков:

Индивидуальные доказательства

Ссылка на основную публикацию
Adblock
detector