Skip to content

Descrição do Framework

Pablo Diego Silva da Silva edited this page Jun 18, 2018 · 28 revisions
Autor Data
Josué Nascimento 20/05
Álax Alves 20/05
Roger Lenke 20/05
Fabíola Fleury 25/05
Roger Lenke 25/05
Álax Alves 05/06
Matheus Joranhezon 08/06
Álax Alves 09/06
Hugo Carvalho 10/06
Matheus Joranhezon 13/06
Pablo Diego 17/06

1. Simian Framework

O Simian é um framework pensado para fornecer uma game engine para jogos 2D utilizando a biblioteca pygame, criada para aplicações multimídia.

Este framework é construído utilizando a linguagem de programação Python. A distribuição, por sua vez, é dada por meio de um Python Index Package (PIP).

2. Características do Framework

2.1 Tipo do Framework

Frameworks podem ser agrupados em relação a como sua reutilização é feita. Existem três categorias principais: caixa branca, caixa preta e caixa cinza.

  • Caixa Branca: Sua reutilização é proveniente de pontos flexíveis, fazendo proveito do uso de herança e implementação de interfaces. Esse tipo de framework também pode ser entendido como um framework orientado à hot spots. Esse frameworks são instanciados através do uso de herança, usando o padrão de projeto Template Method (Gamma, 1995), métodos abstratos que são implementados na subclasse, ou métodos com um comportamento pré-definido, mas que que podem ser alterados na subclasse. Uma particularidade desse tipo de framework é que eles normalmente são distribuídos com o código fonte, já que o desenvolvedor que o utiliza precisa saber como funcionam as superclasses para extendê-las.

  • Caixa Preta: Tem a reutilização proveniente através de composições ao invés de heranças, de maneira que uma funcionalidade é implementada decompondo cada pedaço em diversos objetos e interfaces. Pelo fato de uma funcionalidade ser decomposta em várias classes, a produção de um framework caixa preta é mais complexa, e sua extensibilidade é limitada. Apesar disso, os frameworks caixa preta permitem uma facilidade maior ao desenvolvedor que os utiliza, pois é necessário pouco conhecimento de como o framework foi construído para utilizá-lo. A implementação de frameworks caixa preta são feitos geralmente em cima do padrão strategy. Esse tipo de framework é orientado à frozen spots.

  • Caixa cinza: Os frameworks caixa cinza são frameworks que combinam a decomposição e a facilidade de uso dos frameworks caixa preta com a extensibilidade dos frameworks caixa branca. Ou seja, fazem uso de hot e frozen spots.

O Simian será desenvolvido como um framework caixa cinza. Essa decisão foi tomada pela equipe pelo fato de que os componentes de um jogo, sejam eles: texto, cenas, tabuleiro, ações de jogadores ou sprites são abstrações fundamentais que devem ser flexíveis o suficiente para a adequação ao contexto de cada desenvolvedor, de maneira que por vezes será preciso redefinir a lógica por trás da utilização de cada um desses itens. Tendo isso em vista, é importante frisar a necessidade de uma boa documentação para utilização da game engine, garantindo que exista uma boa explicação para o uso e modificação dos itens apresentados anteriormente.

Entretanto, componentes como músicas, efeitos sonoros e animações também são partes fundamentais de um jogo. Porém, o desenvolvedor não precisa redefinir a lógica por trás do funcionamento destes, tendo em vista que este é padrão. Sendo assim, uma solução caixa branca não seria adequada para este contexto, necessitando a utilização de caixa preta. Ao se analisar que são necessárias soluções de tipos caixa branca e preta, o time de desenvolvimento do framework resolveu por caracterizar e desenvolver o Simian como um framework caixa cinza.

2.2 Tecnologia de apoio utilizada para a implementação do framework

Para a implementação do tatics framework será utilizada a seguinte tecnologia:

[pygame][pygame] : Uma biblioteca para python escrita sendo como base a biblioteca, em linguagem C, Simple DirectMedia Layer (SDL) para construção de aplicações multimídia como arte digital, música e jogos. Pygame é uma game engine, ou seja, é um software ou um conjunto de bibliotecas usado na simplificação do desenvolvimento de jogos, que irá abstrair todas as funções visuais e de processamento como base do código, e a essência do jogo como a estratégia, o design e a ideia principal que serão realmente pensadas e estudadas para o jogo.

2.3 Funcionalidades

Configuração da engine

O simian deve permitir que o desenvolvedor configura alguns aspectos de seu jogo por meio de objetos ou um arquivo de configuração. Essas configurações podem ser relacionadas ao framerate do jogo, tamanho da tela, entre outros aspectos.

Game Objects

Um game object é a estrutura fundamental utilizada no desenvolvimento de um jogo. Qualquer coisa que deve ser atualizada e/ou desenhada em um jogo é um gameobject.

O simian deve permitir ao desenvolvedor criar seus próprios game objects, sobrescrevendo métodos básicos que serão executados a cada frame pela engine. Além disso, deve ser possível adicionar múltiplos game objects em cenas.

Animações

A engine deve permitir o gerenciamento das animações do jogo por meio de sprites. Uma sprite é um conjunto de imagens que é integrada para criar movimento. Esse gerenciamento deve acontecer possibilitando ao desenvolvedor definir a posição da animação, velocidade, se a animação se repete ou não, entre outros aspectos.

Cenas

A estrutura de cenas em uma engine é a estrutura responsável por gerenciar as telas do jogo, mudanças entre fases, carregamento de objetos específicos a cada tela, entre outros. O simian deve permitir ao desenvolvedor a criar novas cenas, adicionar game objects em cada cena, mudar entre uma cena e outra, etc.

Músicas

O simian deve permitir com que o desenvolvedor insira músicas, tanto em suas cenas quanto em seus game objects. Deve ser possível pausar, resumir e iniciar uma música, definir até onde esta irá ser tocada, se irá se repetir, etc.

Efeitos sonoros

Deve ser possível ao desenvolvedor efeitos sonoros em seus game objects, podendo iniciá-los a qualquer momento.

Física

O simian deve oferecer uma estrutura que facilite o cálculo da física dos jogos, realizando este cálculo separadamente a atualização dos game objects a cada frame.

Periféricos

O simian deve disponibilizar classes e métodos para que o usuário possa obter dados dos periféricos conectados ao ambiente, por exemplo: alguma tecla ou botão do mouse é pressionada. Desse modo é o usuário é capaz de controlar todo o jogo utilizando estes recursos.

Referências

Clone this wiki locally