Пропустить до содержимого

Как использовать Python Game Engine

[

Топ Python игровых движков

by Jon Fincher

Обзор Python игровых движков

Игровые движки для Python обычно представлены в форме библиотек Python, которые могут быть установлены с использованием разных способов. Большинство из них доступны на PyPI и могут быть установлены с помощью утилиты pip. Однако, некоторые из них доступны только на GitHub, GitLab или других платформах для обмена кодом и могут требовать дополнительных шагов для установки. В данной статье будут описаны методы установки для всех обсуждаемых движков.

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

Эти самостоятельные игровые движки отличаются от Python игровых движков в нескольких ключевых аспектах:

  • Поддержка языков: Языки программирования, такие как C++, C# и JavaScript, популярны для создания игр с использованием самостоятельных игровых движков, так как сами движки часто написаны на этих языках. Очень мало самостоятельных движков поддерживает Python.
  • Собственный скриптовый язык: Более того, многие самостоятельные игровые движки поддерживают и поддерживают свои собственные скриптовые языки, которые могут не походить на Python. Например, Unity использует нативно C#, а Unreal работает лучше с C++.
  • Поддержка платформ: Многие современные самостоятельные игровые движки могут создавать игры для различных платформ, включая мобильные и специализированные игровые системы, с минимальными усилиями. В отличие от этого, портирование Python игры на различные платформы, особенно на мобильные устройства, может потребовать дополнительной работы.

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

В этом руководстве мы рассмотрим несколько популярных игровых движков для Python, а именно Pygame, Pygame Zero, Arcade, adventurelib и Ren’Py. Для каждого из них мы рассмотрим установку и основные понятия, а затем создадим простые и сложные примеры игр с использованием каждого движка.

Pygame

Установка Pygame

Перед началом работы с Pygame, вам необходимо установить его. Вы можете установить Pygame с помощью следующей команды в командной строке:

Terminal window
pip install pygame

Основные концепции

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

Основными концепциями Pygame являются:

  • Окна и экраны: Pygame позволяет создавать окна и экраны для вывода графики.
  • Спрайты и графика: Вы можете создавать спрайты - двухмерные графические объекты на экране.
  • Обработка событий: Pygame предоставляет возможности для обработки событий, таких как нажатие клавиши или клик мыши.
  • Звук и музыка: Pygame также поддерживает воспроизведение звуковых эффектов и музыки в играх.

Простое приложение

Давайте создадим простое приложение с использованием Pygame. Мы будем отображать окно с пустым экраном и игровой циклом:

import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My Game")
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
screen.fill((0, 0, 0))
pygame.display.flip()
pygame.quit()

Сложное приложение

Теперь давайте создадим более сложное приложение с использованием Pygame. Мы будем создавать игру “Поймай шарик” с графикой и обработкой столкновений:

import pygame
from pygame.locals import *
import random
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Catch the Ball")
player = pygame.Rect(400, 550, 40, 40)
balls = [pygame.Rect(random.randint(50, 750), random.randint(50, 550), 20, 20) for _ in range(10)]
running = True
score = 0
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == MOUSEMOTION:
player.x, _ = event.pos
if player.x < 0:
player.x = 0
if player.x > 760:
player.x = 760
screen.fill((255, 255, 255))
for ball in balls:
pygame.draw.ellipse(screen, (255, 0, 0), ball)
ball.y += 5
if ball.colliderect(player):
balls.remove(ball)
score += 1
pygame.draw.rect(screen, (0, 0, 255), player)
pygame.display.flip()
pygame.quit()

Pygame Zero

Установка Pygame Zero

Перед началом работы с Pygame Zero, вам необходимо установить его. Вы можете установить Pygame Zero с помощью следующей команды в командной строке:

Terminal window
pip install pgzero

Основные концепции

Pygame Zero - это простая библиотека Python, основанная на Pygame, которая упрощает создание игр. Он предоставляет простой и интуитивно понятный интерфейс для создания игр без необходимости вручную управлять окнами, экранами и игровыми объектами.

Основными концепциями Pygame Zero являются:

  • Процесс игры: Pygame Zero предоставляет функцию draw(), в которой вы можете рисовать игровые объекты, и функцию update(), в которой вы можете обновлять состояние игры.
  • Актеры и спрайты: Вы можете создавать актеров - игровых объектов, которые могут двигаться по экрану и взаимодействовать друг с другом.
  • Обработка событий: Pygame Zero позволяет обрабатывать события, такие как нажатие клавиши или клик мыши.
  • Звук и музыка: Pygame Zero также поддерживает воспроизведение звуковых эффектов и музыки в играх.

Простое приложение

Давайте создадим простое приложение с использованием Pygame Zero. Мы будем отображать окно с пустым экраном и нарисуем круг в центре экрана:

import pgzrun
WIDTH = 800
HEIGHT = 600
def draw():
screen.fill((0, 0, 0))
screen.draw.circle((WIDTH // 2, HEIGHT // 2), 50, 'white')
pgzrun.go()

Сложное приложение

Теперь давайте создадим более сложное приложение с использованием Pygame Zero. Мы будем создавать игру “Поймай шарик” с графикой и обработкой столкновений:

import pgzrun
WIDTH = 800
HEIGHT = 600
player = Actor('player_ship')
player.pos = WIDTH // 2, HEIGHT - 100
balls = [Actor('ball') for _ in range(10)]
for ball in balls:
ball.pos = random.randint(50, WIDTH - 50), random.randint(50, HEIGHT - 200)
score = 0
def draw():
screen.fill((255, 255, 255))
player.draw()
for ball in balls:
ball.draw()
screen.draw.text(f'Score: {score}', (10, 10), color='black')
def on_mouse_move(pos):
player.x = pos[0]
if player.left < 0:
player.left = 0
if player.right > WIDTH:
player.right = WIDTH
def update():
global score
for ball in balls:
ball.y += 5
if ball.colliderect(player):
balls.remove(ball)
score += 1
if len(balls) == 0:
screen.draw.text('You won!', center=(WIDTH // 2, HEIGHT // 2), fontsize=60)
clock.unschedule(update)
pgzrun.go()

Arcade

Установка Arcade

Перед началом работы с Arcade, вам необходимо установить его. Вы можете установить Arcade с помощью следующей команды в командной строке:

Terminal window
pip install arcade

Основные концепции

Arcade - это простая игровая библиотека Python, предназначенная для создания 2D игр. Он предоставляет простой и интуитивно понятный интерфейс для создания игровых объектов, отображения графики, обработки событий и многого другого.

Основными концепциями Arcade являются:

  • Окна и экраны: Arcade позволяет создавать окна и экраны для вывода графики.
  • Спрайты и графика: Вы можете создавать спрайты - двухмерные графические объекты на экране.
  • Обработка событий: Arcade предоставляет возможности для обработки событий, таких как нажатие клавиши или клик мыши.
  • Звук и музыка: Arcade также поддерживает воспроизведение звуковых эффектов и музыки в играх.

Простое приложение

Давайте создадим простое приложение с использованием Arcade. Мы будем отображать окно с пустым экраном и нарисуем круг в центре экрана:

import arcade
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
def draw():
arcade.start_render()
arcade.draw_circle_filled(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2, 50, arcade.color.WHITE)
arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
arcade.set_background_color(arcade.color.BLACK)
arcade.schedule(draw, 1/60)
arcade.run()

Сложное приложение

Теперь давайте создадим более сложное приложение с использованием Arcade. Мы будем создавать игру “Поймай шарик” с графикой и обработкой столкновений:

import arcade
import random
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
class Ball:
def __init__(self):
self.x = random.randint(50, SCREEN_WIDTH - 50)
self.y = random.randint(50, SCREEN_HEIGHT - 200)
self.radius = 20
self.dx = 0
self.dy = -5
self.color = arcade.color.RED
def draw():
arcade.start_render()
for ball in balls:
arcade.draw_circle_filled(ball.x, ball.y, ball.radius, ball.color)
def update(delta_time):
for ball in balls:
ball.y += ball.dy
if ball.y < ball.radius:
balls.remove(ball)
if arcade.check_for_collision(player, ball):
balls.remove(ball)
ball.color = arcade.color.GREEN
def on_mouse_motion(x, y, dx, dy):
player.center_x = x
if player.left < 0:
player.left = 0
if player.right > SCREEN_WIDTH:
player.right = SCREEN_WIDTH
balls = [Ball() for _ in range(10)]
player = arcade.Sprite('player.png', center_x=SCREEN_WIDTH // 2, center_y=SCREEN_HEIGHT - 100)
balls.append(player)
arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, "Catch the Ball")
arcade.set_background_color(arcade.color.WHITE)
arcade.schedule(update, 1/60)
arcade.set_mouse_motion(on_mouse_motion)
arcade.run()

Adventurelib

Установка Adventurelib

Перед началом работы с Adventurelib, вам необходимо установить его. Вы можете установить Adventurelib с помощью следующей команды в командной строке:

Terminal window
pip install adventurelib

Основные концепции

Adventurelib - это простая библиотека Python для создания текстовых игр. Он предоставляет простой и интуитивно понятный интерфейс для создания игровых комнат, предметов, героев и прочих элементов текстовой игры.

Основными концепциями Adventurelib являются:

  • Комнаты и перемещение: Adventurelib позволяет создавать комнаты и перемещаться между ними.
  • Предметы и инвентарь: Вы можете создавать предметы, добавлять их в комнаты и собирать их в инвентарь.
  • Герои и действия: Adventurelib поддерживает создание героев и настройку их действий и характеристик.
  • Диалоги и события: Adventurelib предоставляет возможности для создания диалогов и обработки событий в игре.

Простое приложение

Давайте создадим простое приложение с использованием Adventurelib. Мы создадим простую текстовую игру с несколькими комнатами и предметами:

import adventurelib
kitchen = adventurelib.Room("kitchen")
kitchen.description = "You are in a small kitchen. There is a table in the middle and a door on the side."
kitchen.west = adventurelib.Bedroom("bedroom")
bedroom = adventurelib.Room("bedroom")
bedroom.description = "You are in a cozy bedroom. There is a bed in the corner and a dresser nearby."
bedroom.east = kitchen
kitchen.items = [
adventurelib.Item("knife", "A sharp knife"),
adventurelib.Item("apple", "A red apple")
]
current_room = kitchen
@adventurelib.when('west', direction='west')
def go_west():
return current_room.west
@adventurelib.when('east', direction='east')
def go_east():
return current_room.east
@adventurelib.when('look')
def look():
return current_room.description
@adventurelib.when('inventory')
def show_inventory():
return "You have " + ", ".join(str(item) for item in current_room.items)
@adventurelib.when('take ITEM')
def take_item(item):
for i in current_room.items:
if i.name.lower() == item:
current_room.items.remove(i)
return "You took the " + i.name
@adventurelib.when('drop ITEM')
def drop_item(item):
for i in current_room.items:
if i.name.lower() == item:
current_room.items.append(i)
return "You dropped the " + i.name
adventurelib.start()

Ren’Py

Установка Ren’Py

Перед началом работы с Ren’Py, вам необходимо установить его. Вы можете установить Ren’Py, скачав его с официального сайта.

Основные концепции

Ren’Py - это движок для создания визуальных романов, который позволяет создавать интерактивные истории с использованием графики, звука и текста. Он предоставляет простой и интуитивно понятный инструментарий для создания и редактирования сценариев и визуальных эффектов.

Основными концепциями Ren’Py являются:

  • Сцены и переходы: Ren’Py позволяет создавать различные сцены и управлять их переходами.
  • Персонажи и действия: Вы можете создавать персонажей, добавлять им диалоги и определять их действия.
  • Фон и спрайты: Ren’Py поддерживает добавление графических фонов и спрайтов к сценам.
  • Звук и музыка: Ren’Py также поддерживает воспроизведение звуковых эффектов и музыки в играх.

Простое приложение

Давайте создадим простое приложение с использованием Ren’Py. Мы создадим простую интерактивную историю с несколькими сценами и персонажами:

init 100
label start:
"Hello! This is a Ren'Py tutorial."
menu:
"Continue":
jump intro
label intro:
"You are the main character."
"What is your name?"
input name
"Hello, $name!"
"Do you want to go on an adventure?"
menu:
"Yes":
jump adventure
"No":
jump end
label adventure:
"You are in a dark forest."
"There are two paths in front of you."
menu:
"Go left":
jump left_path
"Go right":
jump right_path
label left_path:
"You found a treasure chest."
"Inside the chest, you find a sword."
$inventory.append("sword")
label right_path:
"You encounter a monster."
"Do you want to fight or run?"
menu:
"Fight":
jump fight
"Run":
jump run
label fight:
"You defeat the monster."
"Congratulations!"
label run:
"You run away from the monster."
"You escape safely."
label end:
"Thank you for playing!"
$inventory = []
start

Другие заметные Python игровые движки

Источники игровых ресурсов

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

Заключение

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

  • Start Here
  • Learn Python
  • Python Tutorials → In-depth articles and video courses
  • Learning Paths → Guided study plans for accelerated learning
  • Quizzes → Check your learning progress
  • Browse Topics → Focus on a specific area or skill level
  • Community Chat → Learn with other Pythonistas
  • Office Hours → Live Q&A calls with Python experts
  • Podcast → Hear what’s new in the world of Python
  • Books → Round out your knowledge and learn offline
  • Unlock All Content →