Pular para o conteúdo

Como utilizar o Python Game Engine para criar jogos?

[

Principais Motores de Jogo em Python

por Jon Fincher

Assim como muitas pessoas, talvez você tenha querido escrever jogos de vídeo quando aprendeu a programar. Mas eram aqueles jogos semelhantes aos jogos que você jogava? Talvez não houvesse Python quando você começou, nenhum jogo em Python disponível para você estudar e nenhum motor de jogo para falar a respeito. Sem orientação adequada ou estrutura para ajudá-lo, os gráficos avançados e os efeitos sonoros que você experimentava em outros jogos podem ter permanecido fora do seu alcance.

Agora, existe o Python e uma série de excelentes motores de jogo em Python disponíveis. Essa combinação poderosa facilita muito a criação de ótimos jogos de computador. Neste tutorial, você irá explorar vários desses motores de jogo, aprendendo o necessário para começar a criar seus próprios jogos de vídeo em Python!

Até o final deste artigo, você vai:

  • Entender os prós e contras de vários motores de jogo em Python populares;
  • Ver esses motores de jogo em ação;
  • Compreender como eles se comparam a motores de jogo independentes;
  • Conhecer outros motores de jogo em Python disponíveis.

Para aproveitar ao máximo este tutorial, você deve estar familiarizado com a programação em Python, incluindo a programação orientada a objetos. Ter uma compreensão básica de conceitos de jogos é útil, mas não necessário.

Pronto para mergulhar? Clique no link abaixo para baixar o código-fonte de todos os jogos que você vai criar:

Visão Geral dos Motores de Jogo em Python

Os motores de jogo em Python geralmente são implementados como bibliotecas Python, que podem ser instaladas de várias maneiras. A maioria está disponível no PyPI e pode ser instalada com o pip. No entanto, alguns estão disponíveis apenas no GitHub, GitLab ou outros locais de compartilhamento de código, e podem exigir outros passos de instalação. Este artigo abordará os métodos de instalação para todos os motores discutidos.

Python é uma linguagem de programação de propósito geral e é usada para uma variedade de tarefas além da criação de jogos de computador. Por outro lado, existem muitos motores de jogo independentes que são desenvolvidos especificamente para a criação de jogos. Alguns exemplos são:

Esses motores de jogo independentes diferem dos motores de jogo em Python em vários aspectos-chave:

  • Suporte a Linguagens: Linguagens como C++, C# e JavaScript são populares para jogos escritos em motores de jogo independentes, uma vez que os próprios motores geralmente são escritos nessas linguagens. Poucos motores independentes oferecem suporte ao Python.
  • Suporte a Scripts Proprietários: Além disso, muitos motores de jogo independentes possuem e suportam suas próprias linguagens de script, que podem não se parecer com a sintaxe do Python. Por exemplo, o Unity utiliza nativamente o C#, enquanto o Unreal funciona melhor com C++.
  • Suporte a Plataformas: Muitos motores de jogo independentes podem gerar jogos para uma variedade de plataformas, incluindo dispositivos móveis e sistemas de jogos dedicados, com pouco esforço. Em contraste, criar um jogo em Python compatível com várias plataformas, especialmente dispositivos móveis, como iOS e Android, pode requerer trabalho adicional.

Motores de Jogo em Python

Agora que você tem uma visão geral dos motores de jogo em Python e dos motores de jogo independentes, vamos explorar alguns dos principais motores de jogo em Python que você pode utilizar para criar seus próprios jogos de vídeo.

Pygame

O primeiro motor de jogo em Python que vamos abordar é o Pygame. O Pygame é uma biblioteca de jogos em Python que utiliza a biblioteca SDL (Simple DirectMedia Layer) para oferecer suporte a gráficos, som, entrada de usuário e muito mais.

Instalação do Pygame

Para instalar o Pygame, você pode utilizar o pip. Abra um terminal ou prompt de comando e execute o seguinte comando:

pip install pygame

Conceitos Básicos do Pygame

Para começar a trabalhar com o Pygame, é importante conhecer alguns conceitos básicos. O Pygame utiliza uma série de classes e métodos para criar janelas, renderizar gráficos, reproduzir sons e lidar com eventos de entrada. Aqui estão alguns dos conceitos básicos que você precisa conhecer:

  • pygame.init(): Inicializa os módulos do Pygame. Este método deve ser chamado antes de qualquer outra função do Pygame.

  • pygame.display.set_mode(): Cria uma janela para o jogo. Você pode especificar a largura e a altura da janela como parâmetros. Por exemplo:

    window = pygame.display.set_mode((800, 600))
  • pygame.Surface: Representa uma área retangular de pixels na tela. Você pode criar superfícies utilizando o método pygame.Surface(). Por exemplo:

    surface = pygame.Surface((400, 300))

Aplicação Básica do Pygame

Aqui está um exemplo básico de uma aplicação Pygame que exibe uma janela vazia:

import pygame
# Inicializa o Pygame
pygame.init()
# Cria a janela do jogo
window = pygame.display.set_mode((800, 600))
# Loop principal do jogo
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Finaliza o Pygame
pygame.quit()

Neste exemplo, primeiro importamos o módulo pygame e em seguida chamamos a função pygame.init() para inicializar os módulos do Pygame. Em seguida, utilizamos a função pygame.display.set_mode() para criar uma janela com largura de 800 pixels e altura de 600 pixels. Em seguida, entramos em um loop principal que espera por eventos. Se o evento for do tipo pygame.QUIT, saímos do loop e finalizamos o Pygame com a função pygame.quit().

Aplicação Avançada do Pygame

Além da aplicação básica, o Pygame pode ser utilizado para criar jogos completos com gráficos e sons. Existem recursos adicionais que podem ser explorados, como a manipulação de imagens, a criação de animações, o uso de colisões e a implementação de lógica de jogos.

Pygame Zero

Outro motor de jogo em Python popular é o Pygame Zero. O Pygame Zero é uma biblioteca construída em cima do Pygame que simplifica a criação de jogos em Python, fornecendo uma estrutura mais amigável para iniciantes.

Instalação do Pygame Zero

Para instalar o Pygame Zero, use o pip:

pip install pgzero

Conceitos Básicos do Pygame Zero

O Pygame Zero utiliza alguns conceitos básicos para facilitar o desenvolvimento de jogos. Aqui estão alguns deles:

  • Funções draw() e update(): Para criar um jogo em Pygame Zero, você precisa definir uma função draw() para desenhar os elementos do jogo na tela e uma função update() para atualizar o estado do jogo a cada quadro (frame).

  • Objetos Actor: O Pygame Zero utiliza objetos Actor para representar elementos gráficos do jogo, como personagens, cenários ou itens.

  • Função keyboard: Você pode usar a função keyboard para lidar com eventos de entrada do teclado.

Aplicação Básica do Pygame Zero

Aqui está um exemplo básico de uma aplicação Pygame Zero que exibe uma janela vazia:

import pgzrun
WIDTH = 800
HEIGHT = 600
def draw():
screen.fill((0, 0, 0))
pgzrun.go()

Neste exemplo, primeiro importamos o módulo pgzrun. Em seguida, definimos as variáveis WIDTH e HEIGHT para especificar a largura e altura da janela do jogo. Em seguida, definimos a função draw() para desenhar um fundo preto na janela utilizando a superfície screen. Por fim, chamamos a função pgzrun.go() para iniciar o jogo.

Aplicação Avançada do Pygame Zero

Assim como o Pygame, o Pygame Zero pode ser utilizado para criar jogos mais complexos. Você pode usar imagens, animações, som e colisões para criar jogos interativos e envolventes.

Arcade

Outro motor de jogo em Python popular é o Arcade. O Arcade é uma biblioteca que utiliza o Pygame por baixo dos panos para oferecer uma API simples e fácil de usar para criar jogos 2D em Python.

Instalação do Arcade

Para instalar o Arcade, você pode utilizar o pip:

pip install arcade

Conceitos Básicos do Arcade

O Arcade utiliza uma abordagem orientada a objeto para criar jogos. Aqui estão alguns conceitos básicos:

  • Classe arcade.Window: Você deve criar uma classe arcade.Window para representar a janela do jogo. A classe arcade.Window possui métodos como on_draw() e on_update() que serão chamados em cada quadro.

  • Sprite: Você pode criar sprites utilizando a classe arcade.Sprite. Os sprites podem ser posicionados na janela, atualizados e desenhados na tela.

  • Eventos de Mouse e Teclado: O Arcade possui sistemas integrados para lidar com eventos de entrada do mouse e teclado, tornando mais fácil criar jogos interativos.

Aplicação Básica do Arcade

Aqui está um exemplo básico de uma aplicação Arcade que exibe uma janela vazia:

import arcade
WIDTH = 800
HEIGHT = 600
TITLE = "My Arcade Game"
class MyGame(arcade.Window):
def __init__(self):
super().__init__(WIDTH, HEIGHT, TITLE)
def setup(self):
pass
def on_draw(self):
arcade.start_render()
def update(self, delta_time):
pass
def main():
game = MyGame()
game.setup()
arcade.run()
if __name__ == "__main__":
main()

Neste exemplo, importamos o módulo arcade e definimos as variáveis WIDTH, HEIGHT e TITLE para especificar as dimensões e o título da janela do jogo. Em seguida, definimos a classe MyGame que herda de arcade.Window. Nesta classe, temos métodos como setup() para configurar o jogo, on_draw() para desenhar os elementos do jogo na tela e update() para atualizar o estado do jogo a cada quadro. No método main(), instanciamos MyGame, chamamos setup() e, em seguida, chamamos arcade.run() para iniciar o jogo.

Aplicação Avançada do Arcade

Com o Arcade, você pode criar jogos 2D completos com gráficos, animações e interações complexas. A biblioteca oferece suporte para colisões, física, som e outros recursos avançados.

adventurelib

O adventurelib é uma biblioteca em Python que facilita a criação de jogos no estilo “texto-aventura”. Com o adventurelib, você pode criar histórias interativas utilizando o terminal como interface.

Instalação do adventurelib

Para instalar o adventurelib, você pode utilizar o pip:

pip install adventurelib

Conceitos Básicos do adventurelib

O adventurelib utiliza alguns conceitos básicos para facilitar a criação de jogos de texto-aventura. Aqui estão alguns deles:

  • Objetos Room: O jogo é composto por diferentes salas, que são representadas por objetos Room. Cada sala pode ter descrição, objetos e conexões com outras salas.

  • Métodos when, script e drop: O adventurelib utiliza esses métodos para definir ações que ocorrem quando certos eventos acontecem no jogo. Por exemplo, você pode usar o método when para definir uma função que será executada quando o jogador entrar em uma sala específica.

  • Objeto Player: O adventurelib possui um objeto Player que representa o jogador no jogo. Você pode acessar informações sobre o jogador, como seu inventário ou status, utilizando as propriedades do objeto Player.

Aplicação Básica do adventurelib

Aqui está um exemplo básico de uma aplicação adventurelib que cria um jogo de texto-aventura simples:

import adventurelib
def main():
room1 = adventurelib.Room("Quarto 1", "Você está em um quarto escuro.")
room2 = adventurelib.Room("Quarto 2", "Você está em um quarto iluminado.")
room1.when("norte", room2)
room2.when("sul", room1)
player = adventurelib.Player(start=room1)
adventurelib.start(player)
if __name__ == "__main__":
main()

Neste exemplo, importamos o módulo adventurelib e criamos duas salas utilizando a classe adventurelib.Room. Em seguida, utilizamos o método when para definir as conexões entre as salas. Por fim, criamos um objeto Player utilizando a classe adventurelib.Player e chamamos o método adventurelib.start() para iniciar o jogo.

Aplicação Avançada do adventurelib

Com o adventurelib, você pode criar histórias interativas mais complexas, com diálogos, puzzles e desafios para o jogador resolver.

Ren’Py

Ren’Py é uma engine de novel visual que utiliza o Python para definir a lógica e as regras dos jogos. Com o Ren’Py, você pode criar jogos de estilo visual novel, com histórias, personagens e arte visual.

Instalação do Ren’Py

Para instalar o Ren’Py, você pode baixar o pacote de instalação no site oficial do Ren’Py em https://www.renpy.org/.

Conceitos Básicos do Ren’Py

O Ren’Py utiliza uma linguagem de script própria, que é baseada no Python, para definir a lógica do jogo. Aqui estão alguns conceitos básicos:

  • Cenas e Sprites: O Ren’Py utiliza cenas e sprites para exibir arte visual e animações no jogo. Cenas são imagens de fundo e sprites são personagens ou objetos que são animados na tela.

  • Funções e Operadores: O Ren’Py possui uma série de funções e operadores que podem ser utilizados para manipular as cenas, os sprites e a lógica do jogo. Por exemplo, você pode utilizar a função hide() para esconder um sprite ou o operador if para realizar verificações condicionais.

Aplicação Básica do Ren’Py

Aqui está um exemplo básico de um jogo criado com o Ren’Py:

label start:
scene bg room
$ character = Character("Alice")
show character happy at left
show dialog alice hello, world
jump start

Neste exemplo, utilizamos o comando label para definir um ponto de partida para o jogo. Em seguida, utilizamos o comando scene para exibir uma cena de fundo chamada “room”. Criamos um objeto Character chamado “Alice” e utilizamos os comandos show e dialog para exibir um sprite e um diálogo na tela. Por fim, voltamos para o ponto de partida utilizando o comando jump.

Aplicação Avançada do Ren’Py

Com o Ren’Py, você pode criar jogos de estilo visual novel completos, com gráficos, música, animações e diálogos interativos.

Outros Motores de Jogo em Python

Além dos motores de jogo mencionados, existem outros motores populares em Python que podem ser utilizados para criar jogos. Alguns exemplos são:

Cada um desses motores possui suas próprias características e benefícios, então explore-os e escolha o que melhor se adequa às suas necessidades e preferências.

Fontes para Recursos de Jogo

Ao criar um jogo em Python, pode ser necessário obter recursos como imagens, sons, músicas e animações. Aqui estão algumas fontes onde você pode encontrar recursos gratuitos para o seu jogo:

Certifique-se sempre de verificar as licenças e os termos de uso dos recursos antes de utilizá-los em seu jogo.

Conclusão

Com os motores de jogo em Python disponíveis, criar jogos de vídeo ficou muito mais acessível e interativo. Neste artigo, você explorou alguns dos principais motores de jogo em Python, como o Pygame, Pygame Zero, Arcade, adventurelib e Ren’Py. Cada um desses motores possui suas próprias características e peculiaridades, permitindo que você escolha o que melhor se adequa às suas necessidades e preferências.

Lembre-se de que criar jogos requer prática e experimentação. Portanto, não hesite em explorar esses motores, buscar tutoriais e participar de comunidades de desenvolvedores de jogos em Python. Com dedicação e criatividade, você pode criar jogos incríveis e divertidos em Python!