Design patterns aplicados ao desenvolvimento de jogos digitais
-
Upload
marcel-holanda-cavalcante-ribeiro -
Category
Entertainment & Humor
-
view
33 -
download
0
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