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

Post on 19-Jun-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

22/41/41

Quem somosQuem somos

33/41/41

Jogos digitaisJogos digitais

Estrutura básicaEstrutura básica

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

55/41/41

Game LoopGame Loop

Fonte: http://gameprogrammingpatterns.com/game-loop.htmlFonte: http://gameprogrammingpatterns.com/game-loop.html

66/41/41

Jogos digitaisJogos digitais

Padrões de projetoPadrões de projeto

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?

88/41/41

Herança vs. ComposiçãoHerança vs. Composição

Fonte: http://gameprogrammingpatterns.com/component.htmlFonte: http://gameprogrammingpatterns.com/component.html

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/

1010/41/41

Simulando FísicaSimulando Física

ColisõesColisões

1111/41/41

Casos fáceisCasos fáceis

r1

r2

CírculosCírculos

d

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

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

1414/41/41

Círculo vs. retânguloCírculo vs. retângulo

Vamos assumir uma AABBVamos assumir uma AABB

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))

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?

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

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

1919/41/41

Simulando FísicaSimulando Física

Detectar objetos próximosDetectar objetos próximos

2020/41/41

Implementação ingênuaImplementação ingênua

Todos contra todosTodos contra todos

Colide? obj2 obj3 obj4 ...

obj1 ? ? ? ?

obj2 ? ? ?

obj3 ? ?

... ?

2121/41/41

Implementação ingênuaImplementação ingênua

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

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

2424/41/41

Inteligência ArtificialInteligência Artificial

Definindo comportamentosDefinindo comportamentos

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

2626/41/41

Inteligência ArtificialInteligência Artificial

Path-findingPath-finding

2727/41/41

Algoritmo A*Algoritmo A*

Variação do algoritmo de DijkstraVariação do algoritmo de Dijkstra

2828/41/41

Algoritmo A* relaxadoAlgoritmo A* relaxado

Heurística com pesoHeurística com peso

2929/41/41

RenderizaçãoRenderização

Apresentando o jogoApresentando o jogo

3030/41/41

SpritesheetsSpritesheets

3131/41/41

Projeções tridimensionaisProjeções tridimensionais

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

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

3434/41/41

RasterizaçãoRasterização

3535/41/41

SombrasSombras

Shadow-castingShadow-casting simples simples

3636/41/41

Conteúdo procedimentalConteúdo procedimental

Autômatos celularesAutômatos celulares

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

3838/41/41

Autômato celularAutômato celular

1 2 3

3939/41/41

Conteúdo procedimentalConteúdo procedimental

● NoisesNoises

● SATsSATs

Outros algoritmos e técnicasOutros algoritmos e técnicas

4040/41/41

Unlimited Slide WorksUnlimited Slide Works

Obrigado!Obrigado!

www.uspgamedev.orgwww.uspgamedev.org

www.fb.com/uspgamedevwww.fb.com/uspgamedev

contato@uspgamedev.orgcontato@uspgamedev.org

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

top related