uspgamedev · uspgamedev desafios de computação no desenvolvimento de jogos vinícius k daros +...

41
USPGameDev USPGameDev Desafios de Computação no Desafios de Computação no Desenvolvimento de Jogos Desenvolvimento de Jogos Vinícius K Daros + Wilson Kazuo Mizutani Vinícius K Daros + Wilson Kazuo Mizutani www.uspgamedev.org www.uspgamedev.org Encontro BCC Encontro BCC 12/09/2014 12/09/2014

Upload: others

Post on 19-Jun-2020

1 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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