Как движки, такие как Unreal, связаны с OpenGL или DirectX?

8

Я совершенно новичок в компьютерной графике и, тем более, в разработке игр. Я ищу информацию, чтобы быстро освоить основы. У меня есть один вопрос в моей голове; Как движки, такие как Crytek Engine или Unreal Engine, относятся к OpenGL или DirectX?

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

BRabbit27
источник
Вот часть ответа, но это просто принесет другие вопросы. Scientificninja.com/blog/write-games-not-engines
BRabbit27
Куда входит физика? Как будто я должен написать физический алгоритм, например алгоритм столкновения, а затем заставить некоторые круги, созданные в OpenGL, вести себя в соответствии с моим физическим алгоритмом?
BRabbit27

Ответы:

10

TL; DR: двигатель - это просто набор компонентов многократного использования.

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

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

Имейте в виду, это только меняет внутреннее состояние игрового мира.

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

OpenGL и DirectX являются графическими API, они используются только для визуализации объектов (например, персонажа) на экране.

Итак, вы в основном говорите OpenGL / DirectX: «Я хочу нарисовать символ в позиции 1 и прямоугольник в позиции 2 и ...».

Конечно, это грубое упрощение.

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

Exilyth
источник
Там не хватает акцента "Et voilà", ха-ха, просто шучу. Большое спасибо, я думаю, что я думал правильно, но не был уверен, поэтому я решил спросить. Большое спасибо!
BRabbit27
2
DirectX - это не графический API, а Direct2D и Direct3D.
@JaakkoLipsanen Да, теперь я вижу, DirectX - это полноценная среда для разработки игр (3d, аудио, видео и т. Д.), А Direct3D - просто графический модуль.
BRabbit27