Какие игры можно создать на python
Перейти к содержимому

Какие игры можно создать на python

  • автор:

20 игр на Python своими руками с полным исходным кодом

20 проектов по созданию игр на Python с.полным кодом.

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

Это клон адаптация игры с динозавриком на google chrome под названием «T-Rex Dino Run».

Игра ведется в простом интерфейсе, в котором используются только кнопки и текст.

Человек может начать викторину, нажав на кнопку «Старт». Также можно выбрать тип слов, которые необходимо исправить в викторине.

Игра «Камень, бумага, ножницы» на Python разработана с использованием Tkinter и графического интерфейса пользователя (GUI).

Эта игра «Прыгающий мяч» использует Canvas для прорисовки объектов.

Игра «Виселица» не требует никаких специальных модулей, кроме random и time.

Игра «Змейка» — это классическая аркадная игра.

Военная игра «Самолеты» на Python на pygame

Это игра между компьютером и пользователем. Простая танковая игра Python.

Игра с хорощей графикой и удобным управлением.

Создаем свой тетрис на питоне.

Игры, в которых использовался Python

Обложка поста Игры, в которых использовался Python

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

Игры, в которых использовался Python 1

Вот некоторые из самых известныx игр, в которых был в той или иной мере использован Python:

Battlefield

(2005 / Digital Illusions CE (DICE) / Стокгольм)

Все серии Python используется в игре для различных нужд, от серверных элементов управления до внутренней логики игры. Battlefield — это одна из самых популярных игр в жанре симулятора войны, которая хорошо известна на весь мир.

EVE Online

(2003 / CCP Games / Исландия)

Это многопользовательская онлайн ролевая игра (MMORPG), действие которой разворачивается в антураже научно-фантастического пространства. Пользовательская база насчитывает более 500 000 игроков. EVE Online полностью написана на StacklessPython, что делает ее одной из крупнейших игр, использующих Python для своих нужд.

Mount Blade

(2008 / Tale Worlds / Турция)

Ролевая игра, действие которой происходит в средние века. Игра была разработана всего лишь двумя людьми, мужем и женой, они использовали скрипты на языке Python для обеспечения модульности игры. Особенности игры — это огромный игровой мир и эпические сражения в реальном времени.

Sims 4

(2014 / Е.А. Maxis Sims Studio / США)

По праву является самой известной игрой в жанре симуляции жизни. Sims 4 — первая компьютерная игра, которая занимала лидирующие позиции на всевозможных игровых чартах на протяжении двух лет, и продалась в объеме 408,150 экземпляров по всему миру в течение первых четырех дней. На сегодняшний день продано более 1.1 миллиона копий по всему миру, что делает Sims 4 одной из самых продаваемых игр, которые использует Python — для обеспечения внутриигрового моддинга, открывающего пользователям огромные возможности по изменению параметров игры.

Civilization IV

(2005 / Firaxis Games / США)

Это компьютерная игра в жанре пошаговой стратегии. Цель игрока — подчинить себе весь мир путем дипломатических переговоров или кровожадной войны. Большая часть игры написана на Python, и Boost Python, что дает возможность пользователям собственноручно создавать модификации для игры.

Frets On Fire (FoF)

(2006 / Unreal Voodoo / Финляндия)

Музыкальная игра с открытым и свободным исходным кодом, которая сама по себе имитирует коммерческую игру Guitar Hero. Игра полностью написана на Python с использованием библиотеки Pygame. Благодаря открытости и простоте кода, игра представляется как хорошая площадка для изучения и практики программирования.

Игры, в которых использовался Python 2

Спасибо CheckiO за интересную статью.

Игры на Python: примеры и перспективы

О чем речь? Считается, что игры на Python не пишутся, так как этот язык программирования не подходит для развлечений. Однако на самом деле существуют известные и даже крупные проекты, например, EVE Online.

На что обратить внимание? Критики выбора Python для создания игр тоже правы. Язык действительно практически не используется для написания движка, но зато регулярно применяется для создания логики, запуска скриптов.

В статье рассказывается:

  1. Роль Python в разработке игр
  2. Плюсы и минусы Python для разработки игр
  3. 10 библиотек Python для игр
  4. Алгоритм создания игры на Python
  5. Примеры игр, в которых используется Python
  6. Часто задаваемые вопросы об играх на Python

Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains

Роль Python в разработке игр

Чтобы разобраться, для чего в их разработке используется этот популярный язык программирования, рассмотрим несколько их категорий:

  • высокобюджетные AAA-проекты (triple-A) от крупных студий (например, Assassin’sCreed и Call of Duty);
  • инди-игры от независимых разработчиков;
  • игры для мобильных устройств.

Все их типы, включая крупные 3D проекты, работают на базовом программном обеспечении, иными словами — на игровом движке, представляющим собой своеобразный набор инструментов, который обеспечивает функционирование различных компонентов игры, включая графику, физические взаимодействия объектов в игре, звуки и так далее.

Поскольку игровой движок требует высокую производительность, Python — не лучший выбор для написания ядра игр. Он работает медленнее, чем другие языки программирования, поэтому чаще всего для движка используются С/С++, С# или другие компилируемые языки. Несмотря на это, есть примеры специальных игровых движков, полностью написанных на Python.

Unity, Unreal Engine 4, CryEngine, Source и другие движки, написанные на С++, популярны среди известных компаний-разработчиков. Часто на этом языке ими пишутся и собственные движки, например Anvil, Fox, REDengine.

Основные компоненты и системы игр (переходы в меню, смена локаций и музыки, диалоги персонажей, движения камеры и смена кадров, элементы искусственного интеллекта) пишутся на различных языках, в зависимости от того, какой из них совместим с движком.

К примеру, в игровом движке Unreal Engine 4 используются С# как основа для Unity, а также С++, Blueprint и аналог JavaScript. В какой-то момент для него пробовали использовать Boo (Python с типизацией), но впоследствии от него отказались. Только один из популярных движков крупных разработчиков (Godot) использует похожий на Python язык как основной. В этом движке используется GDScript.

Игры, полностью написанные на Python, встречаются редко. Как правило, он не применяется в качестве основного языка для масштабных игр, хотя имеет все возможности для работы с различными элементами систем. Однако он часто становится вспомогательным.

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

Написанные на Python скрипты позволяют разделить логику игры и основные ее элементы, такие как графика, физические процессы, сетевое взаимодействие, ввод и вывод и прочее. Например, скрипты на Python обеспечивают запуск отдельных сцен, диалогов, а также взаимодействие персонажей друг с другом, бег, ходьбу, взаимодействие с NPC (Non-player character, неигровой персонаж). Такие скрипты также используются для отображения статистики противников (скорости, точности, здоровья) и разных процессов в игре.

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

Плюсы и минусы Python для разработки игр

В последние годы Python набирает популярность. Он все чаще используется в разработке программ любых типов и сложности благодаря своей мощности и универсальности. Игры на языке Python могут быть разными: как простыми текстовыми, так и масштабными 3D-проектами.

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

Узнай, какие ИТ — профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains

Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.

Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains

Павел Симонов
Исполнительный директор Geekbrains

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Получить подборку бесплатно
Уже скачали 26493

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

Игры на Python создаются как в 2D, так и в 3D-формате. Пользуясь библиотеками подпрограмм, разработчики имеют огромные возможности для творчества: начиная с разработки игр в жанре платформер или шутер до более сложных стратегических, ролевых (RPG) и игр с открытым виртуальным миром.

Библиотеки Python (например, TensorFlow, Scikit-learn) также позволяют работать с искусственным интеллектом, который позволяет делать игры с возможностью обучения и адаптации к действиям пользователя.

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

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

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

  • Как уже отмечалось выше, среди языков программирования это один из самых мощных и универсальных. Пользуясь им, разработчики имеют доступ к большому количеству библиотек. Он легок в изучении и применении, что позволяет писать на нем коды для игр любой сложности, включая проекты с детализированной графикой.
  • Может быть обеспечена максимально высокая частота кадров в играх, и проблем с запуском не возникнет. Кроме того, Python позволяет оптимизировать приложения для мобильных и других платформ.
  • Благодаря популярности этого языка любой новичок имеет возможность начать разработку собственных проектов. Поддержку им может оказать большое сообщество профессионалов, которые уже давно работают с Python.

Есть также трудности, с которыми можно столкнуться, используя этот язык для разработки игр:

  • Сложности со встроенной поддержкой звука и графики. Разработчики сталкиваются с проблемой нестабильности некоторых библиотек (Pygame, Pyglet) и уделяют слишком много времени попыткам изучить, как эффективно использовать их.
  • Проблемы также связаны с тем, что поддержка сети не встроена.
  • Скорость Python значительно ниже, чем у других языков. Разработчикам требуется больше усилий для оптимизации кода для выполнения отдельных задач.

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

10 библиотек Python для игр

Pygame

Pygame — это библиотека для Python с открытым исходным кодом, которая помогает создавать игры. Она основана на библиотеке SDL и доступна для разных языков, таких как C, Python, Native и OpenGL.

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

Библиотека Pygame для Python обладает следующими особенностями:

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

Для вас подарок! В свободном доступе до 25.02 —>
Скачайте ТОП-10 нейросетей, которые помогут облегчить
вашу работу
Чтобы получить подарок, заполните информацию в открывшемся окне

PyKyra

Это один из быстрых фреймворков, позволяющих создание игры на Python. Он базируется на библиотеке SDL (программной и документарной локализации) и движке kyra. Этот фреймворк предоставляет стандартные функции для создания игр, а также поддерживает работу с видео и звуками в форматах MPEG, такими как MP3, WAV, Ogg Vorbis, а также позволяет непосредственно работать с изображениями и имеет много других возможностей:

  • Поддержка различных видов переводов: как боковые симметричные (горизонтальные), так и сверху вниз (вертикальные).
  • Множество представлений подокон позволяет разделить экран, и каждое подокно может иметь свои собственные преобразования объектов.
  • Быстрый движок с оптимизированными алгоритмами обеспечивает эффективный рендеринг обновлений в игре.
  • Продвинутые инструменты, такие как редактор спрайтов и кодировщик, облегчают создание игровых ресурсов.
  • Движок Kyra позволяет объединять альфа-значения и изменять цвета, что полезно для создания эффектов и анимаций.
  • Все объекты в PyKyra встроены в удобную иерархию, что облегчает управление ими.

Таким образом, PyKyra — это мощный фреймворк для создания игр с поддержкой разнообразных функций и инструментов для удобства их разработки.

Pyglet

Еще одна полезная кроссплатформенная оконная и мультимедийная библиотека. Она имеет открытый исходный код. Основная сфера применения — разработка игр, приложений с ярким визуальным контентом и программ в Windows, Linux и Mac OS X.

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

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

Эта библиотека имеет следующие отличительные черты:

  • предоставляет переносимое собственное управление окнами;
  • включает встроенную поддержку работы с изображениями и звуком;
  • не зависит от внешних источников и не требовательна для установки.

PyOpenGL

Это самая популярная кроссплатформенная библиотека для Python, которая создана для связи с OpenGL и связанными с ними API. В PyOpenGL используется стандартная библиотека C-типов для обеспечения интероперабельности.

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

Kivy

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

Она поддерживает множество платформ, включая Windows, Android, Raspberry Pi, Linux, OS X и iOS, и может взаимодействовать с разнообразными входными устройствами и протоколами, такими как трекпады Mac OS X, сенсорные экраны, перо, устройства ввода Linux и другие. Kivy включает в себя ускоренный графический процессор (GPU) и предоставляет более 20 виджетов, которые легко настраивать и расширять.

Библиотека Kivy доступна для использования по лицензии MIT (начиная с версии 1.7.2) и LGPL 3 (для более ранних версий), что позволяет ее использовать в коммерческих продуктах. Она обладает высокой стабильностью, документированным API и руководством по программированию, что облегчает начало работы для разработчиков.

Panda3D

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

Python-Ogre

Этот фреймворк (также известный как PyOgre) представляет собой программную платформу для создания игр, основанную на библиотеке Ogre3D. Это кроссплатформенная библиотека, которая написана на языке C++. Предоставляет гибкие и быстрые возможности для разработки увлекательных игр.

Python-Ogre состоит из двух основных библиотек: Ogre3D, которая представляет собой движок 3D-рендеринга, и CEGUi, систему встроенного графического пользовательского интерфейса (GUI). Используется для создания сцен и графики в игре. Фреймворк PyOgre используется для версий, разработанных до версии v1.05. После этого доступно множество других модулей.

Ogre также включает в себя скрипты на Python, которые облегчают импорт в него данных из Blender. Это позволяет пользователям создавать ресурсы в Blender для своих игр и легко импортировать их в Ogre. Кроме того, в этой структуре доступны и другие формы экспортеров для удобства работы с различными типами данных.

Ren’Py

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

Дарим скидку от 60%
на курсы от GeekBrains до 25 февраля
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

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

Cocos2d

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

Имеет различные варианты, включая Cocos2D-x, Cocos2D-XNA и Cocos2D-JS. Он написан на языке C++, обладает минимальной платформозависимостью и предоставляет инструменты для разработки разнообразных приложений и игр. Cocos2D-JS — это версия фреймворка, основанная на JavaScript, которая сохраняет полную функциональность Cocos2D-x и предоставляет простой набор API для разработчиков.

Soya3d

Это фреймворк высокого уровня, который позволяет создавать трехмерные игры. Soya3d бесплатна, использует лицензию General Public License (GPL). Совместима с разными платформами и операционными системами, включая Windows, Mac OS X, Linux.

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

Алгоритм создания игры на Python

Давайте создадим настоящую игру, чтобы более подробно изучить работу Pygame.

Геймплей игры следующий: на экране будет присутствовать главный персонаж в виде графического объекта, управляемого мышью. С определенными интервалами времени на экране будут появляться монеты. Если персонаж пересекается с монетой или поднимает ее, игрок получает 10 очков. Постепенно монеты будут появляться все быстрее, что делает игру более сложной. Игра завершается, когда на экране находится более десяти монет или если игрок закрывает окно. Эта простая игра на Python будет выглядеть в виде кода следующим образом:

# Импортируем библиотеку и инициализируем

# Случайное размещение монет

from random import randint

from pathlib import Path

from typing import Tuple

# Установка размеров окна

# Настройка частоты появления монет (мс)

# Максимальное количество монет на экране для завершения игры

# Определяем вид графического объекта для игрока

«»»Инициализация вида игрока»»»

# Определение изображения персонажа

Path.cwd() / «pygame» / «images» / «alien_green_stand.png»

# Загрузка изображения, настройка альфа-канал для прозрачности

# Добавление прямоугольника для перемещения объекта

def update(self, pos: Tuple):

«»»Обновление позиции персонажа

pos — (X,Y) позиция для движения персонажа

# Определение графического изображения для монет

«»»Инициализация вида монеты»»»

# Определение изображения монеты

coin_image = str(Path.cwd() / «pygame» / «images» / «coin_gold.png»)

# Загрузка изображения, настройка альфа-канала для прозрачности

# Определение позиция для старта, генерация случайной позиции

randint(10, WIDTH — 10),

randint(10, HEIGHT — 10),

screen = pygame.display.set_mode(size=[WIDTH, HEIGHT])

# Скрыть курсор мыши

# Запуск часов для фиксации времени

# Создание события для добавления монеты

ADDCOIN = pygame.USEREVENT + 1

# Настройка списка монет

# Установка звука для сбора монет

str(Path.cwd() / «pygame» / «sounds» / «coin_pickup.wav»)

# Создание графического изображения игрока и установка на позицию старта

# Запуск цикла событий

# Проверка, нажал ли пользователь кнопку закрытия окна

for event in pygame.event.get():

if event.type == pygame.QUIT:

# Определение условий для добавления монеты

elif event.type == ADDCOIN:

# Добавление новой монеты

# Ускорение игры при наличии менее трех монет на экране

# Установка ограничения скорости

# Запуск нового таймера

# Обновление позиции персонажа

# Проверка, собрал ли герой монету и удаление, если да

sprite=player, group=coin_list, dokill=True

for coin in coins_collected:

# Установка счета за собранные монеты

# Воспроизведение звука для сбора монеты

# Проверка допустимого количества монет

if len(coin_list) >= COIN_COUNT:

# Если лимит превышен, игра останавливается

# Установка цвета фона

screen.fill((255, 170, 164))

for coin in coin_list:

# Вывод текущего счета

score_font = pygame.font.SysFont(«any_font», 36)

score_block = score_font.render(f»Score: », False, (0, 0, 0))

screen.blit(score_block, (50, HEIGHT — 50))

# Отображение всех элементов на экране

# Установка скорости обновления

# Вывод итогового результата

print(f»Game over! Final score: »)

# Возврат видимости курсора

В Pygame спрайты имеют только базовый функционал, который расширяется в написанном коде с помощью подклассов для персонажей (Player) и монет (Coin). Эти объекты хранятся в self.surf и позиционируются с использованием self.rect.

Чтобы добавлять монеты на экран через равные временные интервалы, используется функция таймера time.set_timer(), который отсчитывает время до миллисекунд (coin_countdown). Событие ADDCOIN вызывает создание нового объекта Coin и добавление его в coin_list. Затем необходимо проверить, сколько монет отображается на экране: меньше трех — уменьшаем значение coin_countdown, при этом происходит остановка таймера и запуск нового.

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

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

Примеры игр, в которых используется Python

В 2002 году появилась необычная ролевая игра под названием Freedom Force. Её разработала известная студия Irrational Games (известная по таким проектам как System Shock, BioShock и SWAT 4). Игра представила нам захватывающий рассказ о команде супергероев, которые спасали Америку с юмором, пародией и шутками на самом высоком уровне. Помимо этого, она также выделялась тактической глубиной и возможностью взаимодействовать с окружающей средой. Например, на злодеев можно было нападать с помощью вырванных из асфальта столбов или даже использовать светофоры в битве.

Только до 22.02
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»

Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне

Несмотря на все разговоры о сюжетной линии одиночных игр и лаврах Call of Duty, по интенсивности онлайн-сражений ни одна игра не смогла превзойти бренд Battlefield. В разработке нескольких игр из этой франшизы, таких как Battlefield 2, Battlefield 2142 и Battlefield Heroes, был задействован Python. Эти проекты по достоинству оценили как критики, так и пользователи. Такие игры показали, что соперничество с живыми игроками всегда приносит уникальный и более интересный опыт по сравнению со сражениями с искусственным интеллектом. О ценности сюжетных одиночных игр мы можем поговорить в другой раз.

Онлайновый космический симулятор EVE Online, одна из самых популярных игр, был разработан с использованием языка Python. Этот проект является, возможно, наиболее заметным примером применения этого языка в игровой индустрии. EVE Online — игра, которая отличается своей уникальностью и имеет высокий порог входа, что делает её малоподходящей для случайных игроков.

Более того, игра не предоставляет условно-бесплатную модель, и доступ к миру EVE открывается только за определенную плату. Тем не менее EVE Online остается невероятно популярной, и одной из её самых знаменитых особенностей являются масштабные космические баталии, в которых были уничтожены корабли на сумму, достигающую 300 тысяч долларов США.

В 2008 году команда разработчиков из Турции, работая над своим «спящим хитом» Mount and Blade, воспользовалась Python. Несмотря на ограниченный бюджет, они создали игру, которая стала мечтой для многих игроков. Открытые просторы средневекового мира и высокая степень свободы привлекли огромное сообщество игроков. Mount and Blade с тех пор стала успешной серией, и новая игра под названием Bannerlord собрала в Steam большое количество фанатов. Уникальная система боевых сражений на мечах и копьях, а также возможность управлять многочисленными армиями, были бы невозможны без искусного использования языка Python.

В 2005 году мастер стратегий Сид Мейер перенес свою серию глобальных стратегий в трехмерное измерение при выходе четвертой части под названием Sid Meier’s Civilization IV. На тот момент игра выглядела и звучала потрясающе. Механика игры также была на высшем уровне, и игроки могли буквально утонуть в мире пошаговой стратегии, рассчитывая каждый свой ход. Для создания этого безоговорочного хита Сид Мейер использовал язык Python.

The Sims 4 — игра, разработчики которой продали более миллиона копий и завоевали сердца игроков, также написана на языке Python. Эта симуляция жизни поразила своей детализацией, привлекая даже тех, кто ранее не был заинтересован в видеоиграх. Продукт оставался в лидерах продаж на протяжении двух лет как в Северной Америке, так и в Европе. В Python была реализована поддержка пользовательских модификаций, и фанаты игры создали десятки, а то и сотни различных модов для The Sims 4. Это наглядно демонстрирует популярность и успех этой игры.

В 2006 году из Финляндии пришла музыкальная игра Frets on Fire, полностью написанная на Python, которая во многом напоминает Guitar Hero. Однако есть одно отличие, которое делает эту финскую игру уникальной — она имеет открытый исходный код. Это позволяет использовать Frets on Fire для изучения программирования и практики без каких-либо ограничений. И ещё один плюс — игра очень проста в освоении и не требует специализированного образования.

Часто задаваемые вопросы об играх на Python

Что сделать до начала работы над игрой?

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

Можно ли написать на Python ААА-игру?

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

Можно Ли Делать Игры На Python?

Python нашёл себе место почти во всех сферах IT. Разработка веб-сайтов, управление станками ЧПУ, desktop, мобильные приложения, а уж про искусственный интеллект, машинное обучение и анализ данных я вообще молчу. Сейчас Python лучший друг хоть школьнику, хоть сотруднику научно-исследовательской лаборатории. А что на счёт игр? Компьютерные игры — это огромная доля IT рынка, которая уже набрала и продолжает набирать обороты. Игры то делать можно на питоне? Сегодня мы расставим все точки над i. Меня зовут Макс, я один из авторов YouTube канала PyLounge, а вы читаете статью в которой я расскажу можно ли создавать игры на Python и какую нишу занял Python в сфере gamedev.

Для удобства разделим все игры на несколько категорий:

  • AAA-проекты по типу Assassin’s Creed и Call of Duty, которые разрабатывают е крупные студии;
  • любительские инди-игры;
  • мобильные игры.

В таком порядке и будем разбираться.

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

Движки довольно требовательны к производительности, а Python сам по себе медленный, поэтому непосредственно ядро игры на Python не пишут. Движки, как правило, создаются на компилируемых языках, таких как С/С++ или С#.

Крупные компании зачастую используют Unity, Unreal Engine 4, CryEngine, Source или пишут собственные движки (Anvil, Fox, REDengine) обычно на С++. Хотя и существуют специальные игровые движки, написанные на Python, но о них чуть дальше.

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

Unreal Engine 4 используют С++, Blueprint и некоторое подобие JavaScript, основой для Unity является C# (была попытка ввести язык Boo, это по сути типизованный Python, но идея провалилась). Из более менее крупных, ходовых движков Python как основу использует пожалуй только Godot (точнее он использует GDScript, по сути видоизменённый Python с небольшими фишками).

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

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

https://github.com/wrye-bash/wrye-bash

В первую очередь скриптовый язык Python позволяет отделить игровую логику, от всего остального (графики, физики, ввода/вывода, сетевого взаимодействия). Скрипты на Python могут применяться для написания взаимодействия персонажей, запуска сцен, диалогов, взаимодействие NPC с триггерами (например, ходьба где-то, остановка, чтобы поговорить с другим NPC, а затем продолжить бежать куда-то), статистика противника (здоровье, скорость, точность), а также обработки различных событий.

Игровая логика обычно не содержит сложных вычислений и скорость языка отходит на второй план. Это и ляжет на плечи Python. Действительно сложные или требующие высокой производительности части (какой-нибудь условный поиск пути) можно унести в движок.

Получается, что скриптовые языки такие как Python или Lua вызывают какие-либо методы движка и оперируют ими для создания игровой логики и наоборот: движок может вызывать заранее оговоренные функции в скрипте, где разработчик уже как-то обрабатывает вызов. То есть скрипты позволяют разделить слои логики игры и логики игрового движка. Вы можете изменять игровую логику, настройку игры и прочие параметры без необходимости перекомпиляции всего кода.

Скрипты Python можно использовать, даже если игра написана на другом языке. Python использовался в Battlefiled, Sims, Civilization, World of Tanks, Vampire: The Masquerade: Bloodlines и ещё много где.

Кроме того, Python часто используют для написания тестов, что тоже важно. Получается, что Python не такой уж редкий гость в крупном геймдеве, однако используется он далеко не как основной язык и конкуренцию ему составляет(-ли,-вят) Lua\JS\TypeScript (возможно) и т.д. С крупными многобюджетными играми на этом всё.

Когда же речь идёт о чём-то более простом, о создании не навороченных 2D и 3D игр Python выступает во всей красе. Для создания хобби-проектов, инди и мобильные игр под Android Питон предоставляет несколько хороших и относительно популярных инструментов.

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

PyGame хорошее начало, чтобы познакомиться с особенностями разработки игр. Более опытными программистами Pygame может использоваться для быстрого создания прототипа игры, чтобы посмотреть, как все будет работать. После этого игра переписывается на другом языке. Другими словами, преимущество Pygame в легком обучении и быстрой разработке. С помощью него вполне можно создать отличную игру, но скорее всего казуалку. Pygame-приложения могут работать под Android на телефонах и планшетах с использованием подмножества Pygame для Android.

Panda3D — игровой движок, включающий графику, звук, ввод-вывод, обнаружение столкновений и другие функции, относящиеся к созданию 3D игр. Основным языком программирования, предназначенном для работы с SDK Panda3D, является Python, однако ядро движка написано на C++. Panda3D использовался даже для крупных коммерческих игр (Toontown Online, Pirates of the Caribbean Online). Он также включает работу с графикой, звуком, сетью, устройствами ввода (мышь, клавиатура, джойстик и т.п.), физикой на базе ODE и многими другими вещами, требующимися при разработке игры. Основным графическим API для «панды» является OpenGL, так же возможно использование и DirectX. Движок достаточно простой в изучении и при должной сноровке, с помощью него вполне реально сделать что-то простое, но интересное.

https://pirates.fandom.com/wiki/Pirates_of_the_Caribbean_Online

Отдельно стоит отметить движок RenPy . Это именно то, на что действительно стоит обратить своё внимание.

RenPy — это бесплатный, написанный на Python, свободный игровой движок для создания визуальных новелл (графических квестов с диалоговой системой) в 2D-графике. Поддерживает платформы Windows, Linux, Android, iOS. Именно на этом движке созданы такие известные игры как Бесконечное Лето и Корона из Листьев.

Everlasting Summer

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

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

По данным из Wiki cвыше 1200 игр используют движок RenPy. И это действительно тот инструмент, который поможет вам реально и без особых проблем воплотить ваши игровые идеи в жизнь, пусть и в формате визуальной новеллы. Достаточно только наличие базовых знаний Python, идеи и хорошего художника. Дерзайте, возможно именно ваша игра покорит интернет, как это было в случае БЛ.

Из всего этого следуют, что Python вполне применим для создания игр, зачастую более простых, но и в крупных проектах встретить его вполне реально, хоть и происходит это редко. Некоторые игры на Python имеют огромную популярность, тоже Бесконечное лето, о котором говорилось ранее. Однако, очевидно, что язык не совсем про разработку игр. Он гораздо более применим совсем в других сферах.

P.S. Также есть видеоверсия данной статьи на YouTube.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *