• Nenhum resultado encontrado

3. Experiências Iniciais

3.2 Experiência com Máquinas de Estado

Uma das experiências anteriores de pesquisa desta tese envolveu a utilização de componentes UML para representação de jogos. A ideia era utilizar diferentes diagramas UML para criar representação de parte de um jogo e, então, aplicar alguma ferramenta de desenvolvimento orientada a modelo para gerar código de jogo.

Máquinas de Estado Finito (MEF) são modelos computacionais usados para representar uma quantidade limitada de estados de um sistema. As transições são responsáveis por alterar o estado atual da máquina e são disparadas por condições e eventos. A Figura 23 ilustra um exemplo de funcionamento de MEF. Quando se está no estado S1, o evento “a” leva a máquina ao estado S2. Quando se está no estado S2, o evento “a” não causa nenhuma alteração, e o evento “b” leva a máquina de volta ao estado S1.

Figura 23: Exemplo de Máquina de Estado Finito simples

Não existe uma linguagem padrão para representar MEF, o que permitiu o surgimento de muitas ferramentas, como Active HDL, Cinderella, Rational Rose e também formatos distintos, como VHDL, SDL, UML, XML.

41

3.2.1 Máquinas de Estado e jogos

Modelos baseados em regras podem descrever conjuntos de condições que, uma vez satisfeitas, engatilham ações. De acordo com Fairclough et al. (FAIRCLOUGH et al., 2001), Máquinas de Estado Finito se comportam como modelos baseados em regra.

Na literatura, é possível encontrar a aplicação de MEF em jogos para representar o comportamento de personagens não jogáveis (NPC, do original non-player character) (ROLLINGS & MORRIS, 2004). A Figura 24 apresenta o equivalente a um diagrama de MEF para representar o comportamento dos fantasmas inimigos do Pac-Man. As imagens de fantasmas foram adicionadas com fim puramente ilustrativo.

Figura 24: MEF para fantasma de Pac-Man. Adaptado de (ROLLINGS & MORRIS, 2004)

Nesse diagrama, a MEF é utilizada unicamente para representar os possíveis estados do fantasma.

Nelson e Mateas (NELSON & MATEAS, 2007) propuseram uma abordagem para formalizar mecânicas de jogo e gerar outros mini jogos. Em um nível inferior no processo de criação, Ashlock (ASHLOCK, 2010) apresenta um sistema de geração automática de

puzzles, com diferentes níveis de dificuldade, para serem utilizados em conjunto com design de jogos.

Muitas ferramentas de criação no mercado utilizam modelos abstratos semelhantes a MEF, no sentido que possuem objetos que respondem a eventos de chamadas de funções, ou alguma abstração similar. No GameMaker, por exemplo, todo objeto segue um conjunto global de eventos pré-definidos que podem invocar uma função definida pelo programador. No Construct 2, há um conjunto de eventos, subeventos e comportamentos disponíveis para serem aplicados sobre os objetos. Os eventos são baseados em condições e podem disparar ações.

42

3.2.2 Geração de código a partir de MEF

Foi desenvolvido um mini-sistema para gerar código de jogo a partir de modelo de MEF. Os modelos deveriam ser construídos com alguma ferramenta de modelagem de máquina de estado capaz de exportar para o formato XMI, um formato padrão para troca de informações baseado em XML.

A Figura 25 apresenta uma visão do funcionamento do sistema.

Figura 25: Sistema para geração de código a partir de MEF

O processo de desenvolvimento proposto compreendia três passos sequenciais: • Modelo de MEF em XMI descrevendo estados e ações do objeto de jogo; • Interpretação do modelo para obter as propriedades do objeto;

• Geração de código de jogo correspondente ao objeto modelado.

Foi implementado somente a geração de código correspondente às possíveis ações do personagem protagonista do jogo. Para isso, o diagrama MEF deveria ser construída com os estados representado as ações, e as transições como eventos disparados pelo jogador. Um conjunto de possibilidades de estados e transições foi previamente desenvolvido para que o gerador de código pudesse ler e capturar o elemento

43

correspondente. Os possíveis estados são: STAND; MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT. E as possíveis transições são: HIT, PRESS, RELEASE, EXTERNAL.

A Figura 26 apresenta um exemplo de diagrama MEF para as ações do jogador em Snake, um popular jogo dos celulares dos anos 2000. Nesse exemplo, a cobra (avatar do jogador) está sempre se movendo em direção a uma das quatro direções possíveis, não podendo alterar o movimento para sua direção oposta. Sempre que o há uma colisão com um alimento a cobra aumenta de tamanho.

Figura 26: MEF para Snake, o popular “jogo da cobrinha”

O sistema de geração desenvolvido utiliza um esqueleto de código fixo, em Pygame, e incorpora o código gerado das possíveis ações do jogador, de acordo com o MEF que recebe de entrada.

Um outro exemplo construído usa o espaço como cenário e uma nave como avatar do jogador. O diagrama MEF construído para esse exemplo possui quatro estados para as direções em que a nave pode se mover e um para ficar parada. As transições alteram o estado ou fazem a nave atirar, nesse último caso o estado não é alterado. A Figura 27 apresenta o diagrama MEF e uma imagem com o cenário e nave do jogo, sendo possível movimentar a nave pelo cenário de acordo com os estados e transições do contemplados no diagrama.

44

Figura 27: MEF para jogo de nave e imagem do jogo

O trabalho envolvendo máquinas de estado foi abandonado devido a várias limitações enfrentadas. Uma delas era a possibilidade de geração de código apenas para estados e transições pré-concebidas. Isso envolveria a criação de muitos estados e transições e, ainda assim, limitaria a criatividade do designer de jogo, deixando-o com opções restritas.

Outro problema era a dificuldade em criar ações mais complexas, por esse motivo somente ações básicas de movimentação foram desenvolvidas. Atirar, por exemplo, gerava um esqueleto de código com necessidade de posterior implementação manual.

As ações dos personagens constituíam uma pequena parte de um conjunto maior de representações pretendidas. Se nessa parte já foram encontradas tais limitações e dificuldades certamente haveriam novos problemas. Por conseguinte, o trabalho com máquina de estado se mostrou inviável para atender os propósitos desta tese.

45

Documentos relacionados