SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Como Fazer Seu Próprio
Gameboy
Prof. Rafael de Moura Moreira
Durante o lero-lero inicial, baixem a IDE do
Arduino!
<https://www.arduino.cc/en/Main/Software>
(ou digite “arduino ide” no Google)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 2
@author
Rafael de Moura Moreira <rafaelmmoreira@gmail.com>
Professor substituto na Universidade Federal de Itajubá (UNIFEI)
(Quase) Mestre em Ciência e Tecnologia da Computação pela
UNIFEI
Engenheiro de Computação pela UNIFEI
@rafaelmmoreira
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 3
O que não veremos
Como fazer seu Gameboy com
Raspberry Pi + impressão 3D
<https://www.thingiverse.com/thing:382
485>
Como fazer seu Gameboy com
Raspberry Pi + Gameboy
quebrado
<https://superpiboy.wordpress.com>
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 4
O que veremos
projeto de hardware projeto de software
Como Fazer Seu Próprio Gameboy - SpACE 2018
void loopUpdate(){
if (key != mov){
switch(key){
case 'U’:
mov = key;
if (linha > 0)
linha--;
break;
case 'D’:
mov = key;
if (linha < 3)
linha++;
break;
case 'L’:
mov = key;
if (coluna > 0)
coluna--;
break;
case 'R’:
mov = key;
if (coluna < 15)
coluna++;
break;
Prof. Rafael de Moura Moreira 5
Conhecendo nosso equipamento
Arduino (Uno ou Mega) Pão de Queijo Development
Board (PQDB)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 6
Arduino (Uno/Mega)
Microcontrolador Atmega 16MHz, 2kB (Uno) / 8kB (Mega)
SRAM
Pinos de entrada e saída digital e analógica
Hardware aberto e livre
IDE grátis
Barato ($)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 7
Pão de Queijo Development Board
(PQDB)
Shield didático para estudo de embarcados
Compatível com pinos do Arduino Uno (qualquer
microcontrolador)
Contém saída digital (LED RGB), analógica (buzzer),
entradas digitais (botões), entradas analógicas
(potenciômetro e sensores), LCD e display de 7
segmentos
Hardware aberto e livre
Desenvolvida na UNIFEI!
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 8
Projeto de hardware
O hardware da maioria dos sistemas computacionais pode
ser subdividido da seguinte maneira:
Como Fazer Seu Próprio Gameboy - SpACE 2018
ENTRADA PROCESSAMENTO SAÍDA
Dispositivos através
dos quais fornecemos
informações para o
computador
CPU + memória
Realiza as operações
Dispositivos através
dos quais obtemos
informações do
computador
Prof. Rafael de Moura Moreira 9
Projeto de hardware
Entradas: 8 botões (4
direções, A, B, Start, Select)
Processamento: Processador
personalizado baseado no
Z80 e Intel 8080 @ 4.19MHz,
8kB SRAM + 8kB VRAM
Saídas: LCD 160x144, auto-
falantes
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 10
Projeto de hardware
Objetivos: que o meu console precisa fazer?
Viabilidade técnica: como eu faço meu console fazer o
que eu quero?
Custos: até quanto eu posso cobrar pelo meu console?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 11
Projeto de hardware
Objetivos: que o meu console precisa fazer?
É portátil ou doméstico? Precisa de alto desempenho
gráfico? Usa internet? Aceita acessórios alternativos
(guitarra do Guitar Hero, volante de corrida etc)? Deverá
ser compatível com algum console já existente?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 12
Projeto de hardware
Viabilidade técnica: como eu faço meu console fazer o
que eu quero?
Qual processador aguentaria rodar o que imaginei?
Quanta memória devo usar? Quais portas de entrada e
saída usarei? O que o joystick deve ter? Como será o case
para garantir dissipação adequada de calor? Caso seja
portátil, qual o tamanho e formato adequado para o
case? Caso seja portátil, qual bateria aguenta várias horas
sem deixar o equipamento pesado ou superaquecido?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 13
Projeto de hardware
Custos: até quanto eu posso cobrar pelo meu console?
Quanto meus clientes estão dispostos a pagar? Quanto
meus concorrentes estão cobrando? Eu consigo ter
margem de lucro cobrando esse preço por esse
equipamento? Preciso fazer ajustes no projeto para caber
no orçamento?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 14
Projeto de hardware
Vamos definir o que precisamos para o nosso curso?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 15
Projeto de hardware
Objetivos:
1) Queremos aprender a fazer algo estilo Gameboy,
portanto deverá ser portátil e deverá rodar jogos retrô.
2) Temos pouco tempo de curso, então deverá ser fácil de
montar e programar.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 16
Projeto de hardware
Viabilidade técnica:
1) Para ser portátil e fácil de montar, é ideal usar uma
plaquinha já pré-montada com microcontrolador.
2) Para ser fácil de programar, deve ser uma plaquinha
com bom suporte a software e documentação fácil na
internet.
3) Para rodar jogo retrô, não é necessário processador
poderoso ou muita memória.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 17
Projeto de hardware
Custo:
O mais barato possível! O projeto não é comercial, muitos
de nós somos estudantes e é fácil queimar/danificar
componentes :)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 18
Projeto de hardware
Processador: Arduino Uno
8 bits, 16MHz, 2kB SRAM – suficiente para jogos leves, com
pouco gráfico
20~40 reais, fácil de encontrar
Grande disponibilidade de documentação, bibliotecas e
exemplos na internet
Usado para ensinar programação e eletrônica para
iniciantes
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 19
Projeto de hardware
Entradas: 10 botões digitais
Suficiente para fazer um layout de joystick estilo Super
Nintendo
Fácil de programar, retornam 2 valores diferentes (0 ou 1)
Preço em centavos
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 20
Projeto de hardware
Saída: LCD 16x2
Fácil de programar, os desenhos são representados
como caracteres
Gráficos estilo “dot matrix”, como os do Gameboy
Preço: 5 a 20 reais
Desvantagem: resolução baixa, gráficos subdivididos em
retângulos na tela
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 21
Projeto de hardware
Saída alternativa: LCD Nokia 5110 (a tela de celular Nokia
antigo!)
Tela gráfica verdadeira
Gráficos estilo “dot matrix”, como os do Gameboy
Preço: na faixa dos 20 reais
Relativamente fácil de programar, mas menos do que o
LCD 16x2
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 22
Projeto de hardware
Por uma questão de disponibilidade de equipamento,
neste curso usaremos o display LCD 16x2.
Ao final desta apresentação há links com documentação
para quem quiser montar o circuito com o Nokia 5110 em
casa!
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 23
Projeto de hardware
Esquemático
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 24
Interface Hardware-Software
É importante facilitar a vida dos desenvolvedores dos
jogos.
Trabalhar diretamente com o hardware dificulta o
desenvolvimento dos jogos, prolonga e encarece o projeto
e pode resultar em jogos abaixo do ideal.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 25
Interface Hardware-Software
“Desenvolvedores tiveram problemas para criar jogos para o Saturn. (…) sem
experiência avançada em programação de jogos era difícil de desenvolver algo
para ele porque seu hardware era muito complexo. Estima-se que 1 em 100
programadores realmente conseguiam usar todo o seu potencial. (…) e como
desenvolvedores estavam com dificuldade para fazer os jogos, eles optaram pelo
Playstation.”
<http://www.dcshooters.co.uk/sega/saturn/saturn.php>
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 26
Interface Hardware-Software
Fabricantes de hardware geralmente disponibilizam
camadas intermediárias de software que se comunica
com o hardware, como sistemas operacionais, drivers de
dispositivo e bibliotecas.
Essas camadas intermediárias fornecem aos
programadores funções fáceis de utilizar, que não exigem
conhecimento avançado do hardware, facilitando tanto o
desenvolvimento quanto a portabilidade do código.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 27
Interface Hardware-Software
key = kpReadKey();
Código para ler qual botão foi
pressionado utilizando um
driver pronto
Trecho de ~50% do código da
leitura do botão no driver
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 28
Interface Hardware-Software
Como projetar um bom driver ou biblioteca de hardware:
1) Ler o datasheet do dispositivo e entender o que ele faz, qual
o formato dos dados que ele recebe e qual o formato dos
dados que ele entrega
2) Identificar quais recursos o usuário irá precisar usar
3) As funções deverão exigir e fornecer dados em formato
amigável para o usuário – elas são responsáveis por colocar
no formato adequado para o hardware, não o usuário!
4) Boa documentação: nomes intuitivos e boas explicações de
como usar
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 29
Interface Hardware-Software
Para este curso, utilizaremos os drivers fornecidos pelos
desenvolvedores da PQDB.
Nosso foco será o desenvolvimento de um joguinho!
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 30
Interface Hardware-Software
Como ler qual botão foi pressionado:
A função kpReadKey() retorna um caractere informando
qual tecla foi pressionada: (U)p, (D)own, (L)eft, (R)ight, (A),
(B), (X), (Y), (S)elect ou (s)tart.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 31
Interface Hardware-Software
Como desenhar na tela:
A função lcdCreateChar(posição, desenho) copia um
desenho binário (8x5) em uma certa posição da memória
do LCD.
É com ela que criaremos os gráficos do nosso joguinho.
Posteriormente utilizaremos lcdChar(numero) para colocar
na tela o desenho salvo na posição “numero” da memória.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 32
Criando o nosso primeiro jogo
Um bom código não deve apenas funcionar bem – ele
deve ser limpo, organizado e o mais legível possível.
Isso facilita o trabalho em grupo e o processo de debug.
Boas técnicas de programação incluem o uso de nomes
intuitivos para funções e variáveis, o uso de comentários
explicando o que cada trecho faz e o uso de padrões
populares para cada tipo de programa.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 33
Criando o nosso primeiro jogo
Uma forma de dividir o processamento do jogo é em 3
etapas:
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 34
Criando o nosso primeiro jogo
Uma forma de dividir o processamento do jogo é em 3 etapas:
Input: processar
as entradas (ex:
usuário apertou
direcional para
esquerda)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 35
Criando o nosso primeiro jogo
Uma forma de dividir o processamento do jogo é em 3 etapas:
Update:
atualizar as in-
formações do
jogo (ex: posição
do jogador no
mapa, testar se
houve colisão,
gerar inimigos etc)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 36
Criando o nosso primeiro jogo
Uma forma de dividir o processamento do jogo é em 3 etapas:
Render:
redesenhar a
tela do jogo
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 37
Criando o nosso primeiro jogo
Proposta de joguinho: um jogo de carrinho estilo Enduro
(Atari 2600, 1983) onde o jogador deve desviar de
obstáculos (no original, outros carrinhos).
Vamos estudar a lógica do joguinho. O código-fonte está
no GitHub:
<https://github.com/rafaelmmoreira>
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 38
Criando o nosso primeiro jogo
Vamos subdividir o LCD em 4 linhas. Ou seja, cada
“caractere” dele corresponderá a 2 linhas. Assim teremos
mais espaço para o jogo.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 39
Criando o nosso primeiro jogo
Como cada desenho ocupa um caractere inteiro, e só
temos 2 linhas de caracteres, teremos que fazer diferentes
combinações de cada desenho:
1) Carrinho em cima do retângulo
2) Carrinho embaixo do retângulo
3) Obstáculo em cima do retângulo
4) Obstáculo embaixo do retângulo
5) Carrinho em cima e obstáculo embaixo
6) Carrinho embaixo e obstáculo em cima
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 40
Criando o nosso primeiro jogo
Cada quadradinho pintado corresponde a “1”, enquanto
cada quadradinho em branco corresponde a “0”.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 41
Criando o nosso primeiro jogo
Todo código de Arduino possui uma função setup(), que é
executada uma vez ao início do programa, e uma função
loop(), que é repetida enquanto o dispositivo estiver
ligado.
Utilizaremos a setup() para fazer a inicialização do
hardware e para salvar nossos desenhos na tela. A função
loop() chamará, em sequência, cada uma das 3 funções
que vimos antes: loop_input(), loop_update() e
loop_render().
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 42
Criando o nosso primeiro jogo
loop_input():
Apenas lê qual tecla o usuário pressionou e a armazena.
Caso nenhuma tecla tenha sido pressionada, armazena 0
(zero).
Note no código-fonte que a função possui um loop. Por
que?
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 43
Criando o nosso primeiro jogo
loop_update():
Verifica qual tecla foi apertada e move a posição do
carrinho no mapa (aumentar ou diminuir linhas e colunas).
Movimenta o carrinho para frente na estrada (desloca o
mapa inteiro 1 casa para trás) e realiza um sorteio para
saber se novos obstáculos aparecerão.
Testa se houve Game Over (posição do carrinho no mapa
= obstáculo).
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 44
Criando o nosso primeiro jogo
loop_render():
Limpa a tela, posiciona o cursor na primeira posição e
percorre a matriz desenhando seu conteúdo.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 45
Antes de partir para a atividade prática, vamos dar os
devidos créditos aos envolvidos!
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 46
Agradecimentos
À organização da SpACE e a toda a equipe do CAECA,
CAELT e DACOMP.
Ao Prof. Rodrigo “Max” Almeida por fornecer o
equipamento.
E a todos vocês que engoliram uma aula de embarcados
disfarçada de palestra de joguinho!
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 47
Referências e links úteis
• Projeto PQDB no GitHub – inclui drivers e toda a documentação de
hardware: <https://github.com/projetopqdb/>
• Portal Embarcados – inclui vários tutoriais com Arduino e ensina a
fazer a sua própria PQDB! <https://www.embarcados.com.br/>
• Game Programming Patterns – ótima referência para programação
de jogos! <http://gameprogrammingpatterns.com/>
• Livro: Programação de Sistemas Embarcados – R. M. A. Almeida, C.
H. V. Moraes, T. F. P. Seraphim – Ed. Elsevier - é daí que surgiu a
PQDB. Um curso completo de programação de embarcados que
não exige conhecimentos prévios. Parte do mais básico e chega
em assuntos avançados.
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 48
DESAFIO HANDS-ON
Baixe o rascunho disponibilizado no GitHub e complete-o de modo a
ter um “Enduro” funcional.
Caso ajude, estes slides estão disponíveis em:
<https://www.slideshare.net/rafaelmmoreira>
Caso termine o seu joguinho com facilidade, tente implementar as
sugestões abaixo:
• Uma tela de Game Over
• Uma tela de Pause (caso o usuário aperte Start)
• Um míssil que explode uma caixinha
• Um meio de mostrar o placar (1 ponto por caixinha ultrapassada)
• Um meio de aumentar a velocidade conforme o jogo avança
• Modo 2 jogadores (P2 utiliza os botões A, B, X e Y como direcional)
Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 49

Mais conteúdo relacionado

Semelhante a Como Fazer Seu Próprio Gameboy - SpACE UNIFEI

ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDeviceRicardo Rufino
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores RubyEric Hideki
 
Introdução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIIntrodução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIRogerio Alencar Filho
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
Empreender em IoT no Brasil - desafios e oportunidades.
Empreender em IoT no Brasil - desafios e oportunidades.Empreender em IoT no Brasil - desafios e oportunidades.
Empreender em IoT no Brasil - desafios e oportunidades.Embarcados
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSprofjotamarcosduarte
 
It’s all about the game
It’s all about the gameIt’s all about the game
It’s all about the gameBruno Cicanci
 
Montagem de Microcomputador
Montagem de MicrocomputadorMontagem de Microcomputador
Montagem de Microcomputadorguest48cce33
 
Montagem de Microcomputador
Montagem de MicrocomputadorMontagem de Microcomputador
Montagem de Microcomputadorguest48cce33
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoLuciano Ramalho
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores picCesar Prim
 
Criando aplicativos multimídia com director 7 tambein engloba versoes 5, 6...
Criando aplicativos multimídia com director  7   tambein engloba versoes 5, 6...Criando aplicativos multimídia com director  7   tambein engloba versoes 5, 6...
Criando aplicativos multimídia com director 7 tambein engloba versoes 5, 6...Nilson Oliveira
 
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game Studio
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game StudioQuer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game Studio
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game StudioLuiz Nörnberg
 
Introdução à Ciência da Computação com Raspberry Pi
 Introdução à Ciência da Computação com Raspberry Pi  Introdução à Ciência da Computação com Raspberry Pi
Introdução à Ciência da Computação com Raspberry Pi Eronides Da Silva Neto
 

Semelhante a Como Fazer Seu Próprio Gameboy - SpACE UNIFEI (20)

ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDevice
 
Bt4 H2HC6th
Bt4 H2HC6thBt4 H2HC6th
Bt4 H2HC6th
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
Introdução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIIntrodução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PI
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
Trabalho de informatica
Trabalho de informaticaTrabalho de informatica
Trabalho de informatica
 
Empreender em IoT no Brasil - desafios e oportunidades.
Empreender em IoT no Brasil - desafios e oportunidades.Empreender em IoT no Brasil - desafios e oportunidades.
Empreender em IoT no Brasil - desafios e oportunidades.
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
It’s all about the game
It’s all about the gameIt’s all about the game
It’s all about the game
 
Montagem de Microcomputador
Montagem de MicrocomputadorMontagem de Microcomputador
Montagem de Microcomputador
 
Montagem de Microcomputador
Montagem de MicrocomputadorMontagem de Microcomputador
Montagem de Microcomputador
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
WRVA 2015
WRVA 2015WRVA 2015
WRVA 2015
 
Criando aplicativos multimídia com director 7 tambein engloba versoes 5, 6...
Criando aplicativos multimídia com director  7   tambein engloba versoes 5, 6...Criando aplicativos multimídia com director  7   tambein engloba versoes 5, 6...
Criando aplicativos multimídia com director 7 tambein engloba versoes 5, 6...
 
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game Studio
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game StudioQuer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game Studio
Quer fazer jogos? Conheça as tecnologias utilizadas pelo Izyplay Game Studio
 
Zf campus party_2011
Zf campus party_2011Zf campus party_2011
Zf campus party_2011
 
Zf campus party_2011
Zf campus party_2011Zf campus party_2011
Zf campus party_2011
 
Introdução à Ciência da Computação com Raspberry Pi
 Introdução à Ciência da Computação com Raspberry Pi  Introdução à Ciência da Computação com Raspberry Pi
Introdução à Ciência da Computação com Raspberry Pi
 

Último

Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfdanielemarques481
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfMarcos Boaventura
 

Último (7)

Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
 

Como Fazer Seu Próprio Gameboy - SpACE UNIFEI

  • 1. Como Fazer Seu Próprio Gameboy Prof. Rafael de Moura Moreira
  • 2. Durante o lero-lero inicial, baixem a IDE do Arduino! <https://www.arduino.cc/en/Main/Software> (ou digite “arduino ide” no Google) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 2
  • 3. @author Rafael de Moura Moreira <rafaelmmoreira@gmail.com> Professor substituto na Universidade Federal de Itajubá (UNIFEI) (Quase) Mestre em Ciência e Tecnologia da Computação pela UNIFEI Engenheiro de Computação pela UNIFEI @rafaelmmoreira Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 3
  • 4. O que não veremos Como fazer seu Gameboy com Raspberry Pi + impressão 3D <https://www.thingiverse.com/thing:382 485> Como fazer seu Gameboy com Raspberry Pi + Gameboy quebrado <https://superpiboy.wordpress.com> Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 4
  • 5. O que veremos projeto de hardware projeto de software Como Fazer Seu Próprio Gameboy - SpACE 2018 void loopUpdate(){ if (key != mov){ switch(key){ case 'U’: mov = key; if (linha > 0) linha--; break; case 'D’: mov = key; if (linha < 3) linha++; break; case 'L’: mov = key; if (coluna > 0) coluna--; break; case 'R’: mov = key; if (coluna < 15) coluna++; break; Prof. Rafael de Moura Moreira 5
  • 6. Conhecendo nosso equipamento Arduino (Uno ou Mega) Pão de Queijo Development Board (PQDB) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 6
  • 7. Arduino (Uno/Mega) Microcontrolador Atmega 16MHz, 2kB (Uno) / 8kB (Mega) SRAM Pinos de entrada e saída digital e analógica Hardware aberto e livre IDE grátis Barato ($) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 7
  • 8. Pão de Queijo Development Board (PQDB) Shield didático para estudo de embarcados Compatível com pinos do Arduino Uno (qualquer microcontrolador) Contém saída digital (LED RGB), analógica (buzzer), entradas digitais (botões), entradas analógicas (potenciômetro e sensores), LCD e display de 7 segmentos Hardware aberto e livre Desenvolvida na UNIFEI! Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 8
  • 9. Projeto de hardware O hardware da maioria dos sistemas computacionais pode ser subdividido da seguinte maneira: Como Fazer Seu Próprio Gameboy - SpACE 2018 ENTRADA PROCESSAMENTO SAÍDA Dispositivos através dos quais fornecemos informações para o computador CPU + memória Realiza as operações Dispositivos através dos quais obtemos informações do computador Prof. Rafael de Moura Moreira 9
  • 10. Projeto de hardware Entradas: 8 botões (4 direções, A, B, Start, Select) Processamento: Processador personalizado baseado no Z80 e Intel 8080 @ 4.19MHz, 8kB SRAM + 8kB VRAM Saídas: LCD 160x144, auto- falantes Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 10
  • 11. Projeto de hardware Objetivos: que o meu console precisa fazer? Viabilidade técnica: como eu faço meu console fazer o que eu quero? Custos: até quanto eu posso cobrar pelo meu console? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 11
  • 12. Projeto de hardware Objetivos: que o meu console precisa fazer? É portátil ou doméstico? Precisa de alto desempenho gráfico? Usa internet? Aceita acessórios alternativos (guitarra do Guitar Hero, volante de corrida etc)? Deverá ser compatível com algum console já existente? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 12
  • 13. Projeto de hardware Viabilidade técnica: como eu faço meu console fazer o que eu quero? Qual processador aguentaria rodar o que imaginei? Quanta memória devo usar? Quais portas de entrada e saída usarei? O que o joystick deve ter? Como será o case para garantir dissipação adequada de calor? Caso seja portátil, qual o tamanho e formato adequado para o case? Caso seja portátil, qual bateria aguenta várias horas sem deixar o equipamento pesado ou superaquecido? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 13
  • 14. Projeto de hardware Custos: até quanto eu posso cobrar pelo meu console? Quanto meus clientes estão dispostos a pagar? Quanto meus concorrentes estão cobrando? Eu consigo ter margem de lucro cobrando esse preço por esse equipamento? Preciso fazer ajustes no projeto para caber no orçamento? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 14
  • 15. Projeto de hardware Vamos definir o que precisamos para o nosso curso? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 15
  • 16. Projeto de hardware Objetivos: 1) Queremos aprender a fazer algo estilo Gameboy, portanto deverá ser portátil e deverá rodar jogos retrô. 2) Temos pouco tempo de curso, então deverá ser fácil de montar e programar. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 16
  • 17. Projeto de hardware Viabilidade técnica: 1) Para ser portátil e fácil de montar, é ideal usar uma plaquinha já pré-montada com microcontrolador. 2) Para ser fácil de programar, deve ser uma plaquinha com bom suporte a software e documentação fácil na internet. 3) Para rodar jogo retrô, não é necessário processador poderoso ou muita memória. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 17
  • 18. Projeto de hardware Custo: O mais barato possível! O projeto não é comercial, muitos de nós somos estudantes e é fácil queimar/danificar componentes :) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 18
  • 19. Projeto de hardware Processador: Arduino Uno 8 bits, 16MHz, 2kB SRAM – suficiente para jogos leves, com pouco gráfico 20~40 reais, fácil de encontrar Grande disponibilidade de documentação, bibliotecas e exemplos na internet Usado para ensinar programação e eletrônica para iniciantes Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 19
  • 20. Projeto de hardware Entradas: 10 botões digitais Suficiente para fazer um layout de joystick estilo Super Nintendo Fácil de programar, retornam 2 valores diferentes (0 ou 1) Preço em centavos Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 20
  • 21. Projeto de hardware Saída: LCD 16x2 Fácil de programar, os desenhos são representados como caracteres Gráficos estilo “dot matrix”, como os do Gameboy Preço: 5 a 20 reais Desvantagem: resolução baixa, gráficos subdivididos em retângulos na tela Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 21
  • 22. Projeto de hardware Saída alternativa: LCD Nokia 5110 (a tela de celular Nokia antigo!) Tela gráfica verdadeira Gráficos estilo “dot matrix”, como os do Gameboy Preço: na faixa dos 20 reais Relativamente fácil de programar, mas menos do que o LCD 16x2 Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 22
  • 23. Projeto de hardware Por uma questão de disponibilidade de equipamento, neste curso usaremos o display LCD 16x2. Ao final desta apresentação há links com documentação para quem quiser montar o circuito com o Nokia 5110 em casa! Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 23
  • 24. Projeto de hardware Esquemático Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 24
  • 25. Interface Hardware-Software É importante facilitar a vida dos desenvolvedores dos jogos. Trabalhar diretamente com o hardware dificulta o desenvolvimento dos jogos, prolonga e encarece o projeto e pode resultar em jogos abaixo do ideal. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 25
  • 26. Interface Hardware-Software “Desenvolvedores tiveram problemas para criar jogos para o Saturn. (…) sem experiência avançada em programação de jogos era difícil de desenvolver algo para ele porque seu hardware era muito complexo. Estima-se que 1 em 100 programadores realmente conseguiam usar todo o seu potencial. (…) e como desenvolvedores estavam com dificuldade para fazer os jogos, eles optaram pelo Playstation.” <http://www.dcshooters.co.uk/sega/saturn/saturn.php> Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 26
  • 27. Interface Hardware-Software Fabricantes de hardware geralmente disponibilizam camadas intermediárias de software que se comunica com o hardware, como sistemas operacionais, drivers de dispositivo e bibliotecas. Essas camadas intermediárias fornecem aos programadores funções fáceis de utilizar, que não exigem conhecimento avançado do hardware, facilitando tanto o desenvolvimento quanto a portabilidade do código. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 27
  • 28. Interface Hardware-Software key = kpReadKey(); Código para ler qual botão foi pressionado utilizando um driver pronto Trecho de ~50% do código da leitura do botão no driver Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 28
  • 29. Interface Hardware-Software Como projetar um bom driver ou biblioteca de hardware: 1) Ler o datasheet do dispositivo e entender o que ele faz, qual o formato dos dados que ele recebe e qual o formato dos dados que ele entrega 2) Identificar quais recursos o usuário irá precisar usar 3) As funções deverão exigir e fornecer dados em formato amigável para o usuário – elas são responsáveis por colocar no formato adequado para o hardware, não o usuário! 4) Boa documentação: nomes intuitivos e boas explicações de como usar Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 29
  • 30. Interface Hardware-Software Para este curso, utilizaremos os drivers fornecidos pelos desenvolvedores da PQDB. Nosso foco será o desenvolvimento de um joguinho! Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 30
  • 31. Interface Hardware-Software Como ler qual botão foi pressionado: A função kpReadKey() retorna um caractere informando qual tecla foi pressionada: (U)p, (D)own, (L)eft, (R)ight, (A), (B), (X), (Y), (S)elect ou (s)tart. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 31
  • 32. Interface Hardware-Software Como desenhar na tela: A função lcdCreateChar(posição, desenho) copia um desenho binário (8x5) em uma certa posição da memória do LCD. É com ela que criaremos os gráficos do nosso joguinho. Posteriormente utilizaremos lcdChar(numero) para colocar na tela o desenho salvo na posição “numero” da memória. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 32
  • 33. Criando o nosso primeiro jogo Um bom código não deve apenas funcionar bem – ele deve ser limpo, organizado e o mais legível possível. Isso facilita o trabalho em grupo e o processo de debug. Boas técnicas de programação incluem o uso de nomes intuitivos para funções e variáveis, o uso de comentários explicando o que cada trecho faz e o uso de padrões populares para cada tipo de programa. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 33
  • 34. Criando o nosso primeiro jogo Uma forma de dividir o processamento do jogo é em 3 etapas: Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 34
  • 35. Criando o nosso primeiro jogo Uma forma de dividir o processamento do jogo é em 3 etapas: Input: processar as entradas (ex: usuário apertou direcional para esquerda) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 35
  • 36. Criando o nosso primeiro jogo Uma forma de dividir o processamento do jogo é em 3 etapas: Update: atualizar as in- formações do jogo (ex: posição do jogador no mapa, testar se houve colisão, gerar inimigos etc) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 36
  • 37. Criando o nosso primeiro jogo Uma forma de dividir o processamento do jogo é em 3 etapas: Render: redesenhar a tela do jogo Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 37
  • 38. Criando o nosso primeiro jogo Proposta de joguinho: um jogo de carrinho estilo Enduro (Atari 2600, 1983) onde o jogador deve desviar de obstáculos (no original, outros carrinhos). Vamos estudar a lógica do joguinho. O código-fonte está no GitHub: <https://github.com/rafaelmmoreira> Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 38
  • 39. Criando o nosso primeiro jogo Vamos subdividir o LCD em 4 linhas. Ou seja, cada “caractere” dele corresponderá a 2 linhas. Assim teremos mais espaço para o jogo. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 39
  • 40. Criando o nosso primeiro jogo Como cada desenho ocupa um caractere inteiro, e só temos 2 linhas de caracteres, teremos que fazer diferentes combinações de cada desenho: 1) Carrinho em cima do retângulo 2) Carrinho embaixo do retângulo 3) Obstáculo em cima do retângulo 4) Obstáculo embaixo do retângulo 5) Carrinho em cima e obstáculo embaixo 6) Carrinho embaixo e obstáculo em cima Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 40
  • 41. Criando o nosso primeiro jogo Cada quadradinho pintado corresponde a “1”, enquanto cada quadradinho em branco corresponde a “0”. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 41
  • 42. Criando o nosso primeiro jogo Todo código de Arduino possui uma função setup(), que é executada uma vez ao início do programa, e uma função loop(), que é repetida enquanto o dispositivo estiver ligado. Utilizaremos a setup() para fazer a inicialização do hardware e para salvar nossos desenhos na tela. A função loop() chamará, em sequência, cada uma das 3 funções que vimos antes: loop_input(), loop_update() e loop_render(). Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 42
  • 43. Criando o nosso primeiro jogo loop_input(): Apenas lê qual tecla o usuário pressionou e a armazena. Caso nenhuma tecla tenha sido pressionada, armazena 0 (zero). Note no código-fonte que a função possui um loop. Por que? Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 43
  • 44. Criando o nosso primeiro jogo loop_update(): Verifica qual tecla foi apertada e move a posição do carrinho no mapa (aumentar ou diminuir linhas e colunas). Movimenta o carrinho para frente na estrada (desloca o mapa inteiro 1 casa para trás) e realiza um sorteio para saber se novos obstáculos aparecerão. Testa se houve Game Over (posição do carrinho no mapa = obstáculo). Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 44
  • 45. Criando o nosso primeiro jogo loop_render(): Limpa a tela, posiciona o cursor na primeira posição e percorre a matriz desenhando seu conteúdo. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 45
  • 46. Antes de partir para a atividade prática, vamos dar os devidos créditos aos envolvidos! Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 46
  • 47. Agradecimentos À organização da SpACE e a toda a equipe do CAECA, CAELT e DACOMP. Ao Prof. Rodrigo “Max” Almeida por fornecer o equipamento. E a todos vocês que engoliram uma aula de embarcados disfarçada de palestra de joguinho! Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 47
  • 48. Referências e links úteis • Projeto PQDB no GitHub – inclui drivers e toda a documentação de hardware: <https://github.com/projetopqdb/> • Portal Embarcados – inclui vários tutoriais com Arduino e ensina a fazer a sua própria PQDB! <https://www.embarcados.com.br/> • Game Programming Patterns – ótima referência para programação de jogos! <http://gameprogrammingpatterns.com/> • Livro: Programação de Sistemas Embarcados – R. M. A. Almeida, C. H. V. Moraes, T. F. P. Seraphim – Ed. Elsevier - é daí que surgiu a PQDB. Um curso completo de programação de embarcados que não exige conhecimentos prévios. Parte do mais básico e chega em assuntos avançados. Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 48
  • 49. DESAFIO HANDS-ON Baixe o rascunho disponibilizado no GitHub e complete-o de modo a ter um “Enduro” funcional. Caso ajude, estes slides estão disponíveis em: <https://www.slideshare.net/rafaelmmoreira> Caso termine o seu joguinho com facilidade, tente implementar as sugestões abaixo: • Uma tela de Game Over • Uma tela de Pause (caso o usuário aperte Start) • Um míssil que explode uma caixinha • Um meio de mostrar o placar (1 ponto por caixinha ultrapassada) • Um meio de aumentar a velocidade conforme o jogo avança • Modo 2 jogadores (P2 utiliza os botões A, B, X e Y como direcional) Como Fazer Seu Próprio Gameboy - SpACE 2018Prof. Rafael de Moura Moreira 49