Игровой движок : Графика

Есть основных 3 вида графики в играх: 2D - в одной плоскости, 2.5D - изометрическая графика и 3D - объемная графика в пространстве. Есть еще другие варианты, но основных их 3.
Есть основных 3 вида графики в играх: 2D - в одной плоскости, 2.5D - изометрическая графика и 3D - объемная графика в пространстве. Есть еще другие варианты, но основных их 3.

Мы видим изображение на экране, его подготавливает специальное устройство - графический процессор (GPU). Бывают случаи, когда графику просчитывает CPU (центральный процессор) - это называется Software Render, но такой вариант используется редко.

GPU - графический чип (видеокарта), Driver - драйвер конкретного чипа, Graphic API - графическое API
GPU - графический чип (видеокарта), Driver - драйвер конкретного чипа, Graphic API - графическое API

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

  • OpenGL и его урезанная мобильная версия OpenGL ES, работает на разных платформах
  • DirectX - это графический API созданный для Windows
  • Metal - созданный и продвигаемый Apple для своих ОС, работает только на iOS и OSX
  • Vulkan - созданный Khronos Group как новый API, работает не на всех платформах

Если игра должна работать на нескольких платформах, то необходимо поддерживать несколько графических API. Это увеличивает трудозатраты на разработку движка. К примеру Apple решила отказаться от OpenGL в пользу своей разработки Metal и чтобы игра также работали как и раньше на этой платформе - необходимо использовать Metal. Есть еще вариант, которые используют некоторые компании. На примере игры Cup Head - игра разработана с использованием DirectX, а поддержка других платформ Linux\OSX поддерживается через Wine.

Не в один графический API не заложены функции для отрисовки текста, спрайтов, кнопок и других элементов. Все что есть в наличии у нас - это 3 примитива: треугольник, линия и точка. Основной это конечно же треугольник. Вся графика, которая отрисовывается в игре - она вся состоит из треугольников. Есть некоторые варианты использования точек и линий, это к примеру системы частиц. Как пример следующая картинка.

Нитка и фон также состоит из множества треугольников. На картинке упрощенный вариант компановки кадра, в реальности все может быть намного сложнее.
Нитка и фон также состоит из множества треугольников. На картинке упрощенный вариант компановки кадра, в реальности все может быть намного сложнее.

Каждый треугольник оперирует с координатами XYZ, но если игра 2D - то координата Z обычно 0 и не передается, а все решает порядок отрисовки элементов.

Чтобы не разбираться конкретно с API, можно использовать различные библиотеки, которые абстрагируют от прямых вызовов API. К ним можно отнести: SDL, GLFW, SFML и другие. Можно будет скачать любую из них и попробовать в действии, в интернете достаточно различных уроков и примеров.

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

110110 показов
2.6K2.6K открытий
12 комментариев

Хорошо пошла статейка, только начала втягивать, как закончилась...😒

Ответить

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

Ответить

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

Ответить

А как же рассказать про движок и их разнообразие и особенности? :)

Ответить

Разнообразие движков, которые сейчас в основном используется - можно посчитать на пальцах одной руки. Про конкретный из них можно ознакомится на википедии и других статьях. Кратко списочек я писал ранее, можете посмотреть - это Unity, Unreal Engine и Godot. Остальные по вкусу.

Ответить

а поддержка других платформ Linux\OSX поддерживается через WineАга, только поддерживается коммьюнити, но почти никогда самими разработчиками

Ответить

Очень хорошо написано, но мало!

Ответить