Padrões de Projeto em Games – Builder

Padroes-de-Projeto-em-Games-Builder

Olá gurizada,

Estou de volta trazendo mais um padrão de projeto aplicado a jogos. Desta vez, escolhi um padrão de uma categoria que ainda não tínhamos falado aqui no AoJ. É o padrão de criação Builder. Ao contrário das categorias comportamentais e estruturais, os padrões de criação são bem abrangentes, e por esse motivo, úteis em praticamente todo o tipo de software. Vamos ver se a técnica do Sr Miyagi nos mostra uma aplicação interessante para os games. Vamos lá.

Para iniciar o nosso post, vamos primeiro conhecer a definição da categoria de padrões de criação. Ela diz que tais padrões abstraem o processo de instanciação de objetos. Eles ajudam a tornar um sistema independente de como seus objetos são criados, compostos e representados.

Já a definição formal do padrão Builder diz que ele separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações.

Vamos ver como se parece o diagrama de classes do padrão Builder.

Sendo que:

  • Builder
    • especifica uma interface abstrata para criação de partes de um objeto produto
  • ConcreteBuilder
    • constrói e monta parte do produto pela implementação da interface de Builder;
    • define e mantém a representação que cria;
    • fornece uma interface para recuperação do produto.
  • Director
    • constrói um objeto utilizando o objeto Builder que recebeu.
  • Product
    • representa o objeto complexo em construção.

Normalmente, as definições bibliográficas são um pouco formais, dificultando um pouco o entendimento. Mas, estou aqui para facilitar, não é verdade? Então vamos mostrar um exemplo em homenagem as saudosas Tartarugas Ninjas (Teenage Mutant Ninja Turtles), protagonistas de grandes games Beat ‘em ups nos anos 90. Observe o exemplo do diagrama de sequência abaixo.

Analisando esse exemplo, é possível perceber que o pizzaiolo poderá facilmente montar outros tipos de Pizza – sem borda por exemplo – apenas criando outro método. Porém, o ponto mais interessante seria a troca do objeto Builder. Podemos criar outros tipos, como: FruitPizzaBuilder, DietPizzaBuilder, ou até para a favorita do Michelangelo, a PeanutButterExtraPicklesPizzaBuilder (Pizza de pasta de amendoim com uma porção extra de picles) :)

Vamos agora ver como a técnica do Sr. Miyagi nos mostra a aplicação desse padrão nos games.

Um padrão de projeto desta categoria possui várias aplicações em games. Acredito que a mais comum seja para a criação de inimigos de fase. Em cada estágio de um game do Mario, por exemplo, o programador pode simplesmente trocar a chamada do Director para criar novas variações de tartarugas (verdes, vermelhas, voadoras), ou trocar o objeto Builder, criando inimigos totalmente novos.

E ai? O que você achou desse padrão e suas aplicações? Conseguiria imaginar ele sendo útil em outros módulos de seu jogo? Envie o seu comentário.

Grande abraço e não se esqueça que nesta quinta-feira tem PodAbrir ;)

Autor: Everton Vieira Ver todos os posts de
Sou Bacharel em Análise de Sistemas pela Universidade Católica de Pelotas (UCPel) no ano de 1999. Minha paixão por games é de longa data. Porém, em 2003 tornei essa paixão uma profissão. Durante oito anos atuei como Game Designer e Arquiteto de Software em mais de 30 projetos de Serious Games (simuladores) para grandes empresas do país. Atualmente sou sócio-fundador da Izyplay Game Studio, onde exerço o cargo de Diretor de Criação. Além do envolvimento corporativo, também participei da organização da Pós Graduação em Arquitetura e Desenvolvimento de Jogos Digitais na FATEC SENAC Pelotas. Minha área de interesse e especialização é Game Design e Inteligência Artificial.

4 Comentários em "Padrões de Projeto em Games – Builder"

  1. Someone 17/11/2011 at 09:59 - Reply

    Muito legal o post. Quando colocará o restante dos padrões?

    • everton.vieira 17/11/2011 at 13:46 - Reply

      Olá “alguém” :)

      Nas próximas semanas estaremos retornando os posts deste arco. O mesmo ocorrerá com os posts relacionados a matemática nos games.

  2. Someone 22/01/2016 at 10:21 - Reply

    Olá novamenete :P
    Não haverá mais posts sobre padrões de projeto?
    Acho uma iniciativa muito boa.

    • Everton Vieira 28/01/2016 at 20:21 - Reply

      Olá,

      Quem sabe!? Você teria um pedido específico a fazer? Algum padrão ou game que gostaria de saber como funciona ou foi feito?

Deixar um Comentário