Babel
Contexto do Projeto
editarEste 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
editarObjetivo
editarEmpacotar 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
editarData 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
editarEstará 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
editarPapéis
editarMembro | 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
editarFerramenta | Descrição |
---|---|
Git | Sistema de Versionamento |
Github | Repositório remoto |
travisCi | Serviço de integração contínu |
Integração Contínua
editarPara 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
editarPara 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
editarO 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
editarPara 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
editarGaleria no postImages:
Download do pacote
editarEntre no nosso fork e baixe o pacote:
https://github.com/Nicacioneto/Babel/blob/master/babel_1.0_all.deb
Referências
editarNosso 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