движок

Движок

Движок, двигатель (англ. engine) - обособленный компонент приложения, реализующий некоторую часть его функциональности. Ключевая особенность движка - абстракция, независимость от приложения: в движок выносится наиболее общая и универсальная функциональность с целью повторного использования (code reuse) в других проектах. Вынос функциональности в движок является частным случаем модульности.

  • Игровой - реализует игровую логику, связывает воедино графический, физический, звуковой и др. движки
  • Графический - реализует интерфейс вывода графики в реальном времени. Обычно является абстракцией поверх системных графических API, таких как DirectX и OpenGL. Разделяют 2D-движки, 2.5D-движки и 3D-движки.
  • Физический - отвечает за динамику поведения игровых объектов (динамику твердых и мягких тел, жидкостей, транспортных средств и т.д.), а также, иногда, кинематику (например, движение вдоль сплайна, инверсная кинематика, контроллер персонажа и т.д.)
  • Движок столкновений - реализует алгоритмы обнаружения пересечений геометрических тел, а также пересечения тел с лучом, отрезком, плоскостью и т.д. Зачастую является частью физического движка, но иногда выносится в отдельный модуль
  • Звуковой - реализует интерфейс ввода/вывода звука. Обычно является абстракцией поверх системных звуковых API и не имеет собственного микшера, хотя бывают исключения - например, OpenAL
  • Сетевой - реализует обмен данными по сети (например, клиент-серверную модель) на основе низкоуровневых сетевых интерфейсов. Является основой многопользовательского режима в играх
  • Скриптовый - реализует возможность расширения приложения путем написания программ-сценариев (скриптов)
  • Движок рендеринга - в программах 3D-моделирования - модуль построения графического изображения на основе данных о трехмерной сцене. В отличие от графического движка, работает не в реальном времени (оффлайн-рендеринг), хотя может использовать GPU для ускорения. В основе обычно лежит трассировка лучей или гибридный пайплайн (растеризация + трассировка).

Движок может представлять собой библиотеку исходного кода, статическую или динамическую библиотеку. Последний вариант наиболее универсален, поскольку позволяет использовать движок с различными языками программирования. Архитектурно движок часто делится на фронтенд и бэкенд. Фронтенд в данном случае - пользовательский программный интерфейс (структуры данных и функции, либо, в ООП-языках, классы). Бэкенд - реализация интерфейса, с которой пользователь напрямую не взаимодействует. Она обычно делается заменяемой. Например, графический движок может иметь переключаемые бэкенды на основе Direct3D и OpenGL, тогда как фронтенд является абстрактным и независимым от конкретной низлежащей технологии.

  • движок.txt
  • Последнее изменение: 2024/07/01 01:39
  • admin