Найти тему
Терри МакГиннис

Как устроены компьютерные игры: точки, ребра, полигоны, текстуры, материалы...

"Да что такое?! Я опять застрял в текстурах!"
"Неужели так сложно предусмотреть все баги? Почему я просто не могу тут пройти?"
"Ненавижу эту игру! Я вечно застряю в этом месте"

Как часто вы произносите эти слова играя в игры за своим ПК, приставкой или телефоном? Неужели разработчики не могут устранить все баги в играх? Как бы это не звучало странно - но нет! Всех приветствую! На связи разработчик игр с восьмилетним стажем и сегодня мы поговорим про устройство компьютерных игр. В этой статье пойдёт речь о визуальной части игр. А именно что такое текстуры, полигоны, игровая геометрия. Интересно? Тогда оставайтесь до конца!

Точка

Знаете что это?

Да, это координатная плоскость! Те кто хоть немного знакомы с математикой, знают то, как на координатной плоскости строятся точки. В игре все объёмные и плоские предметы состоят, в первую очередь из точек. Давайте создадим первую точку на нашей координатной плоскости.
Например А(4;-2)

-2

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

Ребро

Всё из той же математики мы знаем, что если между двумя точками ( А и В) провести прямую, то мы получим прямую АВ. Игровые объекты состоят из таких вот прямых или ребер. Давайте поставим на нашей координатной плоскости точку В(2;-4) и сразу же проведём прямую АВ.

-3

Но как было бы это не странно - ребра так же являются неосязаемым игровым объектом.

Полигон

Итак, мы вплотную подобрались к одному из самых узнаваемых терминов в игровой индустрии - "Полигон". Давайте добавим ещё одну точку С(6; -4) и сведём ребра АВ,ВС,СА.

-4

Поздравляю - мы получили наш первый полигон! Полигоны состоят из трёх и более ребер. Из полигонов же уже собираются трёхмерные модели. Но к ним позже. Как мы видим мы создали полигон в виде равнобедренного треугольника. Однако данный треугольник попросту не отрисуется в нашей игре. Сейчас он - это просто треугольная плоскость, которую будет просчитывать процессор.

Текстура

Давайте немного отвлечёмся от нашего разговора о математике и поговорим о том, что так часто вспоминают все игроки. Что же такое текстура? Просто говоря, текстура - это двумерное изображение или картинка. Картинка может сохранятся в любом из форматов изображений. Например .png .gif .jpg и т.д.
Давайте создадим небольшую текстуру для нашей статьи?

-5

Это кирпичная стена нарисованная в Paint. Давайте теперь посмотрим как мы можем применить эту текстуру в нашей игре.

Коллайдер (невидимая геометрия)

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

-6

Как мы можем использовать этот квадрат, не видя его в игре? Думаю мы все натыкались в играх на "Невидимые стены"? Это и есть наши коллайдеры! Любой объект из точек, которые составляют ребра, которые составляют полигоны может иметь коллайдер, с которым вы можете сталкиваться в игре, как видя его, так и не видя его. Чаще всего коллайдеры просчитываются на центральном процессоре.

Меш (видимая геометрия)

А теперь подключим нашу видеокарту, если она у вас есть:)
Итак, меш - это как раз та часть нашей статьи, где мы поговорим об отрисовке объектов в игре.
Материал на игровом сленге означает то, какие настройки шейдера будет использовать некий игровой объект.
Шейдер - это подробная инструкция по отрисовке меша игрового объекта. Для отрисовки меша необязательно использовать текстуру. В инструкции (в коде шейдера) может быть прописана как одноцветная отрисовка объекта, так и одноцветная заливка. С учётом теней и света и без. С отражениями и без них. Но про устройство шейдеров и материалов мы поговорим в другой статье. А сейчас давайте наложим нашу текстуру на наши два двумерных игровых объекта, чтоб наконец увидеть их.

Вот так вот будет выглядеть текстура использования в материале, который нанесён на меш нашего квадратного полигона:

-7

А вот так с треугольным полигоном:

-8

Трехмерные объекты

Ну и в завершении у кого-то мог возникнуть вопрос: "А как это работает с трехмерными объектами?". Всё очень просто! Нужно просто добавить нашей точке третью координату. Например точка А(4;-2;6). И всё, мы получим трехмерную модель.

-9

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

-10