Найти тему

Как работает простейший игровой рендер на примере консольной игры

Оглавление

В этом небольшом уроке я покажу как создаётся игровой кадр в консольной игре: "Pong", написанной мной на днях. Создав несколько таких игрушек, я понял как работают все подобные игры, основанные на простой консольной графике.

Итак, рендер каждого кадра можно разбить на 2 большие части: физика и непосредственно сама отрисовка. Обо всё по порядку...

1. ФИЗИКА

Пожалуй самый сложный, но при этом и самый важный процесс. Здесь происходит сразу несколько операций(опять же на примере "Pong"):

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

  • Передвижение игрока. Следующий шагом идёт передвижение игрока на определённые координаты вверх или вниз, как в случаи игры "Pong"
-3

  • Передвижение вражеского понга. Всё аналогично предыдущему пункту, лишь за одним исключением: перемещение зависит не от нажатых клавиш, а от специального алгоритма

  • Передвижение шарика. Шарик также независим от клавиш и движется по своим физическим законам, отскакивая от боковых стен и понгов.
-4

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

Все эти операции происходят лишь в числовых значениях. Понг игрока - это всего лишь набор координат: x,y - а передвижение врага - всего лишь хитрый алгоритм, меняющий всё те же 2 координаты. Все эти действия происходят лишь в изменении различный значений, никакой картинки на данном этапе нет!

2. ОТРИСОВКА

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

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

  • Отрисовка понгов и шарика. В более серьёзных играх идёт отрисовка не пары-тройки объектов, как в текущем случаи, а сотен и даже тысяч одновременно!
-7

  • Отрисовка пользовательского интерфейса. В игре понг этого самого интерфейса немного(разделитель поля и счёт), но есть игры, где пользовательского интерфейса очень много(например MMORPG).
-8

Отрисовка каждого кадра происходит каждые 0,015 секунды, просчитывая всю передвижения, взаимодействия и отрисовывая всё в единую игру. Благодаря такому короткому промежутку между кадрами, картинка кажется довольно плавной, и не создаётся впечатление слайд-шоу.

Спасибо за внимание, надеюсь Вам было интересно:) Надеюсь на лайки и подписку на канал. Дальше только интереснее!