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:
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: -
pygame.Surface
: Representa uma área retangular de pixels na tela. Você pode criar superfícies utilizando o métodopygame.Surface()
. Por exemplo:
Aplicação Básica do Pygame
Aqui está um exemplo básico de uma aplicação Pygame que exibe uma janela vazia:
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:
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()
eupdate()
: Para criar um jogo em Pygame Zero, você precisa definir uma funçãodraw()
para desenhar os elementos do jogo na tela e uma funçãoupdate()
para atualizar o estado do jogo a cada quadro (frame). -
Objetos
Actor
: O Pygame Zero utiliza objetosActor
para representar elementos gráficos do jogo, como personagens, cenários ou itens. -
Função
keyboard
: Você pode usar a funçãokeyboard
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:
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:
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 classearcade.Window
para representar a janela do jogo. A classearcade.Window
possui métodos comoon_draw()
eon_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:
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:
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 objetosRoom
. Cada sala pode ter descrição, objetos e conexões com outras salas. -
Métodos
when
,script
edrop
: 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étodowhen
para definir uma função que será executada quando o jogador entrar em uma sala específica. -
Objeto
Player
: O adventurelib possui um objetoPlayer
que representa o jogador no jogo. Você pode acessar informações sobre o jogador, como seu inventário ou status, utilizando as propriedades do objetoPlayer
.
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:
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 operadorif
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:
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!