Design patterns aplicados ao desenvolvimento de jogos digitais

11
Design patterns aplicados ao desenvolvimento de jogos digitais Marcel Holanda Cavalcante Ribeiro 1680961513044 [email protected] Resumo Os homens morrem.. mas o conhecimento permanece…” e o que isso tem a ver com Padrões de Projetos? Tudo, se você souber que estes padrões reúnem o conhecimento e lições aprendidas dos sábios desenvolvedores que vieram antes de nós. Eles reuniram em modelos para nos ajudar a resolver muitos dos problemas de design em programação que podemos enfrentar. Conheça a história baseada em fatos irreais de uma viagem interestelar incrível com Padrões de projeto. Palavras-chave: Padrão de Projetos; Modelos; força. Abstract "Men die .. but knowledge remains ..." and what does this have to do with Design Patterns? Everything, if you know that these standards meet the knowledge and lessons learned from developers sages who came before us. They created models to help us solve many of the design problems in programming we face. Learn the history based on unreal facts of an amazing interstellar travel with design patterns. Keywords: Design Patterns; Models; force. 1

Transcript of Design patterns aplicados ao desenvolvimento de jogos digitais

Design patterns aplicados ao desenvolvimento de jogos digitais

Marcel Holanda Cavalcante Ribeiro 1680961513044 [email protected]

Resumo

“Os homens morrem.. mas o conhecimento permanece…” e o que isso tem a ver com Padrões de Projetos? Tudo, se você souber que estes padrões reúnem o conhecimento e lições aprendidas dos sábios desenvolvedores que vieram antes de nós. Eles reuniram em modelos para nos ajudar a resolver muitos dos problemas de design em programação que podemos enfrentar. Conheça a história baseada em fatos irreais de uma viagem interestelar incrível com Padrões de projeto.

Palavras-chave: Padrão de Projetos; Modelos; força.

Abstract

"Men die .. but knowledge remains ..." and what does this have to do with Design Patterns? Everything, if you know that these standards meet the knowledge and lessons learned from developers sages who came before us. They created models to help us solve many of the design problems in programming we face. Learn the history based on unreal facts of an amazing interstellar travel with design patterns.

Keywords: Design Patterns; Models; force.

! 1

1 Introdução

Você acorda em um ambiente estranho e um ser com alguns

tentáculos esta carinhosamente cuidando de você.. Ao notar que

você não entende nada do que ela diz, ela pega um peixinho de um

aquário próximo e insere em sua orelha!

- Calma ela Diz, agora nós podemos conversar. Meu nome é

Betra.

- Eu vou ser direta, você foi sequestrado de seu planeta natal por Piratas espaciais.

A Nave deles caiu em nosso planeta e somente você, por estar em uma câmara

criogênica sobreviveu.

-Minha espécie é muito conservadora e não aceita

que nos aproximemos de outras espécies então

temos pouco tempo para corrigir a falha na

programação da Nave Pirata, e manda-lo de volta

em segurança para seu mundo, antes que nossos

robôs o encontrem para “Purificarem” você com um

banho de plasma.

-O computador da Nave Pirata é capaz de assimilar

qualquer tipo de lógica.

- Eu como sou fascinada por Arqueologia gostaria muito de conhecer a lógica da

programação humana.

- Ei Não desmaie não temos tempo!

***

! 2

2 Estudando a Nave

- Agora que você está mais calmo, vamos tentar entender

o que derrubou o sistema da Nave Pirata.

-Aqui na Caixa Preta diz que Ela é composta de uma Nave

mãe e contém várias naves filhas menores, que

desempenham diferentes funções.

-Hum.. parece que a nave caiu justamente após a

implementação de novas tecnologias que eles roubaram..

Vou colocar na tela:

! 3

É Uma

Nave

“Navezinha”

! 4

Nav

e Cl

asse

Mãe

Sist

ema_

de_S

upor

te_A

_Vid

a()

Sist

ema_

de_C

omun

icaç

ão()

Mét

odo_

de_P

ropu

lsão

()

Mét

odo_

de_A

rmam

ento

()

Mét

odo_

de_D

efes

a()

Nav

e de

Car

ga

Mét

odo_

de_P

ropu

lsão

(){

// M

otor

de

Dob

ra

} Mét

odo_

de_A

rmam

ento

(){

//N

enhu

m

} Mét

odo_

de_D

efes

a(){

//

Nen

hum

}

Nav

e de

Ata

que

Mét

odo_

de_P

ropu

lsão

(){

// M

otor

de

Impu

lso

} Mét

odo_

de_A

rmam

ento

(){

//Fa

sers

} M

étod

o_de

_Def

esa(

){

// E

scud

os D

efle

tore

s }

Vári

os o

utro

s Ti

pos

de

Nav

e Fi

lhas

que

Her

dam

as

cara

cter

ísti

cas

da N

ave

mãe

.

Aqui Diz que após Raptarem você para vende-lo a um Taxidermista, fizeram uma

“saidinha de banco” em Marte, e roubaram um novo sistema de defesa, Um Manto de

invisibilidade.

-A polícia Marciana iniciou uma grande perseguição, e como os piratas estavam

abarrotados de carga o capitão ordenou a imediata implantação do novo sistema de

invisibilidade. Também desligou o sistema de comunicação para evitar o rastreamento

de sinais. Rapidamente os técnicos implantaram o sistema de invisibilidade na Nave

Mãe.

! 5

Nave Classe Mãe

Sistema_de_Suporte_A_Vida() Sistema_de_Comunicação() Sistema_de_Invisibilidade()

Método_de_Propulsão() Método_de_Armamento() Método_de_Defesa()

Nave de Carga

Método_de_Propulsão(){ // Motor de Dobra } Método_de_Armamento(){ //Nenhum } Método_de_Defesa(){ // Nenhum }

Nave de Ataque

Método_de_Propulsão(){ // Motor de Impulso } Método_de_Armamento(){ //Fasers } Método_de_Defesa(){ // Escudos Defletores }

Vários outros Tipos de Nave Filhas que Herdam as características da Nave mãe.

- Os piratas comemoraram quando viram que deu certo, pois as Naves marcianas

ficaram voando de um lado para outro como baratas tetrarkianas, tinham perdido a

trilha, a nave mãe estava invisível!

O Capitão ordenou um contra-ataque, mas para surpresa dos piratas, ao chegarem

no hangar das naves filhas, elas haviam sumido! Todas as naves, inclusive as preciosas

naves de carga. Sem pensar começaram a brigar entre si acusando uns aos outros. Alguns

disparos atingiram os controles que desviaram a nave da rota e a colocaram de encontro

com nosso planeta, caindo no mar de amônia.

! 6

- Mas quando recuperei a Nave mãe todas as naves menores estavam em seus

devidos lugares. Eles também não usaram as capsulas de fuga. Você entende o que

aconteceu?

3 Padrão - STRATEGY

Eu fiquei tão impressionada, que chamei minha amiga

Sigma para ouvir sua explicação. Então os piratas

cometeram um erro estratégico. Para evitar o problema é

necessário:

-Identificar os comportamentos que

var iam e separa- los dos que

permanecem iguais.

Por causa das falhas de Design no Sistema, Ao implementar a invisibilidade ligada na

Nave mãe, todas as Naves filhas herdaram a invisibilidade ligada, o que gerou toda

confusão.

Sigma, criamos uma lista para separar os tudo o que se comporta de forma diferente nas

naves, Os que variam são o que cada nave pode ter, os que não variam é que toda nave

tem:

Comportamentos que Variam Comportamentos que não variam

Propulsão ( impulso, dobra, Nada) Suporte a Vida

Armamentos (Phasers, Torpedos Fotônicos, Nada) Comunicação

Defesa (Escudos Defletores e Invisibilidade, Nada)

! 7

-Betra, Pelo que você falou, Cada Nave Filha É-UMA

copia adaptada da Nave Mãe, Por sua Vez, a Nave Mãe,

TEM-UM comportamento que pode ser imitado ou não

p o r c a d a n a v e f i l h a , C a d a C o m p o r t a m e n t o

IMPLEMENTA Objetos diferentes.

Ou seja, se nave mãe tem o comportamento de voar, e as

naves filhas devem herdam o comportamento, mas cada

uma deve voar de um jeito diferente, para cumprir suas funções, implementando motores

diferentes (objetos diferentes).

Quando estamos construindo um nova nave

filha de Ataque, eu diria que:

Da Nave_Classe_Mãe nasce nova nave_de_Ataque;

Na construção desta nave_de_Ataque:

• Aplico propulsão de impulso; (rápido mas pouca autonomia)

• Aplico Armamento de Phasers; (Eficiente contra outras naves filhas)

• Aplico Escudo defletores; (eficientes contra Phasers)

E a Nave está pronta para uma batalha específica.

Mas Se as condições mudarem em Tempo de execução da

batalha, e ele precisasse ejetar, tornando-se uma Capsula de

fuga, escapando somente com o essencial (Suporte a vida e

comunicação)? Poderia deixar os motores, armas e defesas

para trás?

Sim? E vocês já escreveram o novo Programa? Mostre a tela

para mim.

! 8

! 9

Nav

e M

ãe

Com

port

amen

toPr

opul

são

Inst

into

P Co

mpo

rtam

ento

Arm

amen

to In

stin

toA

Com

port

amen

toD

efes

a In

stin

toD

Sist

ema_

de_S

upor

te_A

_Vid

a()

Sist

ema_

de_C

omun

icaç

ão()

Mét

odo_

Aplic

ar_P

ropu

lsão

()

Mét

odo_

Aplic

ar_A

rmam

ento

()

Mét

odo_

Aplic

ar_D

efes

a()

Mét

odo_

Conf

igur

a_Pr

opul

são(

) M

étod

o_Co

nfig

ura_

Arm

amen

to()

M

étod

o_Co

nfig

ura_

Def

esa(

)

Nav

e de

Ca

rga

Nav

e de

Tr

ansp

orte

N

ave

de

Ataq

ue

Caps

ula

de

Fuga

mot

or()

<<in

terf

ace>

> Co

mpo

rtam

ento

Prop

ulsã

o

Mot

or d

e im

puls

oM

otor

de

dobr

aSe

m m

otor

mot

or()

{ ti

po Im

puls

o!

}m

otor

(){

tipo

Dob

ra!

}m

otor

(){

Não

Pre

cisa

! }

arm

a()

<<in

terf

ace>

> Co

mpo

rtam

ento

Arm

amen

to

Torp

edo

Fotô

nico

Phas

erSe

m a

rma

arm

a(){

ti

po b

oom

! }

arm

a(){

ti

po f

iiuuu

! }

arm

a(){

N

ão P

reci

sa!

}

defe

sa()

<<in

terf

ace>

> Co

mpo

rtam

ento

Def

esa

Invi

sibi

lidad

eEs

cudo

Def

leto

rSe

m d

efes

a

defe

sa()

{ ti

po s

umiu

! }

defe

sa()

{ ti

po z

ooom

! }

defe

sa()

{ N

ão P

reci

sa!

}

É U

MA

TEM

UM

IMPL

EMEN

TA

As naves filhas herdam tudo da nave mãe.

Então agora elas herdam os comportamentos, no exemplo acima, propulsão. Esse

comportamento pode se manifestar de formas infinitas, pois dependem apenas dos tipos de

objetos que cabem nesse comportamento.

-Então uma nave de ataque, poderia mudar seu

comportamento para Sem armas, sem ataque, Sem

defesa e se tornaria uma capsula de fuga.

- Também se os piratas já utilizassem o Padrão de

P r o j e t o S T R AT E G Y t e r i a m a p e n a s

Implementado um novo comportamento para a

defesa, permitindo que tanto a nave mãe, quanto

as naves filhas pudessem aplica-las e configura-

las de forma independente.

Esse padrão permite que a Nave mãe pirata tenha novos tipos de motores, armas e defesas

sem afetar seu funcionamento ou o funcionamento das naves menores.. Incrível!

Alias Humano, Eu sou Blunia, vejo muitas aplicações para o Padrão de Projeto

STRATEGY em minha fábrica de robôs “purificadores”.. Pois os meus robôs estão

desatualizados, visto que não conseguiram localizar você.. vou deixar você viver para me

ajudar.. pelo menos por enquanto..

! 10

É Uma

Nave

“Navezinha”

Tem Um

Implementa

ComportamentoPropulsão

“Motores”

4 Conclusão

Se eu Aplicar os princípios do Padrão de Projeto STRATEGY em meus jogos:

• Identificar os Comportamentos

• Separar os que variam dos que não variam

Meus personagens poderiam encontrar novas armas, novos movimentos, novas roupas,

novos mapas, novas aventuras, praticamente qualquer coisa, enquanto o jogo acontece!

Diminuindo o tamanho das atualizações e permitindo jogos online incríveis!

Esse é apenas um dos muitos padrões criados pelo GoF. Imagine o que você poderia fazer 1

se conhecesse todos eles? Mas lembre-se:

“A definição de padrões de projetos nos diz que o Problema consiste em um

objetivo e um conjunto de limitações. os gurus dos padrões tem um termo

para isso: Eles se referem a esses elementos como forças. Por quê? Bem,

com certeza eles tem suas razões, mas, se você ainda se lembra do filme, a

força “molda e controle o Universo”. Da mesma forma, as forças de um

padrão moldam e controlam a solução. Um padrão só é útil quando a

solução equilibra ambos o lados da força (O lado da luz, que são os

objetivos, e o lado negro, que são as limitações).

Embora essa terminologia de “força” pode parecer confusa a princípio nas

discussões sobre padrões, lembre-se de que existem dois lados da força

(objetivos e limitações) e que eles devem ser equilibrados ou equacionados

para criar a solução do padrão. Não se deixe confundir pelo jargão, e que a

força esteja com você! ” (FREEMAN 2009)

Referências

FREEMAN, Eric; FREEMAN, Elisabeth; SIERRA, Kathy; BATES, Bert . Use a cabeça! Padrões de projetos. Rio de Janeiro: Alta Books editora, 2009.

Imagens <http://tauart.deviantart.com> Acesso dia 10 Abril 2015.

GoF - Gang of Four <http://pt.wikipedia.org/wiki/Padrão_de_projeto_de_software>1

! 11