Deadly-Wish
Grupo: Victor Arnaud e Vitor Nere
Introdução
[editar | editar código-fonte]Finalidade
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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
- Criamos um arquivo CMakeLists.txt no diretório raiz do projeto e configuramos de acordo com suas pastas de source e headers.
- Inicialmente o Makefile gerado pelo CMake não instalava as bibliotecas externas, somente instalando o jogo.
- 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.
- Modificamos o README com o processo de instalação
- Na pasta raiz do projeto: mkdir build && cd build
- 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 | editar código-fonte]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:
Imagens do Jogo
[editar | editar código-fonte]Menu
[editar | editar código-fonte]Tela de Seleção de Personagem
[editar | editar código-fonte]Personagens
[editar | editar código-fonte]Arena
[editar | editar código-fonte]