Plano de Gerenciamento de Configuração de Software

editar

O seguinte plano de gerenciamento de configuração de software descreve os principais objetivos e requisitos do projeto, além das ferramentas utilizadas para a implantação da gerência de configuração dentro do jogo Dauphine.

O que é?

editar

Dauphine é um jogo de plataforma com temática medieval e fantasia. Alguns elementos stealth também estão presentes dentro do jogo. Pode ser jogado por apenas um jogador, usando o teclado para controlar a personagem durantes os estágios do jogo.

Repositório

editar

O repositório do jogo pode ser encontrado no seguinte link:

https://github.com/fgagamedev/Dauphine

Objetivo

editar

O objetivo deste trabalho e disponibilizar o jogo para plataformas linux e windows, fazendo também a automatização dos ambientes de desenvolvimento para futuras contribuições no código.

Atividades

editar
  • Utilização de Cmake para geração de builds do projeto;
  • Automatização da instalação de dependências do projeto via receitas chef;
  • Configuração de ambiente e empacotamento Debian (.deb);
  • Configuração de ambiente e empacotamento RPM (.rpm);
  • Atualização do README;
  • Manual para jogadores;

Gerência de Configuração

editar

 Responsabilidades

editar
Gerente de Configuração de Software Planejar e gerenciar atividades relacionada à gerência de configuração de software Daniel Henrique

Ferramentas

Ferramenta Descrição
Vagrant Vagrant é um software que faz o interfaceamento com um software de gerência de máquinas virtuais.
VirtualBox VirtualBox é um software que faz o gerenciamento de máquinas virtuais e é utilizado em conjunto com o Vagrant.
Github Plataforma de sistema de controle de versão
Debian Sistema operacional que será utilizado na máquina virtual de empacotamento.
Cmake Software livre e multi-plataforma para gerenciamento e criação de builds.
Chef Software para configuração de ambientes automatizados.
Centos Sistema operacional para empacotamento rpm.

Cronograma

editar
Atividade Data
Elaboração do Plano de Gerência de Configuração de Software 24/04/2017
Trocar geração de build para o CMake 02/05/2017
Automatizar configuração de dependências do jogo (ambiente dev) 09/05/2017
Configurar ambiente para realizar empacotamento .deb 17/05/2017
Empacotamento Debian 25/05/2017
Configurar ambiente para empacotamento rpm 25/05/2017
Empacotamento .rpm 27/05/2017
Atualização do README e manual para jogadores 06/06/2017
Revisão Cmake e build para Windows 15/06/2017

Execução das atividades

editar

Repositório

editar

Todas as alterações realizadas durante este trabalho podem ser vistas no repositório: https://github.com/danielhmarinho/Dauphine

Ambiente de desenvolvimento

editar

O ambiente de desenvolvimento foi configurado a partir de uma máquina virtual. O provedor desta máquina virtual é o virtualbox. Com o apoio de um arquivo vagrant para controlar a máquina e uma receita chef para a pré-configuração da mesma, foi desenvolvido um ambiente para implementação de código fonte.

Segue abaixo os arquivos de configuração e alguma observações em relação aos mesmos:

Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "debian/jessie64"

  config.vm.provision "chef_solo" do |chef|
    chef.add_recipe "dauphine"
  end

  config.vm.provider "virtualbox" do |v|
    v.gui = true
  end
end

Este arquivo define que a criação da máquina virtual será feita a partir de uma distribuição Debian. Também adiciona a receita criada e define que o ambiente gráfico deve ser ativado, já que para desenvolvimento de um jogo precisamos que a interface gráfica esteja habilitada.

Receita Chef

editar
#install packages to set environment and GUI.
execute 'apt-get update'
package 'vim'
package 'wget'
package 'git'
package 'libsdl2-image-dev'
package 'libsdl2-dev'
package 'libsdl2-mixer-dev'
package 'libsdl2-ttf-dev'
package 'libsdl2-gfx-dev'
package 'xfce4'
package 'libreadline-dev'
package 'g++'

#configure lua
execute 'wget lua' do
  command 'wget https://www.lua.org/ftp/lua-5.2.4.tar.gz -P /home/vagrant'
  not_if 'ls /home/vagrant/lua-5.2.4.tar.gz'
end

execute 'lua extract' do
  command 'tar -zxvf /home/vagrant/lua-5.2.4.tar.gz -C /home/vagrant'
  not_if 'ls /home/vagrant/lua-5.2.4'
end

execute 'change permission' do
  command 'chown -R vagrant:vagrant /home/vagrant/lua-5.2.4'
end

execute 'lua build' do
  command 'make linux test'
  cwd '/home/vagrant/lua-5.2.4/'
end

execute 'lua install' do
  command 'make linux install'
  cwd '/home/vagrant/lua-5.2.4/'
end

#configure dauphine
execute 'make dauphine' do
  command 'make'
  cwd '/vagrant/'
end

Esta receita define os pacotes necessário para a instalação, configura o Lua e ainda compila os arquivos necessários para gerar o binário do jogo. OBS: Após a execução do script o ambiente gráfico precisa ser habilitado. Basta rodar o seguinte comando na máquina virtual:

startxfce4

OBS2: HABILITE O ÁUDIO DENTRO DA MÁQUINA VIRTUAL!

Pacote Debian

editar

O pacote debian foi criado para a instalação das dependências do projeto e criação do binário do jogo de forma automatizada para fácil disponibilização aos usuários.

Abaixo alguns arquivo importantes sobre o empacotamento. A instalação do pacote é feita em /usr/games/dauphine. Para executar o jogo basta executar o binário gerado dentro do diretório. O pacote debian está disponível no seguinte link: https://www.dropbox.com/s/p7wxi07cvzsreaj/dauphine_1.0.0-1_amd64.deb?dl=0

Arquivo control:

Source: dauphine
Section: games
Priority: optional
Maintainer: Daniel Henrique Marinho Damasceno <danielhmarinho@gmail.com>
Build-Depends: debhelper (>= 9),wget, libsdl2-image-dev, libsdl2-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-gfx-dev, libreadline-dev, g++
Standards-Version: 3.9.8
Homepage: https://github.com/Alke-Games/Dauphine
#Vcs-Git: https://anonscm.debian.org/collab-maint/dauphine.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/dauphine.git

Package: dauphine
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: A platforming/stealth game in a medieval fantasy setting, developed with SDL3.

Arquivo de rules:

#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1


# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

build:
	wget https://www.lua.org/ftp/lua-5.2.4.tar.gz -P /tmp
	tar -zxvf /tmp/lua-5.2.4.tar.gz -C /usr/local/
	cd /usr/local/lua-5.2.4 && make linux install

%:
	dh $@


# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
#override_dh_auto_configure:
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)