Upload
guilherme-caraciolo
View
1.904
Download
0
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
E Dá Para Desenvolver Webgames com Django?
Guilherme Medeiroshttp://frenetic.com.br@frenetic_br
TL;DR
Dá
Obrigado ;)Obrigado ;)Dúvidas???
Entendendo Entendendo Jogos
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
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
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
Sensou
ZenzouZenzou
Mancha
Cessou
ParouParou
Estilei
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”
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ô”
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é
Jogos e WEB
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.
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)
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
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
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
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
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
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/
MAS CADE O 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]
É 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!
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
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?
OUTROS CASOS DE JOGOS
● 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!
AJUDA NUNCA É DEMAIS
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
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
Websocket vs Pusher
Websocket vs Pusher
É 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
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/