Конструктор игр на python

Обновлено: 25.04.2024

В игровом мире доступно множество популярных игр, которые были разработаны с использованием фреймворков Python и его библиотек, например, Battlefield 2, Pirates of the Caribbean и многие другие. Большинство разработчиков используют язык Python вместо других языков программирования из-за его функциональных возможностей и надстроек. С развитием индустрии разработки игр программирование на Python стало исключительным выбором разработчиков для быстрого прототипирования видеоигр.

В этой статье мы обсудим 10 лучших фреймворков Python, которые используются для разработки игр:

  • Pygame
  • PyKyra
  • Pyglet
  • PyOpenGL
  • Kivy
  • Panda3D
  • Python – Ogre
  • Ren’Py
  • Cocos2d
  • Soya3D

1. Pygame

PyGame – это библиотека с открытым исходным кодом, которая используется для создания игр на Python, разработанных с использованием исключительной библиотеки SDL. Эта библиотека есть на языках C, Python, Native и OpenGL.

Pygame позволяет пользователю создавать полнофункциональные игры и мультимедийные программы. Библиотека очень портативна и может работать в любой операционной системе и на любой платформе.

Особенности библиотеки pygame для python:

  • В библиотеку легко входят многоядерные процессоры.
  • Используются оптимизированные коды C и Assemble для основных функций.
  • Pygame очень проста и портативна.
  • Может работать очень мало строк кода.

Pygame

2. PyKyra

Самый быстрый фреймворк языка Python – PyKyra, который используется для разработки игр. Фреймворк PyKyra основан на программной и документальной локализации(SDL) и движке kyra. Помимо таких стандартных функций, эта структура языка Python также поддерживает видео и звуки MPEG, такие как MP3, WAV, Ogg Vorbis, прямое чтение изображений и многое другое.

  • Фреймворк Pykyra разработан для поддержки боковых симметричных переводов и переводов сверху вниз.
  • В Pykyra пользователь может разделить экран на представления подокна, и каждое представление подокна имеет собственное преобразование объекта.
  • Движок Kyra быстр и обладает специальными кодированными алгоритмами, используемыми для рендеринга обновлений.
  • Этот фреймворк включает хорошо продвинутые инструменты, такие как редактор спрайтов и кодировщик.
  • Движок kyra также поддерживает объединение альфа-значений и преобразование цвета.
  • Все объекты в этой структуре встроены в регулируемую иерархию.
  • Pykyra также имеет функцию, с помощью которой сложные объекты можно указывать вверх и вниз всякий раз, когда они нарисованы или сопоставлены в предварительно кэшированной форме.

Фреймворк Pykyra

3. Pyglet

Pyglet – это мощная библиотека Python, которая представляет собой кроссплатформенный оконный и мультимедийный фреймворк с открытым исходным кодом. Используется для разработки игр и многих других визуально насыщенных приложений и программного обеспечения в операционных системах Windows, Linux и Mac OS X.

Pyglet – это библиотека языка Python, которая поддерживает пользовательский интерфейс, используемый для обработки событий, графики OpenGL, джойстиков, загрузки видео и изображений, работы с окнами, воспроизведения звуков и музыки. Библиотека Pyglet работает только под управлением Python 3.5 или более поздней версии Python. Она также работает с другими интерпретаторами Python, такими как Pypy.

Pyglet позволяет использовать его как для проектов с открытым исходным кодом, так и для коммерческих проектов и разработок с небольшими ограничениями.

Особенности библиотеки Pyglet:

  • Имеет портативное собственное оконное управление.
  • Эта библиотека также имеет встроенную поддержку изображений и аудио.
  • Библиотека Pyglet не требует никаких требований к установке, а также не имеет внешних зависимостей.

Библиотека Pyglet

4. PyOpenGL

Самая распространенная кроссплатформенная платформа Python – это PyOpenGL. Эта структура представляет собой привязку Python к OpenGL и связанным API. В среде PyOpenGL привязка была разработана с использованием стандартной библиотеки c-типов.

Это стандартизированная структура Python, которая является интероперабельной и имеет огромное количество внешних графических пользовательских интерфейсов, звуковых библиотек Python, таких как PyGame, Raw XLib, PyQt и многих других.

PyOpenGL

5. Kivy

Библиотека Kivy разработана с использованием новых пользовательских интерфейсов, например, приложений с поддержкой мультитач. Библиотека Kivy используется для быстрой разработки приложений и программного обеспечения.

Эта платформа работает на Windows, Android, Raspberry Pi, Linux, OS X и iOS. Естественно, она может использовать множество входов, устройств и протоколов, таких как Mac OS X Trackpad и Magic Mouse, Mtdev, WM_Touch, WM_Pen, ядро Linux HID и TUIO. Библиотека Kivy – это ускоренный графический процессор(GPU). Имеет более 20 виджетов, которые можно легко расширять.

Библиотека Kivy бесплатна для использования по лицензии MIT, начиная с версии 1.7.2, и LGPL 3 для предыдущих версий. Инструментарий этой библиотеки официально разработан, и пользователи могут использовать его в рыночном продукте.

Эта структура очень стабильна в использовании и имеет полностью документированный API, а также руководство по программированию, которое поможет пользователям начать ее использовать.

Библиотека Kivy

6. Panda3D

Panda 3d – это фреймворк на языке Python, написанный на Python и C ++. Это бесплатный движок с открытым исходным кодом, используемый для разработки трехмерных игр в реальном времени, моделирования, визуализации экспериментов и многого другого. Эта структура имеет инструменты командной строки для оптимизации и обработки исходного кода.

Panda 3d

7. Python-Ogre

Python – Orge – это фреймворк, используемый для разработки игр, также известный как PyOrge. Он написан на языке C ++, связывающем библиотеку Python для движка Orge 3d. Этот фреймворк является кроссплатформенным, отличается гибкостью и быстротой. Он поддерживает замечательный набор функций, который использовался для разработки увлекательных игр.

Фреймворк PyOrge фактически состоит из двух библиотек, называемых Orge3D и CEGUi. Orge3s – это движок 3D-рендеринга, а CEGUi – это система встроенного графического пользовательского интерфейса(GUI).

Orge применяется для разработки сцен и создания всей графики, которую пользователь хочет импортировать в игру. Фреймворк PyOrge используется для версий, разработанных до версии Orge v1.05. После этого доступно множество других модулей.

Программное обеспечение Orge также содержит скрипты Python для импорта данных из Blender в Orge. Эта структура упрощает для пользователя создание ресурсов в Blender для своей игры и может импортировать данные в Orge. В этой структуре также доступны другие формы экспортеров.

Python - Orge

8. Ren’Py

Ren’Py – это Python Framework, который можно использовать бесплатно и он кроссплатформенный. Этот фреймворк написан на Python и Cython. Ren’Py используется для цифрового повествования, что позволяет пользователям легко комбинировать слова, изображения и звуки, а также разрабатывать графические сюжеты и игры для воспроизведения жизни.

Поскольку движок Ren’Py поддерживает язык сценариев Python, который позволяет пользователям работать со сложной игровой логикой. Самым большим преимуществом этого фреймворка является то, что его можно использовать в любой операционной системе компьютера.

9. Cocos2d

Cocos 2D – это среда Python, которая используется для разработки игр, приложений, программного обеспечения и многих других интерактивных программ, основанных на кроссплатформенном графическом интерфейсе пользователя(GUI). Этот фреймворк основан на программном обеспечении с открытым исходным кодом.

Cocos 2d – это большое семейство, которое включает Cococs2D – x, Cocos2D – XNA и Ccos2D – JS. Этот фреймворк написан на языке программирования C ++. Он имеет тонкий слой зависимости от платформы, который можно использовать для создания игр, приложений и программного обеспечения. Cococs2D – JS – это версия движка на JavaScript, которая поддерживает полную функциональность Cocos2D – x, включая набор упрощенных API.

Cocos 2D

10. Soya3d

Soya 3D – это высокоуровневый фреймворк Python, используемый для разработки трехмерных видеоигр. Эта структура бесплатна для использования и находится под лицензией General Public License(GPL). Этот Framework представляет собой многоплатформенный движок разработки игр, который может работать в операционных системах Linux, Microsoft Windows и Mac OS X.

Создатель этого фреймворка описывает Soya 2D как игровой движок, полностью ориентированный на быструю разработку. Пользоваться им очень легко и просто. Основная цель этого фреймворка – дать возможность пользователям-любителям разрабатывать сложные трехмерные игры полностью на языке программирования Python.

Заключение

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

Многие разработчики приходят в разработку ПО, потому что хотят создавать игры. Не все могут стать профессиональными разработчиками игр, но любой может создавать собственные игры из интереса (а может быть, и с выгодой). В этом туториале, состоящем из пяти частей, я расскажу вам, как создавать двухмерные однопользовательские игры с помощью Python 3 и замечательного фреймворка PyGame.

Мы создадим версию классической игры Breakout. Освоив этот туториал, вы будете чётко понимать, что необходимо для создания игры, познакомитесь с возможностями Pygame и напишете собственный пример игры.

Мы реализуем следующие функции и возможности:

  • простые стандартные GameObject и TextObject
  • простой стандартный Game object
  • простая стандартная кнопка
  • файл конфигурации
  • обработка событий клавиатуры и мыши
  • кирпичи, ракетка и мяч
  • управление движением ракетки
  • обработка коллизий мяча с объектами игры
  • фоновое изображение
  • звуковые эффекты
  • расширяемая система спецэффектов


Краткое введение в программирование игр

Главное в играх — перемещение пикселей на экране и издаваемый шум. Почти во всех видеоиграх есть эти элементы. В этой статье мы не будем рассматривать клиент-серверные и многопользовательские игры, для которых требуется много сетевого программирования.

Основной цикл

Основной цикл (main loop) игры выполняется и обновляет экран через фиксированные интервалы времени. Они называются частотой кадров и определяют плавность перемещения. Обычно игры обновляют экран 30-60 раз в секунду. Если частота будет меньше, то покажется, что объекты на экране дёргаются.

Внутри основного цикла есть три основных операции: обработка событий, обновление состояния игры и отрисовка текущего состояния на экране.

Обработка событий

События в игре состоят из всего, что происходит за пределами управления кода игры, но относится к выполнению игры. Например, если в Breakout игрок нажимает клавишу «стрелка влево», то игре нужно переместить ракетку влево. Стандартными событиями являются нажатия (и отжатия) клавиш, движение мыши, нажатия кнопок мыши (особенно в меню) и события таймера (например, действие спецэффекта может длиться 10 секунд).

Обновление состояния

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

Существует также вспомогательное состояние, позволяющее управлять игрой:

  • Отображается ли сейчас меню?
  • Закончена ли игра?
  • Победил ли игрок?

Отрисовка

Игре нужно отображать своё состояние на экране, в том числе отрисовывать геометрические фигуры, изображения и текст.

Игровая физика

В большинстве игр симулируется физическое окружение. В Breakout мяч отскакивает от объектов и имеет очень приблизительную систему физики твёрдого тела (если это можно так назвать).

В более сложных играх могут использоваться более изощрённые и реалистичные физические системы (особенно в 3D-играх). Стоит также отметить, что в некоторых играх, например, в карточных, физики почти нет, и это совершенно нормально.

ИИ (искусственный интеллект)

Во многих играх мы сражаемся с компьютерными противниками, или в них есть враги, пытающиеся нас убить. Часто они ведут себя в игровом мире так, как будто обладают разумом.

Например, враги преследуют игрока и знают о его местоположении. В Breakout нет никакого ИИ. Игрок сражается с холодными и твёрдыми кирпичами. Однако ИИ в играх часто очень прост и всего лишь следует простым (или сложным) правилам, обеспечивающим псевдоразумные результаты.

Воспроизведение звука

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

Фоновая музыка — это просто музыка, постоянно играющая на фоне. В некоторых играх она не используется, а в некоторых меняется на каждом уровне.

Жизни, очки и уровни

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

Знакомство с Pygame

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

Что такое Pygame?

Pygame — это фреймворк языка Python для программирования игр. Он создан поверх SDL и обладает всем необходимым:

  • зрелостью
  • хорошим сообществом
  • открытым исходным кодом
  • кроссплатформенностью
  • качественной документацией
  • множеством примеров игр
  • простотой изучения

Установка Pygame

Введите pip install pygame , чтобы установить фреймворк. Если вам нужно что-то ещё, то следуйте инструкциям из раздела Getting Started в Wiki проекта. Если у вас, как и у меня, macOS Sierra, то могут возникнуть проблемы. Мне удалось установить Pygame без сложностей, и код работает отлично, но окно игры никогда не появляется.

Это станет серьёзным препятствием при запуске игры. В конце концов мне пришлось запускать её в Windows внутри VirtualBox VM. Надеюсь, ко времени прочтения этой статьи проблема будет решена.

Архитектура игры

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

Структура папок и файлов

Pipfile и Pipfile.lock — это современный способ управления зависимостями в Python. Папка images содержит изображения, используемые игрой (в нашей версии будет только фоновое изображение), а в папке sound_effects directory лежат короткие звуковые клипы, используемые (как можно догадаться) в качестве звуковых эффектов.

Файлы ball.py, paddle.py и brick.py содержат код, относящийся к каждому из этих объектов Breakout. Подробнее я рассмотрю их в следующих частях туториала. Файл text_object.py содержит код отображения текста на экране, а в файле background.py содержится игровая логика Breakout.

Однако существует несколько модулей, создающих произвольный «скелет» общего назначения. Определённые в них классы можно будет использовать в других играх на основе Pygame.

Класс GameObject

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


GameObject предназначен для того, чтобы быть базовым классом для других объектов. Он непосредственно раскрывает множество свойств его прямоугольника self.bounds, а в своём методе update() он перемещает объект в соответствии с его текущей скоростью. Он ничего не делает в своём методе draw() , который должен быть переопределён подклассами.

Класс Game

Класс Game — это ядро игры. Он выполняется в основном цикле. В нём есть множество полезных возможностей. Давайте разберём его метод за методом.

Метод __init__() инициализирует сам Pygame, систему шрифтов и звуковой микшер. Три разных вызова нужны, так как не во всякой игре на Pygame используются все компоненты, поэтому можно контролировать подсистемы, которые мы используем, и инициализировать только нужные с соответствующими параметрами. Метод создаёт фоновое изображение, основную поверхность (на которой всё отрисовывается) и игровой таймер с правильной частотой кадров.

Элемент self.objects хранит все игровые объекты, которые должны рендериться и обновляться. Различные обработчики управляют списками функций-обработчиков, которые должны выполняться при определённых событиях.


Методы update() и draw() очень просты. Они обходят все управляемые игровые объекты и вызывают соответствующие им методы. Если два объекта накладываются друг на друга на экране, то порядок списка объектов определяет, какой из них будет рендериться первым, а остальные будут частично или полностью его перекрывать.


Метод handle_events() слушает события, генерируемые Pygame, такие как события клавиш и мыши. Для каждого события он вызывает все функции-обработчики, которые должны обрабатывать события соответствующих типов.


Наконец, метод run() выполняет основной цикл. Он выполняется до тех пор, пока элемент game_over не принимает значение True. В каждой итерации он рендерит фоновое изображение и вызывает по порядку методы handle_events() , update() и draw() .

Затем он обновляет экран, то есть записывает на физический дисплей всё содержимое, которое было отрендерено на текущей итерации. И последнее, но не менее важное — он вызывает метод clock.tick() для управления тем, когда будет вызвана следующая итерация.

Заключение

В этой части мы изучили основы программирования игр и все компоненты, участвующие в создании игр. Также мы рассмотрели сам Pygame и узнали, как его установить. Наконец, мы погрузились в архитектуру игры и изучили структуру папок, классы GameObject и Game.

Во второй части мы рассмотрим класс TextObject , используемый для рендеринга текста на экране. Мы создадим основное окно, в том числе и фоновое изображение, а затем узнаем, как отрисовывать объекты (мяч и ракетку).

Разработка игр на Python — это не только PyGame, Tower Defense и платформеры, а это и DOOM, и MMORPG, и симуляторы свиданий/отношений, и визуальные новеллы, и конкурсы DARPA, и моделирование вселенной, и автотрекинг низкоорбитальных спутников.

Под катом список 9 библиотек для разработки игр и полезные гайды к каждой библиотеке.

image

Pygame


Pygame — набор модулей (библиотек) языка программирования Python, предназначенный для написания компьютерных игр и мультимедиа-приложений. Pygame базируется на мультимедийной библиотеке SDL. Изначально Pygame был написан Питом Шиннерсом (Pete Shinners). Начиная примерно с 2004/2005 года поддерживается и развивается сообществом свободного программного обеспечения. Игры: Frets on Fire и Dangerous High School Girls in Trouble и «Save the Date»

Arcade

image

Arcade — это среда разработки на Python для создания игр с привлекательной графикой и звуком. Она проста в использовании и очень эффективна, когда вы набираетесь опыта. Автор библиотеки преподавал геймдев и был разочарован медленными обновлениями PyGame и сделал свой инструмент.

Cocos2d

image

Cocos2d — это фреймворк для создания 2D-игр, демонстраций и других графических/интерактивных приложений.

Harfang3D

image

Harfang3D — фреймворк Python для 3D, VR и разработки игр.

Panda3D

image

Panda3D — 3D игровой движок, разрабатываемый Disney с 2002 года. Включает работу с графикой, звуком, вводом-выводом, обнаружением столкновений. С 2008 года стал opensource.
Disney сделал две MMORPG — Toontown Online и Pirates of the Caribbean Online.
Так же на Панде сделаны Ghost Pirates of Vooju Island и A Vampyre Story

PyOgre

image

PyOgre — привязка для 3д-рендерингового движка Ogre 3D для разработки игр и симуляций. Отлично подходит для новичков и быстрого прототипирования 3д-игр с простотой Python.

Ren'Py



RenPy — это бесплатный, свободный и открытый движок для создания как некоммерческих, так и коммерческих визуальных романов (графических квестов с диалоговой системой) в 2D-графике. Свыше 4800 игр [5] используют движок Ren’Py, подавляющее большинство игр на английском языке. Автором данного движка является PyTom.

Учу Python и в перспектива думаю заняться разработкой игрушек. В основном 2d или 2,5d. Вопрос из заголовка понятен, но хочу ещё уточнить, по поводу Юнити - вроде говорят что можно и на Python писать, это правда? Или вы посоветуете другие движки?
Спасибо!

На данный момент для Python есть следующие движки на выбор:

2D:
- Cocos 2D (сам лично им не пользовался и ничего сказать не могу, но знаю, что русскоязычное сообщество использует этот движок для с++, вместо python)

- Kivy (это потомок Pygame, о котором напишу ниже. В основном он предназначен для создания приложений под андроид, но 2D игры тоже на нём делают)

- Собственно PyGame (Это библиотека Python для создания 2D игр. Очень проста в освоении и есть много уроков и книг на английском и русском. Можно создать практически любую 2D игру. Русское сообщество тоже есть. Хорошая книга на русском здесь)

- Так же есть 2D + 3D движок с внутренним языком программирования, который очень похож на Python. Т.е если знаешь Python, то этот ЯП освоишь максимум за неделю или даже меньше. Godot Engine

3D:
- Из 3D движков единственные это Blender Game Engine. Движок прост в освоении и, в принципе, даже не надо знать языка программирования для создания хорошей игры. Однако если знаешь Python, то это большой плюс, так как скрипты для этого движка пишутся именно на этом языке. Хорошая книжка по движку здесь, а здесь перевод. Примеры игр: раз, два.

- И , конечно же, Panda 3D. Это не конструктор игр, как Blender Game Engine, где ты создаешь игру, не написав строчки кода. Это конкретный игровой движок, где ты с нуля пишешь код на Python используя API этого движка и создаешь 3D игру. Я сейчас сам его осваиваю и у движка есть живое русскоязычное сообщество, где могут подсказать если что. Так же по движку много видео уроков и книг на английском. Вот одна из этих книг- она на английском, но написано всё понятно, что даже я, не зная инглиш, понимаю))))) Примеры игр: раз, два, три.

Python – самый универсальный язык, и он присутствует почти во всех областях, включая веб-разработку, машинное обучение, искусственный интеллект, приложения с графическим интерфейсом, а также разработку игр.

Python предоставляет встроенную библиотеку под названием pygame, которая использовалась для разработки игр. Как только мы поймем базовые концепции языка программирования, мы сможем разработать игру на Python с библиотекой Pygame с привлекательной графикой, подходящей анимацией и звуком.

Pygame – это кроссплатформенная библиотека, которая используется для разработки видеоигр. Она включает компьютерную графику и звуковые библиотеки. Она разработана Питом Шиннерсом для замены PySDL.

Установка Pygame

Откройте терминал командной строки и введите следующую команду, чтобы установить pygame.

Простой пример Pygame

Вот следующий пример создания простого окна pygame.

Как разработать игру на Python

Вся графика будет отображаться в окне pygame.

Давайте разберемся с основным синтаксисом вышеуказанной программы.

import pygame – это модуль, который позволяет нам работать со всеми функциями pygame.

pygame.init() – используется для инициализации всех необходимых модулей pygame.

pygame.display.set_mode((ширина, высота)) – используется для изменения размера окна. Он вернет объект поверхности. Объект поверхности используется для выполнения графических операций.

pygame.QUIT – используется для закрытия события, когда мы нажимаем крестик в углу окна.

pygame.display.flip() – используется для отображения любого обновления игры. Если мы внесем какие-либо изменения, нам нужно будет вызвать функцию display.flip().

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

Давайте разберемся со следующим примером рисования фигуры на экране.

Рисование фигуры на экране

В приведенном выше примере мы нарисовали различные формы, такие как треугольник, прямая линия, прямоугольник, эллипс, круг, дуга, закрашенный круг и овал. Мы использовали функцию pygame.draw в соответствии с формой с подходящими аргументами.

Пример – разработка игры Snake с использованием Pygame

Выход разработки игры Snake

Мы можем играть снова, нажав кнопку ОК. Мы можем увидеть наш результат в терминале Pycharm(мы использовали Pycharm IDE; вы можете использовать любую Python IDE).

Код игры

Скопируйте приведенный выше код и вставьте его в свою среду IDE и получайте удовольствие. Чтобы понять концепции Pygame, посетите наш полный учебник по Pygame.

Читайте также: