Contexto do Projeto editar

Este projeto faz parte de uma série de trabalhos desenvolvidos na disciplina de Gerência de Configuração de Software ministrada na Universidade de Brasíla, campus Gama. Este jogo faz parte de um conjunto de jogos desenvolvidos na disciplina de Jogos Digitais e que serão empacotados por outros alunos na disciplina de Gerência de Configuração de Software.

O jogo escolhido foi o Babel, o jogo possui um enredo futurista onde a humanidade estava vagando pelo universo a procura de um planeta habitável, quando enfim encontraram um planeta desconhecido. Neste planeta havia uma torre gigantesca e estranha; Neste cenário o jogador deve explorar a torre e o planeta afim de coletar recursos e desvendar mistérios.

Introdução editar

Objetivo editar

Empacotar o projeto Babel - Exploration Game, que foi desenvolvido em C, para conseguir distribuir o jogo de forma que as pessoas consigam instalá-lo e iniciá-lo de forma fácil.

Cronograma editar

Data início / término Marco
24/04/2017 - 24/04/2017 Apresentação/averiguação do plano de gerência de configuração de software para o presente projeto
25/04/2017 - 28/04/2017 Configuração do ambiente para execução do projeto
29/04/2017 - 02/05/2017 Configurar ambiente de integração contínua
03/05/2017 - 06/05/2017 Estudo dos conceitos de empacotamento (RPM, DEB, ... )
07/05/2017 - 12/05/2017 Inicio da implementação de empacotamentos do projeto
29/05/2017 Ponto de Controle 1
30/05/2017 - 03/05/2017 Ajustes após o ponto de controle 1
04/05/2017 - 04/06/2017 Finalização do empacotamento do projeto
05/06/2017 Ponto de Controle 2
06/06/2017 - 15/06/2017 Ajustes após o ponto de controle 2
16/06/2017 – 18/06/2017 Preparar Apresentação final
19/06/2017 Apresentação Final
26/06/2017 Apresentação Final
03/07/2017 Apresentação Final

Escopo editar

Estará dentro do escopo do projeto os tópicos abaixo:

  • Realizar integração contínua
  • Criar tutorial para auxílio na instalação do jogo
  • Empacotamento do jogo Babel

Gerenciamento de Configuração de Software editar

Papéis editar

Membro Tarefa
Nicácio Arruda Planejar e executar o gerenciamento de configuração de software além de documentar como empacotar o Babel.
Leonardo Arthur Planejar e executar o gerenciamento de configuração de software além de documentar como empacotar o Babel.

Ferramentas editar

Ferramenta Descrição
Git Sistema de Versionamento
Github Repositório remoto
travisCi Serviço de integração contínu

Integração Contínua editar

Para fazer a integração contínua do projeto com o travis, inicialmente criou-se o arquivo .travis.yml

sudo: required

language: cpp

compiler:

- g++

script:

- ./install.sh

Sendo que o script install.sh foi criado pela equipe de GCS, o mesmo automatiza o processo de instalação das dependências e compilação da engine e do jogo. Após a contribuição verificou-se que a build estava passando corretamente.

Preparação da jaula editar

Para fazer um empacotamento .deb é necessário criar uma máquina limpa para poder usar apenas todas as dependências necessárias. Para isso vamos criar um jaula que é um sistema operacional limpo, dentro de uma pasta no seu sistema operacional já existente.

O primeiro passo é instalar o pacote dchroot com o comando

sudo apt-get install dchroot

Ao instalar será pedido uma permissão, confirme a permissão apertando S ou Y.

Segundo passo é instalar o pacote debootstrap com o comando

sudo apt-get install debootstrap        
       

O terceiro passo é criar um diretório para ser a jaula onde irá empacotar o projeto ou o que estiver em mente. O diretório pode ser criado onde desejar, no meu caso criou-se uma pasta em "/SECURITY/JAIL"

O quarto passo é trocar a configuração do arquivo localizado em "/etc/schroot/schroot.conf" Entre as linhas que termina com "scratch" e a linha que se inicia com #[sid] , deverá ser adicionado

[yakkety]
description=Ubuntu Yakkety Yak
location=/SECURITY/JAIL
priority=3
users=leonardo
groups=sbuild
root-groups=root

Onde [yakkety] é o nome que se refere ao sistema operacional que será instalado, no casso o Yakkety Yak = ubuntu 14.10. Location é onde estará localizado o sistema operacional que irá instalar. Users é o nome do usuário

O quinto passo é usar o comando debootstrap, que é:

sudo debootstrap --variant=buildd --arch i386 maverick /SECURITY/JAIL http://old-releases.ubuntu.com/ubuntu        

Ao usar o comando, repare que arc é a arquitetura do sistema, pode ser i386 ou AMD64 a depender da arquitetura que terá no mirror colocado logo abaixo. Maverick é o nome do sistema que será instalado.

o site selecionado http://old-releases.ubuntu.com/ubuntu terá inserido no seu final a string "/dist" , a seguir o nome do sistema a ser instalado, "maverick" no caso acima e no site final espera-se que tenha a release do SO desejado, se for encontrado o arquivo no link, o SO será instalado no caminho indicado que é o "SECURITY/JAIL".

Ao terminar essa etapa de instalação a jaula estará pronta para o uso básico e poderá dar o início ao empacotamento.

Preparação para empacotamento Debian do jogo Babel editar

O primeiro passo é clonar o repositório do jogo. Entre no site do projeto(Babel)[1] e copie o endereço do git. Crie uma pasta no computador para clonar o projeto e abra a pasta criada a partir do terminal e digite o comando abaixo.

git clone https://github.com/fgagamedev/Babel

Após clonar é necessário entrar na pasta lib com o comando

cd Babel/game/lib

Descompacte e instale a engine ijengine com o comando

tar -vzxf ijengine-0.0.5.tar.gz
make
sudo make install

Agora é hora de compilar o jogo para conseguir os arquivos binários, pasta importante para a criação do pacote do jogo. Utilize os seguintes comandos

cd ..
make

Ao terminar o passo anterior com sucesso, na pasta game deve ter duas pastas essenciais, uma chamada bin e outra chamada res. A pasta bin contém o executável do jogo babel e a pasta res contém informações do jogo, como imagens, sons, mapas e outros arquivos. Essas duas pastas (bin e res) serão copiadas para outra pasta onde ocorrerá o empacotamento .deb.

Com as pastas copiadas (bin e res), saia das pastas do clone do projeto e crie uma nova pasta onde achar conveniente para iniciar o empacotamento, pode ser dentro de uma máquina virtual, um container uma jaula ou até mesmo no próprio computador. Crie a pasta com o nome que terá o pacote. (Ex:babel-1.0)

mkdir babel-1.0        

Entre na pasta criada (babel-1.0),crie uma pasta chamada DEBIAN e entre nela

cd babel-1.0   
mkdir DEBIAN     
cd DEBIAN

a pasta DEBIAN conterá dois arquivos, o control, responsável por armazenar informações do pacote, como nome do pacote, mantenedor, versão, breve descrição e outras opções. E o arquivo preinst que é opcional e contém o script para instalar as dependências do projeto antes de iniciar a instalação do jogo.

Crie um arquivo de texto chamado control que contenha as seguintes linhas:

Package:babel
Version:1.0
Section: games
Maintainer: Leonardo Arthur <leodegolim@yahoo.com.br> Nicácio Neto <nicacionetobsb@hotmail.com>
Architecture: all
Depends: libsdl2-dev(>=2.0.3),libsdl2-ttf-dev (>= 2.0.12),libsdl2-image-dev (>= 2.0.0),libsdl2-mixer-dev(>= 2.0.0)
Description: Singleplayer game like Sci-fi
The mankind wanders the universe looking 
for a new habitable planet. They found an 
unknown planet with a big and strange tower.
The challenge is explore the tower and the 
planet and expand your resources, but be 
careful with the mysteries of this new planet.

Crie um arquivo de texto chamado preinst para instalar as dependências que foram citadas no arquivo acima (control). O arquivo conterá as seguintes linhas:

#!/bin/bash
me="$SUDO_USER"
clear
sudo apt-get update
echo "Installing Simple DirectMedia Layer (SDL2) (2.0.3)"
sudo apt-get install libsdl2-dev
echo "Installing TrueType Font library (SDL2-ttf) (2.0.12)"
sudo apt-get install libsdl2-ttf-dev
echo "Installing Image loading library (SDL2-image) (2.0.0)"
sudo apt-get install libsdl2-image-dev
echo "Installing Mixer library (SDL-mixer) (2.0.0)"
sudo apt-get install libsdl2-mixer-dev
echo "Turning command global to open Babel"
echo "alias babel='cd /usr/bin/babel-1.0/ &&  bin/babel' " >> /home/$me/.bashrc
echo "Saindo..."
exit;

Voltando a estrutura raiz do empacotamento (pasta babel-1.0). Agora serão criadas novas pastas que representam a estrutura onde será instalado o pacote. No exemplo desta instalação decidiu-se instalar o pacote no caminho /usr/bin/babel-1.0/ e criar um ícone no diretório /usr/share/applications/babel para que possa ser executado pelo usuário com um clique. Abra o terminal na raiz da pasta que será o pacote (babel-1.0) e digite:

mkdir usr

entre na pasta

cd usr

crie a pasta bin, a pasta share e entre na pasta bin

mkdir bin
mkdir share
cd bin

cria a pasta babel-1.0

mkdir babel-1.0

entre na pasta criada

cd babel-1.0

Cole a pasta bin e a pasta res que foi copiada do clone do projeto Babel. Caso deseje também coloque uma imagem com extensão .png que será o ícone da aplicação a ser gerada.

retorne ao caminho "/babel-1.0/usr" com o comando

cd ../../

e entre na pasta share com o comando

cd share

crie duas pastas, a applications e a doc.

mkdir applications
mkdir doc

A pasta applications conterá o arquivo com a extensão .desktop, responsável por conter informações do ícone onde o usuário executará o programa com um clique. A pasta doc conterá a pasta babel que contém o arquivo de copyright. Entre na pasta applications com o comando

cd applications

Crie um arquivo de texto com o nome babel.desktop o qual conterá as seguintes linhas

[Desktop Entry]
Comment=Singleplayer game like Sci-fi.
Terminal=false
Name=babel
Exec=/usr/bin/babel-1.0/bin/babel
Type=Application
Icon=/usr/bin/babel-1.0/babel.png
StartupNotify=true
Encoding=UTF-8
Path=/usr/bin/babel-1.0/
Categories=Game

O cabeçalho do arquivo indica que é um atalho para abrir o jogo. Os principais pontos deste arquivo são:

  • Name: que conterá o nome do jogo
  • Exec: que conterá o caminho do executável do jogo. Note que o caminho /usr/bin/babel-1.0/bin/babel não foi criado ainda, porém quando for criado o executável estará neste caminho.
  • Icon: indica o endereço da foto para ser o ícone. Note que o caminho /usr/bin/babel-1.0/babel.png não foi criado ainda, mas será onde estará a foto para ser o ícone.
  • Path: indica o caminho do jogo instalado. Note que o caminho também não existe ainda.
  • Categories: Indica a categoria do jogo que se encontrará no computador. No caso foi definido Game, então o jogo poderá ser localizado na pasta jogos do linux mint testado.

Ao criar o arquivo babel.desktop, volte ao diretório /babel-1.0/usr/share, com o comando

cd ..

Entre na pasta doc com o comando

cd doc

Crie a pasta babel e entre nela

mkdir babel
cd babel

Crie um arquivo de texto chamado copyright que contenha as seguintes linhas

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: babel
Source: https://github.com/fgagamedev/Babel
Files: *
Copyright: 21 years Álex Silva Mesquita alex.mesquita0608@gmail.com
           21 years Jefferson Nunes de Sousa Xavier jeffersonx.xavier@gmail.com
           21 years Rodrigo Gonçalves rodrigosg2000@gmail.com
           22 years Vinícius Corrêa de Almeida
           18 years Heitor Campos
           22 years Max Von Behr
           27 years Aleph Telles de Andrade Casara
           23 years Washington Rayk
License: GNU GENERAL PUBLIC LICENSE Version 2
Files: debian/*
Copyright: 2017 Nicácio Arruda <nicacionetobsb@gmail.com>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
       
         

Após criar todos esses arquivos a estrutura está completamente montada e pronta para ser empacotada.

Empacotamento Debian do jogo Babel editar

Para iniciar o empacotamento entre no diretório babel-1.0 o qual será o nome do pacote e volte um diretório digitando

cd ..

Digita o comando para gerar o pacote.

sudo dpkg-deb --build babel-1.0/

O pacote .deb será criado no mesmo diretório que está a pasta babel-1.0. Agora é só instalar o pacote, pode ser pelo terminal com o comando, ou simplesmente abrindo o pacote, clicando em instalar e digitando a senha do root. O comando para instalar pelo terminar é o seguinte:

sudo dpkg -i babel-1.0.deb

Agora basta abrir o jogo. É possível abrir clicando no menu e digitando babel, o jogo será encontrado com o seu ícone. Também é possível encontrar o jogo na aba jogo do linux mint. Um executável estará disponível no diretório /usr/share/applications/babel.

Imagens do jogo editar

Galeria no postImages:

https://postimg.org/gallery/2vg6opkiu/

Download do pacote editar

Entre no nosso fork e baixe o pacote:

https://github.com/Nicacioneto/Babel/blob/master/babel_1.0_all.deb

Referências editar

Nosso Fork com as modificações feitas: https://github.com/Nicacioneto/Babel

Projeto Original: https://github.com/fgagamedev/Babel

Tutorial de empacotamento: https://www.youtube.com/watch?v=XTyY3in5r6Q&t=310s