Desenvolvimento de jogos em Python

Pinuts Studios

Mobile Development Outsourcing

  • Projetos personalizados
    • As melhores ferramentas para resolver seu problema
  • White label
    • Tudo fica com a marca dos clientes
    • Entre eles, as principais integradoras do mercado.

Tipos de jogos

  • RPG
  • Estratégia
  • Puzzle
  • Corrida
  • Esportes

O que eles tem em comum?

O Game Loop!

  • Núcleo do game engine
  • Quatro ações básicas:
    • Avançar relógio
    • Entrada do usuário
    • Lógica do jogo
    • Renderização

Game Loop

Pode ser muito mais complexo

while( user doesn't exit )
  check for user input
  run AI
  move enemies
  resolve collisions
  draw graphics
  play sounds
end while

Mas como fazê-lo?

  • Várias funções são de baixo nível
    • Ler eventos de teclado/mouse
    • Ler imagens e renderizá-las na tela
    • Carregar sons e tocá-los
  • Dependente de plataforma
    • Como fazer para rodar em outras?

Solução? Bibliotecas!

  • OpenGL
  • SDL
  • DirectX

Mas ainda são complexas...

Frameworks para jogos

  • Conjunto de funções úteis

    • Sprites
    • Renderização de texto
    • Controle de eventos
    • Mixers de áudio
    • Simulação fí­sica

Exemplos de frameworks

  • JGame (Java)
  • Allegro (C++)
  • SDL (C++, Python, Perl...)
  • Panda3D (Python)
  • Pygame (Python)
  • pyglet (Python)

Pygame

http://discussion.forum.nokia.com/forum/showthread.php?p=516861

  • Portada ontem para S60! (Mas ainda é bem prematura)
  • A opção mais tradicional para desenvolver jogos em Python
  • Baseada em SDL
  • Multiplataforma

Cocos2D

  • Baseada na pyglet (OpenGL + OpenAL)
  • Implementação em Python e Objective-C
    • Mesma API
  • Alto nível
    • Cenas
    • Diretor
    • Camadas
    • Sprites

Scenes

  • Uma parte razoavelmente independente do jogo
  • Exemplos:
    • Fases
    • Menu
    • Configurações
demo/scenes.png

Director

Controla o fluxo das cenas

Inicia a janela principal

Layers

  • Implementam controle de eventos e renderização
  • Maior parte da codificação do jogo
demo/layers.png

Sprites

  • Uma imagem 2D ou 3D

  • Parte de uma cena

  • Exemplo:

    demo/pinutinho-small.png

Por que Python?

  • Prototipagem rápida
    • Interpretada
    • Duck typing
  • Grandes bibliotecas
    • Batteries Included
  • Multiplataforma
    • Windows, Linux, Mac OS X...
  • Mas a versão para iPhone (ObjC) também é bastante interessante

Um exemplo rápido

http://www.luizirber.org/talks/python_games/demo/main.py

Dúvidas?

luiz.irber@gmail.com

http://www.luizirber.org/talks/python_games/