Grupo: Victor Arnaud e Vitor Nere

Introdução editar

Finalidade editar

Este documento apresenta um plano de Gerência de Configuração de software para o jogo Deadly-Wish. Através deste, define-se diretrizes e atividades para o controle de versões e configuração do sistema em suporte ao desenvolvimento/deploy do projeto.

Link para o repositório upstream: https://github.com/fgagamedev/Deadly-Wish

Escopo editar

O jogo Deadly-Wish é um jogo de batalha em arena na qual precisa-se de 4 jogadores com joysticks para jogar em que cada inimigo tem que abater a torre do outro o ultimo inimigo que sobrar é o vencedor

Como objetivos deste trabalho, definiu-se a contribuição nos seguintes aspectos:

  • Criar um docker para rodar o código de forma automatizada e um cmake para roda-lo multiplataforma
  • Empacotamento deb;
  • Inserir scripts e um README explicando o projeto, instalação e Tutorial.

Visão Geral editar

Nas seções seguintes deste documento, define-se um cronograma para as atividades de gerenciamento de configuração, bem como todo os resultados obtidos durante este processo. Inclui-se, portanto, a documentação da configuração e execução das tarefas executadas para alcançar os objetivos propostos.

Link para o repositorio do projeto de GCS: https://github.com/VictorArnaud/Deadly-Wish

Cronograma editar

Data - Início / Previsão de Término Atividade
20/04 – 24/04 Criação do plano de gerênciamento de configuração
25/04 – 15/05 - Instalação e criação do README

- Implementação da GCS do ambiente de desenvolvimento/deploy (DOCKER, cmake)

15/05 – 15/06 - Enpacotamento deb

- Criar relatorio final

19/06/2016 Apresentação final do Projeto

Ferramentas editar

Ferramenta Descrição
Github Repositorio de aplicações que utiliza do sistema de versionamento GIT
cmake Sistema multiplataforma de geração de instalação automatizada.
Debhelper Debhelper é usado para ajudar a construir um pacote debian
build-essential Pacote que contem informações de listas informativas de pacotes que são considerados essenciais para a construção de pacotes Debian.
devscripts O pacote devscripts fornece uma colecção de scripts que podem ser usados para desenvolvedores Debian e outros que desejam construir pacotes Debian.
Docker Ferramenta de virtualização de ambiente

Docker e Cmake editar

Problemas encontrados

Docker:

- Em relação ao DOCKER conseguimos implantar o jogo com sucesso dentro do docker, ele já esta instalando todas as dependências e gerando o executavel com um único comando (docker-compose up), porém como o docker não foi criado para trabalhar com interface gráfica ou GUI tivemos dificuldade para rodar o jogo ao executar o comando.

CMake:

- Em relação ao CMAKE conseguimos configurar para gerar o make file do jogo, em primeiro momento encontramos uma dificuldade em relação a biblioteca externa utilizada no jogo. Até que configuramos o CMAKE da biblioteca e do kernel do jogo 'linkando' as duas entre si, assim o Makefile gerado, compilou o jogo e gerou as bibliotecas necessárias.

O que tentamos fazer

- Rodar o jogo ao executar um único comando do docker e criar um modo de compilação do jogo automatizado em multiplataforma com o cmake

- Um dos objetivos também era criar scripts de instalação para o jogo e um README com o processo de instalação, isso foi realizado com sucesso.

- CMAKE

  1. Criamos um arquivo CMakeLists.txt no diretório raiz do projeto e configuramos de acordo com suas pastas de source e headers.
  2. Inicialmente o Makefile gerado pelo CMake não instalava as bibliotecas externas, somente instalando o jogo.
  3. Após algumas pesquisas e tentativas, conseguimos configurar o CMake das bibliotecas externas, assim o jogo tornou-se mais independente da plataforma, somente precisando da biblioteca SDK instalada.
  4. Modificamos o README com o processo de instalação
    1. Na pasta raiz do projeto: mkdir build && cd build
    2. Na pasta build: cmake .. && make

Resultado final

- Os scripts de instalação e o README estão pronto (100%) já o DOCKER não tivemos sucesso em rodar o jogo através dele por problemas citados acima, porém o docker ta criando o executavel do jogo de modo automatico e com um único comando logo consideramos que 80% do objetivo foi concluido, já o CMAKE foi realizado com sucesso.

Empacotamento editar

Problemas encontrados

Tivemos vários problemas em relação ao empacotamento, principalmente por causa do cmake, o cmake estava gerando um binario local e o makefile estava sendo criado dentro de uma pasta build, porém consertamos isso colocamos o makefile na pasta raiz e o binario do jogo foi criado na bin do linux para ser executado em qualquer parte do S.O, isso iria ajudar bastante no empacotamento do software já que o empacotamento roda o make e o make install do Makefile da pasta raiz e o binario tem ser gerado em qualquer parte do S.O.

Porém por algum motivo o primeiro pacote gerado não gerou o binario dentro do pacote .deb, após várias tentativas percebemos o padrão dos arquivos dentro do pacote .deb. A partir do binário gerado pelo Makefile, utilizamos para realizar o empacotamento e após testar a instalação, foi possível executar o jogo pelo terminal de qualquer lugar porém o link com as bibliotecas externas e os assets não tinha funcionado, foi quando mexemos no código fonte do jogo para pegar a biblioteca de "usr/lib/" e os assets de "usr/share/deadly_wish/".

Com isso o empacotamento foi realizado com sucesso e se encontra na release do produto.

O que tentamos fazer

Os seguintes passos foram realizados para o empacotamento:

1. No inicio pensamos em criar uma jaula para o empacotamento, mas decidimos que não era necessário pois não iriamos jogar o pacote no debian, somente gerar o pacote.

2. Com isso a gente pegou o código fonte e gerou um tar.gz com o seguinte formato: deadlywish-1.0.tar.gz para começar o empacotamento através da release do produto.

3. Verificamos a licença dos diversos arquivos para ter certeza que não há licença que não seja de Software livre com o comando: egrep -sriA25 '(public dom|copyright)' *

4. Logo após fizemos o processo de debianização com o dh_make: dh_make -f ../deadlywish-1.0.tar.gz -c gpl3

5. Removemos arquivos que não iriamos usar da pasta debian, deixando somente o changelog que é o log de mudanças do empacotamento, o compat que é a compatibilidade do debian help que estamos utilizando, o control para inserir informações do codigo fonte e do seu binario, o copyright para inserir informações da licença do software, e o cerebro do empacotamento que é o rules, além do watch para observar e notificar novas atualizações do empacotamento.

6. Criamos o diretório onde dele seria gerado o .deb, nesse diretório foi inserido a pasta "DEBIAN" onde fica os arquivos de configuração do empacotamento, a pasta "usr/bin/" com o binário do jogo gerado pelo Makefile, a pasta "usr/lib" com a biblioteca da engine e do kernel, e a pasta "usr/share/deadly_wish" com os assets do jogo.

7. Com o diretório devidamente configurado, utilizamos o comando para gerar o pacote: dpkg-deb -b "diretório/" deadlywish_1.0_amd64.deb

Resultado final

Pacote gerado com sucesso, disponivel na release do produto no link:

https://github.com/VictorArnaud/Deadly-Wish/releases/download/deadlywish-1.0/deadlywish_1.0_amd64.deb

Imagens do Jogo editar

Menu editar

 
Menu do jogo Deadly Wish

Tela de Seleção de Personagem editar

 
Tela de Seleção dos Personagens do jogo Deadly Wish

Personagens editar

 
Personagem 4 do jogo Deadly Wish
 
Personagem 1 do jogo Deadly Wish
 
Personagem 2 do jogo Deadly Wish
 
Personagem 3 do jogo Deadly Wish

Arena editar

 
Arena do jogo Deadly Wish


Créditos editar

 
Creditos do jogo Deadly Wish

Vídeos de Apresentação editar

Deadly Wish Apresentação