В этом небольшом уроке я покажу как создаётся игровой кадр в консольной игре: "Pong", написанной мной на днях. Создав несколько таких игрушек, я понял как работают все подобные игры, основанные на простой консольной графике.
Итак, рендер каждого кадра можно разбить на 2 большие части: физика и непосредственно сама отрисовка. Обо всё по порядку...
1. ФИЗИКА
Пожалуй самый сложный, но при этом и самый важный процесс. Здесь происходит сразу несколько операций(опять же на примере "Pong"):
- Считывание нажатых клавиш. В зависимости от того, нажата ли была клавиша или нет, зависит весь следующий кадр. Например в этой игре, нажатая клавиша влияет на передвижение игрока.
- Передвижение игрока. Следующий шагом идёт передвижение игрока на определённые координаты вверх или вниз, как в случаи игры "Pong"
- Передвижение вражеского понга. Всё аналогично предыдущему пункту, лишь за одним исключением: перемещение зависит не от нажатых клавиш, а от специального алгоритма
- Передвижение шарика. Шарик также независим от клавиш и движется по своим физическим законам, отскакивая от боковых стен и понгов.
- Проверка столкновения шарика с понгами и концами поля. В данном случаи проверок не много, но в более сложных играх проверок и взаимодействий различных игровых объектов могут быть тысячи.
Все эти операции происходят лишь в числовых значениях. Понг игрока - это всего лишь набор координат: x,y - а передвижение врага - всего лишь хитрый алгоритм, меняющий всё те же 2 координаты. Все эти действия происходят лишь в изменении различный значений, никакой картинки на данном этапе нет!
2. ОТРИСОВКА
Вот этот этап уже более интересный. Благодаря нему, абстрактные числовые значения превращаются в понги, шарик, сцену. Как и предыдущий этап, он разбивается на несколько операций:
- Очистка всего экрана. Необходимая операция, чтобы последующие кадры с очень быстрой сменой создавали эффект анимации.
- Отрисовка понгов и шарика. В более серьёзных играх идёт отрисовка не пары-тройки объектов, как в текущем случаи, а сотен и даже тысяч одновременно!
- Отрисовка пользовательского интерфейса. В игре понг этого самого интерфейса немного(разделитель поля и счёт), но есть игры, где пользовательского интерфейса очень много(например MMORPG).
Отрисовка каждого кадра происходит каждые 0,015 секунды, просчитывая всю передвижения, взаимодействия и отрисовывая всё в единую игру. Благодаря такому короткому промежутку между кадрами, картинка кажется довольно плавной, и не создаётся впечатление слайд-шоу.
Спасибо за внимание, надеюсь Вам было интересно:) Надеюсь на лайки и подписку на канал. Дальше только интереснее!