38
E Dá Para Desenvolver Webgames com Django? Guilherme Medeiros http://frenetic.com.br @frenetic_br

E dá para desenvolver webgames com Django?

Embed Size (px)

DESCRIPTION

Apresentação para o XX encontro da comunidade pernambucana de Python (PUG-PE). A palestra trata sobre a possibilidade de desenvolver jogos para web utilizando o framework Django. Para isso, introduzo o conceito de jogos, com pequenas definições e exemplos comuns tornando fácil a assimilação de mecânicas de jogos. O principal objetivo dessa apresentação é apresentar o projeto "Django-Wars", um clone do popular "Mafia Wars", feito em Django, onde o passo-a-passo do seu desenvolvimento serve como um tutorial de como pensar e desenvolver um webgame em Django.

Citation preview

Page 1: E dá para desenvolver webgames com Django?

E Dá Para Desenvolver Webgames com Django?

Guilherme Medeiroshttp://frenetic.com.br@frenetic_br

Page 2: E dá para desenvolver webgames com Django?

TL;DR

Page 3: E dá para desenvolver webgames com Django?

Obrigado ;)Obrigado ;)Dúvidas???

Page 4: E dá para desenvolver webgames com Django?

Entendendo Entendendo Jogos

Page 5: E dá para desenvolver webgames com Django?

O Que É Um Jogo?

● O jogo é um desafio● O jogo é um desafio

– Composto por um conjunto de regras

● Pode ser multi-jogador

● Pode ser em tempo real

● Pode ser saudável● Pode ser saudável

● Pode precisar de objetos reais e imaginação

Page 6: E dá para desenvolver webgames com Django?

Paciência

● Um único jogador● Um único jogador

● Regras simples

● Baseado em turnos

● Precisa do uso de um baralho ou de um computadorcomputador

● É mais divertido se jogado durante o expediente

Page 7: E dá para desenvolver webgames com Django?

Biziu-biziu● Jogo multiplayer

● Só tem uma regra● Só tem uma regra

– Para provar que jogos podem ser simples

● Não precisa de objetos, basta ter pessoas

● É um grande desafio ficar em silêncio

● O perdedor vai ter um orifício explodido● O perdedor vai ter um orifício explodido

– Olha a imaginação ai

● Todo mundo se diverte ao gritar BOOOM

Page 8: E dá para desenvolver webgames com Django?

Sensou

ZenzouZenzou

Mancha

Cessou

ParouParou

Estilei

Page 9: E dá para desenvolver webgames com Django?

Regras nem sempre são regras

● Alguns jogos possuem regras mutáveis● Alguns jogos possuem regras mutáveis

– Na verdade, isso é coisa de estilão

● Nestes casos a maioria dos jogadores opta por aceitar ou não a “estilada”

Page 10: E dá para desenvolver webgames com Django?

Jogos nem sempre são divertidos

● Bom, jogos são divertidos.● Bom, jogos são divertidos.

– Só quem perde é que não gosta

● O jogo da “cumadi fulô”

Page 11: E dá para desenvolver webgames com Django?

Jogos nem sempre são saudáveis

● FutePorrada● FutePorrada

– Porradobol, lapadobol

● Pedra-papel-tesoura-porrada

– O bom é ganhar com a pedra quando o n00b usa a tesoura

● Xadres russo

– 5 minutos de boxe, 1 gole de vodka e 5 minutos de xadres. Repete até

Page 12: E dá para desenvolver webgames com Django?

Jogos e WEB

Page 13: E dá para desenvolver webgames com Django?

Tudo começou a um tempo atrás

● Nerds queriam jogar Xadrez à distância● Nerds queriam jogar Xadrez à distância

– Forum BBC

– Xadrez via email

– Xadrez via ICQ

– Xadrez via programas

– Xadrez via websites.

Page 14: E dá para desenvolver webgames com Django?

E ai a idéia cresceu

● Damas na web (pros n00bs)● Damas na web (pros n00bs)

● Jogo da velha

● MUDs

– Parou sua evolução no Telnet, mas é o pais dos jogos de RPG

● The Waving Hands (spellBinder)

Page 15: E dá para desenvolver webgames com Django?

E categorias de webgames se formaram

● Jogos de estratégia● Jogos de estratégia● Ogame, Travian, Planetarion, Ikarian, GuerrasKhan

– No Brasil: Meteorus

● Jogos de RPG● GreenDragon, MafiaWars, BaraFranca, F1Race

● Jogo de 'ville'● Jogo de 'ville'● Farmville, cityville, zooville

● Tem mais, mas eu esqueci :D

Page 16: E dá para desenvolver webgames com Django?

Webgames e dispositivos

● No navegador● No navegador

– Html, CSS, Js, json

– Plugins do flash

● No mobile

– App dedicado a plataforma

– Site adapdato para navegadores móveis

Page 17: E dá para desenvolver webgames com Django?

App mobile é webgame? WTF?!

● Você quer o simples e funcional● Você quer o simples e funcional

– Requisições http estão na sdk de qualquer plataforma

– Todo mundo sabe como funciona http

– Não precisa escrever sockets e datagramas

– Fica mais fácil no lado do servidor. Afinal, um – Fica mais fácil no lado do servidor. Afinal, um servidor http é MOLESA com Django

● E no servidor você só se preocupa com a API

Page 18: E dá para desenvolver webgames com Django?
Page 19: E dá para desenvolver webgames com Django?
Page 20: E dá para desenvolver webgames com Django?
Page 21: E dá para desenvolver webgames com Django?

Jogos e o Tempo Real

● Simulado● Simulado

– Auto refresh da página

– Requisições AJAX de tempos em tempos

● Tempo Real, mas bem real mesmo

– WebSockets

Page 22: E dá para desenvolver webgames com Django?

Que diabé websocket?

● É um socket de internet● É um socket de internet● Uma conexão full duplex

● Entre o navegador web e o servidor web

– Na verdade qualquer cliente que fale HTTP

● Utiliza o protocolo HTTP para estabelecer a conexãoconexão

● Após a conexão, a troca de dados é em tempo real

Page 23: E dá para desenvolver webgames com Django?

Browser Quest

● Jogo open source desenvolvido pela ● Jogo open source desenvolvido pela Mozilla para demonstrar o uso de websockets + html5 no desenvolvimento de um RPG.

– http://browserquest.mozilla.org

– http://hacks.mozilla.org/2012/03/browserquest/– http://hacks.mozilla.org/2012/03/browserquest/

Page 24: E dá para desenvolver webgames com Django?

MAS CADE O DJANGO?

Page 25: E dá para desenvolver webgames com Django?

Django● Python

● Um conjunto de bibliotecas e facilidades● Um conjunto de bibliotecas e facilidades

● Amplamente testado

● Uma comunidade forte

● Tem um monte de artigo no google

– E no StackOverFlow– E no StackOverFlow

● Plugins e bibliotecas feitas pela comunidade

● É fácil pra [insert palavrão aqui]

Page 26: E dá para desenvolver webgames com Django?

É bom mesmo?

● O objetivo do Django é fazer com que o O objetivo do Django é fazer com que o programador se preocupe em desenvolver a lógica do código e não as classes básicas

– Urls amigáveis

– Multi banco de dados (sem escrever sql)

– Controle de sessão– Controle de sessão

– Painel de administração

– Formulários inteligentes

– E muito mais!!!1!!111!umonzeonzeum!

Page 27: E dá para desenvolver webgames com Django?

Django-Wars● O principal objetivo desta palestra

– Um clone do jogo Mafia Wars

● Feito em Django

● Desenvolvido para ser um tutorial de como desenvolver um webgame em Django

– Ensinando a pensar cada etapa– Ensinando a pensar cada etapa

– Ensinando a programar cada etapa

Page 28: E dá para desenvolver webgames com Django?

Django Wars● Tutoriais em:

– http://blog.frenetic.com.br/django-wars/

● Código fonte em:

– https://github.com/frenetic/django-wars

● Ainda não foi concluído

Mas falta pouco!– Mas falta pouco!

● Precisa de feedback!!!!

– Que tal entrar no grupo do PUG-PE no google e discutir comigo?

Page 29: E dá para desenvolver webgames com Django?

OUTROS CASOS DE JOGOS

Page 30: E dá para desenvolver webgames com Django?

● Quero desenvolver um jogo para aprender

– Django

– Como desenvolver um jogo– Como desenvolver um jogo

– Aprender a ficar rico :D

● Que tal desenvolver um jogo da velha multiplayer???

– É um jogo simples

As regras são faceis de implementar– As regras são faceis de implementar

– É fácil encontrar alguém que queira testar (jogar) com você

– -DJANGO DA VELHA!

Page 31: E dá para desenvolver webgames com Django?

AJUDA NUNCA É DEMAIS

Page 32: E dá para desenvolver webgames com Django?

Um social webgame

● Django faz!● Django faz!

– Com uma pequena mãozinha

● Django-social-auth

● Django-social-registration

● Django-facebook-connect

● Django-facebook-oauth● Django-facebook-oauth

● Tem mais bibliotecas, só escolher uma

Page 33: E dá para desenvolver webgames com Django?

Websocket de Forma Fácil

● Pusher● Pusher

– http://pusher.com/

– Para quem quer se preocupar apenas com a lógica da aplicação

– É de confiança

Getglue usa● Getglue usa

● SlideShare usa

● Codr.cc usa

Page 34: E dá para desenvolver webgames com Django?

Websocket vs Pusher

Page 35: E dá para desenvolver webgames com Django?

Websocket vs Pusher

Page 36: E dá para desenvolver webgames com Django?
Page 37: E dá para desenvolver webgames com Django?

É SÓ ISSO =/

● Mas a gente pode conversar mais AGORA!● Mas a gente pode conversar mais AGORA!

– Perguntem!!!!!

● A gente pode conversar mais já já

– No coffee-break a gente troca idéias

● Podemos pensar em algo juntos

● Vocês podem me ajudar com o Django-wars (designer needed)

● Podemos conversar mais tarde

– PUG-PE no google groups

Page 38: E dá para desenvolver webgames com Django?

Eu, eu mesmo, e o Django

● O Django-wars:● O Django-wars:

– https://github.com/frenetic/django-wars

– http://blog.frenetic.com.br/django-wars/

– Feedback, preciso!

● Ajuda também :D

Bjo do gordo o/● Bjo do gordo o/