Почему разработка игр на Python не умерла: Godot и другие библиотеки в геймдеве
Игры можно писать не только на плюсах и C#. Конечно, это будут не крупные проекты с мощным движком и огромным количеством героев и NPC. Рассказываем, как создаются игры на Python и какие есть геймдев-библиотеки.
466 открытий4К показов
Когда речь заходит о разработке игр, многие сразу вспоминают языки программирования, такие как C++ или C#, которые считаются стандартом в крупных студиях. Однако Python, несмотря на свою репутацию как инструмента для скриптинга и быстрого прототипирования, продолжает оставаться актуальным и используется в разработке игр. Конечно, если речь идет о движке в условном Ведьмаке, никто не будет писать его на питоне — язык для этого слишком медленный. Но даже если он не подходит для AAA-проектов с высокой производительностью, питон активно используется на инди-сцене и любительских проектах.
Разбираемся, почему игры на Python живут и развиваются, а также рассмотрим движки и библиотеки, которые помогают разработчикам создавать проекты на этом языке.
Как и почему Python используется в геймдеве
Движок — очень важная часть игры, но есть и периферийные сервисы, поддерживающие работу игры. В общем, геймдев — не только про Unreal Engine, Unity и Source, поэтому питон не стоит сбрасывать со счетов. Вот что он может в разработке игр:
- Быстрое прототипирование. Python идеально подходит для того, чтобы создавать тестовые версии игры. Это позволяет разработчикам быстро проверять идеи и тестировать механику без необходимости погружаться в более сложные и производительные языки вроде C++ или C#.
- Создание игровой логики. В больших проектах Python может использоваться для написания игровых скриптов или логики поведения персонажей. Например, известный игровой движок Unreal Engine использует Python для управления различными инструментами редактора и задач автоматизации.
- Написание внутриигровых скриптов. Питон не может работать с графикой, поэтому внутриигровые скрипты — те, где нет рендеринга. Например, взаимодействие NPC, обработка событий и статистика противников. Эти скрипты могут вызывать методы движка и наоборот — движок вызывает функции в скриптах для обработки событий. Это позволяет разработчикам изменять игровую логику без перекомпиляции всего кода, что значительно ускоряет процесс разработки.
- Широкая экосистема библиотек. Python предлагает множество библиотек и фреймворков для разработки игр. Это позволяет создавать как 2D-игры с Pygame, так и более сложные проекты с помощью движков, таких как Godot, поддерживающих Python или его аналоги.
Удивительно, но факт: Python используется во многих знакомых нам играх — Battlefield 2, The Sims 4 и World of Tanks. Например, в WoT сервер работает на движке BigWorld, который написан на C++ и Python. Все, что важно для скорости и производительности, написано на C++, а остальное сделано на Python.
Что такое Godot и как Python интегрируется в современный игровой движок
Godot Engine — популярный движок для создания как 2D-, так и 3D-игр, который предлагает простой в освоении язык GDScript. Этот язык синтаксически напоминает Python, что делает его удобным для разработчиков, знакомых с Python. Хотя Godot больше ориентирован на GDScript, он поддерживает Python для написания дополнительных инструментов или выполнения специфических задач. Вот здесь можно посмотреть игры, написанные на Годоте.
На GitHub лежит плагин, который позволяет использовать Python, подобный GDScript. В таком случае разработчик одновременно получает доступ к функциям движка Godot и пишет на знакомом и любимом питоне.
Вот пример скрипта на py4godot:
Другой способ — установить godot-python. Сейчас разработчики готовят огромное обновление под Godot 4. Подробнее про установку, интеграцию и активацию плагина можно почитать в документации.
Вот пример простого скрипта, который отвечает за передвижение персонажей:
Что делает код:
Player(Sprite)
— класс персонажа, который расширяет Sprite._ready()
— вызывается при запуске сцены и выводит сообщение в консоль._process(delta)
— функция, которая вызывается каждый кадр (игровой цикл), где персонаж движется в зависимости от нажатых клавиш.- Вектор
velocity
— используется для управления направлением движения персонажа. - Настройка ввода (Input Map): В разделе Project -> Project Settings -> Input Map добавьте действия
ui_right
,ui_left
,ui_up
,ui_down
и назначьте им клавиши (например, стрелки или WASD).
Благодаря модульной архитектуре, Godot можно легко адаптировать к проектам любой сложности. Например, в инди-играх он часто используется для прототипирования и разработки конечных продуктов, включая мобильные платформы.
Что по библиотекам
Но помимо движка есть еще и библиотеки для геймдева — о некоторых из них ниже.
Pygame: классика для 2D-игр
Одной из самых популярных библиотек для разработки игр на Python остаётся Pygame. С помощью Pygame разработчики могут легко создавать 2D-игры. Эта библиотека предоставляет доступ к основным функциям, таким как графика, звуки, ввод от пользователя и обработка событий.
На Pygame пишут самую классику — змейку, сапера, пинг-понг. Здесь можно посмотреть код Flappy Bird, вот небольшой кусочек из него:
Из плюсов pygame — производительность (за счет языков C и ассемблера), модульная структура, а еще можно програть прямо из командной строки.
PyOnenGL: библиотека для 3D
Библиотека дает доступ к мощным возможностям OpenGL для создания 3D-графики. Да, мы уже говорили, что питон — далеко не самый оптимальный выбор для сложных 3D-игр, но PyOpenGL в целом поможет создать небольшой симпатичный проект или прототипы.
Здесь можно посмотреть 3D-игру про мумий, написанную с помощью PyOpenGL и Pygame (в ней даже есть читы!), а здесь — геймплей. Выглядит код примерно так:
Pyglet: инди-минимализм
Это лёгкая библиотека для создания игр и мультимедийных приложений. Она поддерживает работу с графикой через OpenGL и предоставляет инструменты для отображения текста, работы со звуком и анимациями. Подходит для 2D и небольших 3D-игр, а также для инди-проектов.
Вот кусочек кода с pyglet из Змейки — здесь прописывается, как генерируется еда:
Выглядит примерно вот так:
Разработка игр на Python остаётся популярной не только благодаря его простоте, но и потому, что он позволяет отделить игровую логику от сложных аспектов производительности, таких как графика и физика. А еще это отличный способ для новичков зайти в геймдев — C++ будет выучить гораздо сложнее, а код на Питоне дает базовые представления об игровой логике и, например, взаимодействии с персонажами.
А вы делали игры на Python?
Зачем, если есть плюсы?
Да, в самом начале тренировался на нем
Да, до сих пор делаю небольшие проекты
466 открытий4К показов