uspgamedev · uspgamedev desafios de computação no desenvolvimento de jogos vinícius k daros +...
TRANSCRIPT
![Page 1: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/1.jpg)
USPGameDevUSPGameDev
Desafios de Computação noDesafios de Computação noDesenvolvimento de JogosDesenvolvimento de Jogos
Vinícius K Daros + Wilson Kazuo MizutaniVinícius K Daros + Wilson Kazuo Mizutaniwww.uspgamedev.orgwww.uspgamedev.org
Encontro BCCEncontro BCC12/09/201412/09/2014
![Page 2: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/2.jpg)
22/41/41
Quem somosQuem somos
![Page 3: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/3.jpg)
33/41/41
Jogos digitaisJogos digitais
Estrutura básicaEstrutura básica
![Page 4: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/4.jpg)
44/41/41
Programas interativosProgramas interativos
Execução sem fimExecução sem fim
Detecção de eventosDetecção de eventos
Controle de tempoControle de tempo
![Page 5: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/5.jpg)
55/41/41
Game LoopGame Loop
Fonte: http://gameprogrammingpatterns.com/game-loop.htmlFonte: http://gameprogrammingpatterns.com/game-loop.html
![Page 6: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/6.jpg)
66/41/41
Jogos digitaisJogos digitais
Padrões de projetoPadrões de projeto
![Page 7: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/7.jpg)
77/41/41
Padrões de projetoPadrões de projeto
Como organizar os tipos de Como organizar os tipos de elementos do jogo?elementos do jogo?
![Page 8: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/8.jpg)
88/41/41
Herança vs. ComposiçãoHerança vs. Composição
Fonte: http://gameprogrammingpatterns.com/component.htmlFonte: http://gameprogrammingpatterns.com/component.html
![Page 9: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/9.jpg)
99/41/41
Herança vs. ComposiçãoHerança vs. Composição
Fonte: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/Fonte: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
![Page 10: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/10.jpg)
1010/41/41
Simulando FísicaSimulando Física
ColisõesColisões
![Page 11: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/11.jpg)
1111/41/41
Casos fáceisCasos fáceis
r1
r2
CírculosCírculos
d
![Page 12: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/12.jpg)
1212/41/41
Casos fáceisCasos fáceis
Axis-aligned bounding boxesAxis-aligned bounding boxes
y
x
top1
bottom1
top2
bottom2
left1
right1
left2
right2
![Page 13: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/13.jpg)
1313/41/41
Casos fáceisCasos fáceis
Axis-aligned bounding boxesAxis-aligned bounding boxes
y
x
top1
bottom1
top2
bottom2
left1
right1
left2
right2
![Page 14: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/14.jpg)
1414/41/41
Círculo vs. retânguloCírculo vs. retângulo
Vamos assumir uma AABBVamos assumir uma AABB
![Page 15: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/15.jpg)
1515/41/41
Círculo vs. retânguloCírculo vs. retângulo
Ponto do retângulo mais Ponto do retângulo mais próximo da circunferênciapróximo da circunferência
P
xP = max(left,min(right,xC))yP = max(bottom,min(top,yC))
![Page 16: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/16.jpg)
1616/41/41
Ponto vs. Polígono convexoPonto vs. Polígono convexo
P
Como saber se o ponto está Como saber se o ponto está dentro?dentro?
![Page 17: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/17.jpg)
1717/41/41
Ponto vs. Polígono convexoPonto vs. Polígono convexo
Produto vetorialProduto vetorial
vx vy
wx wy
v × w = = ki j kvx vy 0wx wy 0
![Page 18: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/18.jpg)
1818/41/41
w
v
Ponto vs. Polígono convexoPonto vs. Polígono convexo
P
Usamos o sinal do determinante!Usamos o sinal do determinante!
vx vy
wx wy
v × w = = ki j kvx vy 0wx wy 0
Está fora se > 0 vxwy – vywx > 0
vxwy > vywx (!!!)
vx vy
wx wy
![Page 19: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/19.jpg)
1919/41/41
Simulando FísicaSimulando Física
Detectar objetos próximosDetectar objetos próximos
![Page 20: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/20.jpg)
2020/41/41
Implementação ingênuaImplementação ingênua
Todos contra todosTodos contra todos
Colide? obj2 obj3 obj4 ...
obj1 ? ? ? ?
obj2 ? ? ?
obj3 ? ?
... ?
![Page 21: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/21.jpg)
2121/41/41
Implementação ingênuaImplementação ingênua
![Page 22: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/22.jpg)
2222/41/41
Partição espacialPartição espacial
A ideia é agrupar objetos A ideia é agrupar objetos próximospróximosExemplo: Quad-TreeExemplo: Quad-Tree
Fonte: http://gameprogrammingpatterns.com/spatial-partition.htmlFonte: http://gameprogrammingpatterns.com/spatial-partition.html
![Page 23: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/23.jpg)
2323/41/41
Partição espacialPartição espacial
Outras estruturas conhecidas:Outras estruturas conhecidas:● Grade fixaGrade fixa● K-Dimensional TreeK-Dimensional Tree● Interval K-Dimensional TreeInterval K-Dimensional Tree● Binary Space Partitioning TreeBinary Space Partitioning Tree● R-TreeR-Tree
![Page 24: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/24.jpg)
2424/41/41
Inteligência ArtificialInteligência Artificial
Definindo comportamentosDefinindo comportamentos
![Page 25: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/25.jpg)
2525/41/41
Máquina de Estados FinitaMáquina de Estados Finita
rest
follow
hero spotted
attack
within range
escape
hero lost
low hp
low hp
out ofrange
hero lost
![Page 26: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/26.jpg)
2626/41/41
Inteligência ArtificialInteligência Artificial
Path-findingPath-finding
![Page 27: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/27.jpg)
2727/41/41
Algoritmo A*Algoritmo A*
Variação do algoritmo de DijkstraVariação do algoritmo de Dijkstra
![Page 28: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/28.jpg)
2828/41/41
Algoritmo A* relaxadoAlgoritmo A* relaxado
Heurística com pesoHeurística com peso
![Page 29: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/29.jpg)
2929/41/41
RenderizaçãoRenderização
Apresentando o jogoApresentando o jogo
![Page 30: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/30.jpg)
3030/41/41
SpritesheetsSpritesheets
![Page 31: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/31.jpg)
3131/41/41
Projeções tridimensionaisProjeções tridimensionais
![Page 32: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/32.jpg)
3232/41/41
Projeções tridimensionaisProjeções tridimensionais
x
y
x' Transformação Linear:Transformação Linear:
T: R² → RT: R² → R22
T(v+u) = T(v) + T(u)T(v+u) = T(v) + T(u)T(k.v) = k.T(v)T(k.v) = k.T(v)
T(0) = 0T(0) = 0
Transformação Afim:Transformação Afim:
P: R² → RP: R² → R22
P(v) = T(v) + pP(v) = T(v) + pP(0) = pP(0) = p
P 0
![Page 33: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/33.jpg)
3333/41/41
Projeções tridimensionaisProjeções tridimensionais
Coordenadas homogêneasCoordenadas homogêneas
a b u x ax + by + u a b 0 x uc d v y = cx + dy + v = c d 0 y + v0 0 1 1 1 0 0 1 1 0
a b u x ax + byc d v y = cx + dy0 0 1 0 0
![Page 34: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/34.jpg)
3434/41/41
RasterizaçãoRasterização
![Page 35: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/35.jpg)
3535/41/41
SombrasSombras
Shadow-castingShadow-casting simples simples
![Page 36: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/36.jpg)
3636/41/41
Conteúdo procedimentalConteúdo procedimental
Autômatos celularesAutômatos celulares
![Page 37: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/37.jpg)
3737/41/41
GramáticasGramáticas
RegrasRegras
A → ABAA → ABA
B → CCB → CC
ExpansãoExpansão
1) A1) A
2) ABA2) ABA
3) ABACCABA3) ABACCABA
4) ABACCABACCABACCABA4) ABACCABACCABACCABA
![Page 38: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/38.jpg)
3838/41/41
Autômato celularAutômato celular
1 2 3
![Page 39: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/39.jpg)
3939/41/41
Conteúdo procedimentalConteúdo procedimental
● NoisesNoises
● SATsSATs
Outros algoritmos e técnicasOutros algoritmos e técnicas
![Page 40: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/40.jpg)
4040/41/41
Unlimited Slide WorksUnlimited Slide Works
Obrigado!Obrigado!
www.uspgamedev.orgwww.uspgamedev.org
www.fb.com/uspgamedevwww.fb.com/uspgamedev
[email protected]@uspgamedev.org
![Page 41: USPGameDev · USPGameDev Desafios de Computação no Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Encontro BCC 12/09/2014](https://reader031.vdocuments.net/reader031/viewer/2022041106/5f08fa4f7e708231d424a4a0/html5/thumbnails/41.jpg)
4141/41/41
Unlimited Slide WorksUnlimited Slide Works
● NetworkingNetworking– Peer-2-peer (Age of Empires)Peer-2-peer (Age of Empires)– Client/Server (QuakeWorld)Client/Server (QuakeWorld)
● ShadersShaders● MultithreadingMultithreading