Pygame
Pygame é uma biblioteca de jogos multiplataforma feita para ser utilizada em conjunto com a linguagem de programação Python. O seu nome tem origem da junção de Py, proveniente de Python e Game, que significa Jogo, ou seja, Jogos em Python.
Imagem: Phobulos · CC0 · Openverse
O desenvolvimento da biblioteca Pygame começou no ano 2000 por Pete Shinners que, familiarizado com a linguagem de programação C, descobriu a linguagem Python e a biblioteca SDL (Simple Directmedia Library) ao mesmo tempo. A SDL é uma biblioteca escrita em linguagem C que controla os recursos de multimídia e é utilizada por várias aplicações de código-aberto e por aplicações comerciais empresariais. A descontinuidade da implementação da SDL em Python por Mark Baker denominada PySDL inspirou-o a começar um projeto robusto, também em Python, sob a SDL, chamada Pygame.
Imagem: CInLUG · BY-SA · Openverse
Python é uma linguagem de alto-nível interpretada, interativa, orientada a objetos, de tipagem dinâmica e forte. A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros. Pete Shinners, quando começou a desenvolver o Pygame, afirmou, sobre o modo como Python facilita a programação, que "queria um projeto que realmente tirasse proveito de Python" e queria que os módulos do Pygame também explicitassem essa clareza e simplicidade.
Imagem: One Laptop per Child · BY · Openverse
Simple DirectMedia Layer (SDL) é uma biblioteca multimídia e multiplataforma escrita em C, possui interfaces para outras linguagens de programação, como Ada, Eiffel, Java, Lua, ML, Perl, PHP, Ruby e também para Python, que cria uma abstração em várias plataformas de gráficos, sons, e entrada de APIs, possibilitando ao programador escrever um jogo de computador ou outra aplicação multimedia já que pode rodar em vários tipos de sistema operacionais. Gerencia video, eventos, audio digital, CD-ROM, som, threads, processamento de objetos compartilhados, rede e tempo.
Imagem: adafruit · BY-NC-SA · Openverse
Pygame é um "motor de jogo" ou em inglês "game engine". Um motor de jogo é um software ou um conjunto de bibliotecas usado na simplificação do desenvolvimento de jogos, por exemplo, para videogames e computadores. As funcionalidades típicas fornecidas por um motor de jogo incluem o mecanismo de renderização (ou rendering engine) para gráficos 2D ou 3D, um mecanismo de detecção de colisão, suporte a sons, uma linguagem de script, suporte à animação, inteligência artificial e jogos pela internet. Ou seja, é utilizado um motor de jogo que contém todas as funções visuais e de processamento como base do código, e a essência do jogo como a estratégia, o design e a ideia principal que serão realmente pensadas e estudadas para o jogo.
Imagem: RayeChellMahela · BY-SA · Openverse
Abaixo, apresentam-se alguns dos eventos mais importantes na concepção de um jogo, como cores, superfície, manipulação da tela ou sons.
Imagem: RayeChellMahela · BY-SA · Openverse
A detecção de colisão é um dos recursos mais utilizados em jogos. A colisão entre objetos de um jogo acontece porque dentro do jogo não há formas físicas, logo, se o código do jogo não prevê quando um objeto se sobrepõe a outro, o jogo terá, certamente, defeitos. Exemplificando: se no jogo Super Mario não estivesse prevista a colisão do "Mario" com a parede, o Mario iria passar por dentro da parede e o jogo estaria com um sério problema de colisão. Como a colisão é tratada, o Mario não pode ultrapassar os limites exteriores da parede, tendo obrigatoriamente de pular ou passar por cima dela. A implementação de colisões pode ser dada de várias formas, o Projeto de um Jogo de Tiro ao Alvo 3D explica que uma das formas de tratar a colisão recorre à técnica de volumes envoltórios de esféricos. Todo objeto de um "Sprite" ou de um "Group" será associado a um esfera com centro no centróide do objeto e com raio igual à distância entre o centróide do objeto e o ponto do objeto mais distante do centróide, com um fator de escala aplicado para reduzir um pouco esse raio, para que o volume não seja muito maior que o objeto, caso este apresente uma dimensão bem maior que as outras.
Imagem: RayeChellMahela · BY-SA · Openverse
Pygame é escrito em Linguagem C e Python, necessitando de recursos da SDL como o SDL 1.2.6, SDL_image 1.2.3, SDL_ttf 2.0.6, SDL_mixer 1.2.5 e SMPEG 0.4.4 e Numeric 23.0. Abaixo, apresenta-se um resumo sobre os módulos que o Pygame contém para o desenvolvimento de jogos.
Imagem: jim212jim · BY · Openverse
Abaixo um código de exemplo obtido do site oficial do pygame, faz uma animação de uma bola saltando.
Imagem: jim212jim · BY · Openverse
Um dos grandes problemas do Python é sua lentidão no processamento de imagens e iterações.. Depois de descobrir onde está a lentidão do programa com recursos próprios da linguagem Python como "timeit", "profile" ou hotshot", uma das soluções mais utilizadas é escrever uma extensão em linguagem C do código lento do seu programa em Python. Outra solução para otimizar sua aplicação é o uso de um compilador JIT para o Python, como por exemplo, o programa "Psyco" que gera um ganho de 4 vezes mais velocidade mas utiliza muita memória do computador.


