Глава 20 · Разработка игр с Pygame

Библиотека, фреймворк или движок: где находится Pygame

Pygame — это библиотека, а не движок: она даёт кирпичики, а структуру игры вы строите сами.

«Разработка игр» звучит как один инструмент, но на самом деле это целая лестница инструментов с разной степенью готовой структуры — и Pygame стоит на конкретной ступеньке этой лестницы, не на самом верху и не на самом низу.

Три уровня инструментов

От кирпичиков к готовой мастерской
Библиотека
Даёт отдельные «кирпичики»: окно, отрисовку, звук, ввод
Структуру приложения строите сами
Pygame — именно библиотека
Фреймворк
Задаёт общую структуру приложения
Вы заполняете предусмотренные места своим кодом
Пример духа подхода: Flask из главы 22 для веба
Движок
Полная среда: визуальный редактор, физика, свет, звук из коробки
Пишете код меньше, настраиваете компоненты больше
Примеры: универсальные игровые движки с редактором сцен

Pygame — это библиотека: она даёт окно, поверхность для рисования, обработку клавиш и звук, но игровой цикл, столкновения и структуру всего проекта вы пишете сами, своими руками. Это осознанный компромисс между уровнем контроля и скоростью старта:

Pygame (библиотека)Типичный игровой движок
Кривая обученияНужно понимать цикл, кадры, координатыМногое можно сделать без кода вовсе
Контроль над деталямиБолее прямой контроль над циклом и низкоуровневыми решениямиБольше готовой структуры; степень контроля зависит от движка
Визуальный редактор сценНет — сцена собирается кодомОбычно есть
Встроенная физика/светНет — реализуете сами или подключаете отдельноОбычно есть из коробки
Что получаете взаменГлубокое понимание того, как игра устроена изнутриСкорость сборки крупного проекта

Pygame и SDL

Сам Pygame не рисует пиксели и не говорит со звуковой картой напрямую — под капотом он опирается на библиотеку SDL (Simple DirectMedia Layer), написанную на C: она отвечает за низкоуровневую работу с окном, вводом, графикой и звуком на разных операционных системах. Pygame даёт этому питоновскую, удобную обёртку.

Зачем учиться на библиотеке, если есть движки
Понятия, которые вы осваиваете в этой главе — игровой цикл, кадр, время между кадрами, система координат, столкновение прямоугольников — переносятся между инструментами разработки игр в своих основных идеях, включая крупные визуальные движки. Но конкретная архитектура, API, физический timestep, модель сцен и система столкновений могут сильно отличаться, а движок к тому же часто прячет эти понятия за интерфейсом кнопок и слайдеров. Изучив их напрямую через код, вы будете лучше понимать, что происходит за этими кнопками — а не только уметь их нажимать.