CrossRoads
Introdução
[editar | editar código-fonte]Finalidade
[editar | editar código-fonte]Este documento tem como objetivo mostrar a aplicação de alguns dos pontos abordados da Gerência de Configuração de Software em um ambiente de desenvolvimento real, com o objetivo de ampliar a maturidade do projeto CrossRoads da disciplina de Introdução aos Jogos Eletrônicos e controlar as mudanças de uma maneira mais organizada e automatizada.
Contexto do Projeto
[editar | editar código-fonte]Descrição
[editar | editar código-fonte]O jogo é um 2D hack'n slash plataforma, onde o jogador controla um herói em sua longa aventura.
Visão Geral
[editar | editar código-fonte]- Obejtivo é controlar o personagem por diversas fases.
- Enfrentando seus inimigos em busca do Cálice Mágico.
- Quando surgem desafios, é necessaria a ajuda, então, controlamos o segundo personagem, que possui diferentes habilidades
Plano de Gerência de Software
[editar | editar código-fonte]História
[editar | editar código-fonte]Gryth, um grande guerreiro conhecido por todos, vive sua vida em busca de grandes aventuras.. No meio do inverno, ele recebe uma chamada de aventura de Hiron, o grande padre, para uma missão. Nas profundezas da igreja de Pygon, proibida para as pessoas, reside um cálice cujos poderes são gigantescos, mas perigosos. A luta de Gryth é equilibrar seu corpo e mente, e controlar seu poder para derrotar os inimigos no caminho.
Objetivo
[editar | editar código-fonte]Empacotar e disponibilizar o jogo CrossRoads, sem dependências para execução.
Realizar a integração contínua, garantindo a integridade de build.
Utilizar um programa adequado para a execução da rotina de compilação.
Cronograma
[editar | editar código-fonte]Data início / término | Marco |
---|---|
24/04/2017 - 24/04/2017 | Planejamento e Controle - GCS |
25/04/2017 - 28/04/2017 | Configurações de Integração contínua |
29/04/2017 - 02/05/2017 | Definição e escrita da Wiki do projeto |
03/05/2017 - 06/05/2017 | Estudo de conceitos - Empacotamento |
08/05/2017 - 12/05/2017 | Implementação do Empacotamento |
29/05/2017 | Ponto de Controle 1 |
30/05/2017 - 03/05/2017 | Revisão pós o PC1 |
04/05/2017 - 04/06/2017 | Conclusão empacotamento do projeto |
05/06/2017 | Ponto de Controle 2 |
06/06/2017 - 15/06/2017 | Revisão pós PC2 |
16/06/2017 – 18/06/2017 | Desenvolvimento da apresentação final |
19/06/2017 | Apresentação Final |
Escopo
[editar | editar código-fonte]Executar as atividades listadas abaixo até o ponto de entrega final:
- Criar tutorial para auxílio na instalação do jogo;
- Integração contínua do projeto;
- Empacotamento do jogo CrossRoads.
Projeto CrossRoads
[editar | editar código-fonte]O projeto é o objeto de avaliação da disciplina Introdução a Jogos Eletrônicos, cursada no primeiro semestre de 2017.
São responsáveis pelo desenvolvimento do projeto:
Programadores
- Fernando Ribeiro Aguilar
- Caio Ribeiro
- Ulysses Guimarães
Artista
- Gustavo Nunes
Músico
- Pedro Neder
Dependências e Ferramentas
[editar | editar código-fonte]Ferramenta | Descrição |
---|---|
C++ | Linguagem de Programação utilizada. |
SDL 2 | Biblioteca de desenvolvimento e acesso ao Hardware. |
Cmake | Ferramenta para dar Build, testar e Enpacotar |
Github | Versionamento e Repositório remoto |
Travis CI | Ferramenta de integração contínua |
Cmake
[editar | editar código-fonte]O Cmake gerencia e automatiza o processo de build do jogo. O trecho do código abaixo mostra como foi configurado o arquivo CMakeLists.txt que é a base de configuração do cmake e a partir dele o build é gerado:
cmake_minimum_required(VERSION 3.0.2)
project(game LANGUAGES CXX)
# Set directory folders
set (PROJECT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
set (PROJECT_SRC_DIR "${PROJECT_SOURCE_DIR}/src")
set (PROJECT_ASSETS_DIR "${PROJECT_SOURCE_DIR}/assets")
# Gets the list of files inside the src directory
file(GLOB_RECURSE SOURCES "${PROJECT_SRC_DIR}/*.cpp"
"${PROJECT_SRC_DIR}/*.c")
# Include Headers
include_directories("${PROJECT_INCLUDE_DIR}")
#### Compilation ####
# Compilation Flags
set(COMPILE_FLAGS "")
if (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
set(COMPILE_FLAGS "${COMPILE_FLAGS} -std=c++11 -W -Wall -pedantic -std=c++11 -Wshadow -O2 -g")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
set(COMPILE_FLAGS "${COMPILE_FLAGS} -std=c++11 -W -Wall -pedantic -std=c++11 -Wshadow -O2 -g")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
set(COMPILE_FLAGS "${COMPILE_FLAGS} /Wall")
endif()
# Cmake compilation flags redefinition
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}")
#### Dependencies ####
# Add engine
set (PROJECT_ENGINE_DIR "${PROJECT_SOURCE_DIR}/engine")
add_subdirectory(${PROJECT_ENGINE_DIR})
include_directories(${ENGINE_INCLUDE_DIR})
#### Executable ####
add_executable(game ${SOURCES})
target_link_libraries(game
engine
SDL2 SDL2_image SDL2_ttf SDL2_mixer)
#### Custom Commands ####
# Copy assets folder to build
add_custom_command(TARGET game POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_ASSETS_DIR} ${CMAKE_BINARY_DIR}/assets)
Integração Contínua: Travis CI
[editar | editar código-fonte]Visando manter a integridade do código e o acompanhamento de alterações foi implementado a integração contínua no projeto utilizando a ferramenta Travis CI. Abaixo, o código do arquivo .travis.yml que é base da configuração da integração contínua no projeto:
{
"dist": "trusty",
"sudo": "required",
"language": "cpp",
"compiler": "gcc",
"addons": {
"apt": {
"sources": [
"ubuntu-toolchain-r-test"
],
"packages": [
"gcc-6",
"g++-6",
"cmake",
"libsdl2-dev",
"libsdl2-image-dev",
"libsdl2-mixer-dev",
"libsdl2-ttf-dev",
"make"
]
}
},
"script": [
"sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc",
"sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++",
"export CC=/usr/bin/gcc-6",
"export CXX=/usr/bin/g++-6",
"mkdir build && cd build",
"cmake .. && make"
],
"group": "stable",
"os": "linux"
}
Configurando o Jogo
[editar | editar código-fonte]Manual de Instalação
[editar | editar código-fonte]1ª Passo: Instalando as dependências
[editar | editar código-fonte]$ sudo apt-get install cmake libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
2ª Passo: Baixar repositório do Github
[editar | editar código-fonte]$ git clone https://github.com/fernand0aguilar/ije-fga-UnB.git
3ª Passo: Compilação do jogo
[editar | editar código-fonte]$ cd ije-fga-unb
$ mkdir build && cd build
$ cmake ..
$ make
4ª Passo: Execução do jogo
[editar | editar código-fonte]$ ./game
Log de informações
[editar | editar código-fonte]$ cat log.txt
Controles
[editar | editar código-fonte]W A S D - Movimentar
Espaço - Atacar
Q - Defender
Empacotamento
[editar | editar código-fonte]Como uma das finalidades da disciplina é a realização do empacotamento do jogo. Foram feitos o empacotamento para sistemas Debian Based e para os sistemas Red Hat Based. Abaixo você encontra os dois empacotamentos que se encontram prontos para serem instalados em seus sistemas.
Empacotamento Debian
[editar | editar código-fonte]Para o empacotamento Debian foi utilizado a ferramenta Debreate para auxílio da criação do pacote, visto que de forma manual os sprites do jogo estavam sendo desconsiderados na geração do pacote. Sua utilização é simples mas precisa ser feita com cuidado para não errar alguma parte dos passos. Basicamente segue-se os seguintes passos:
- Passo 1: Instalação da ferramenta via terminal com os seguintes comandos:
$ sudo add-apt-repository ppa:antumdeluge/debreate
$ sudo apt-get update
$ sudo apt-get install debreate
- Passo 2: Configuração do arquivo CONTROL que contém informações como: Nome do pacote, versão, mantenedor, email e Arquitetura
- Passo 3: Configuração das dependências e dos conflitos
- Passo 4: Arquivos que fazerão parte do pacote a ser construído
- Passo 5: Os scripts necessários para instalação do pacote
- Passo 6: Changelog
- Passo 7: Licença de Copyright
- Passo 8: Criação do Menu Launcher do pacote
- Passo 9: Gerar build e iniciar construção do pacote
As imagens ao lado em formato thumb são os prints da ferramenta com os passos descritos acima para gerar o pacote:
Abaixo segue como foi gerado o arquivo de configuração CONTROL para geração do pacote:
Package: cross-roads-game
Version: 0.0.2
Maintainer: @fernand0aguilar <fernando@aguilar.net.br>
Section: games
Source: https://github.com/fernand0aguilar/ije-fga-UnB
Homepage: https://github.com/fernand0aguilar/ije-fga-UnB#crossroads
Architecture: amd64
Priority: optional
Depends: libsdl2-dev , libsdl2-image-dev, make, cmake, libsdl2-mixer-dev, libsdl2-ttf-dev
Description: A 2D game made with SDL2
A 2D game made with SDL2 for a subject called Introduction to Eletronic Games. Coursed in the first semester of 2017 in University of Brasilia.
Para instalar o pacote na sua máquina Debian Based. Basta fazer o download através do seguinte link:
Pode-se instalar usando o gerenciador de aplicativos de seu sistema. Basta lembrar que é precisa permissão de super usuário para tal ação. Para iniciar o jogo, basta procurar pelo nome CrossRoads no meu de aplicações. Ou se preferir pode ser feita a instalação através do terminal rodando o seguinte comando:
$ sudo dpkg -i cross-roads-game_0.0.2_amd64.deb
Para desinstalar o jogo, pode-se utilizador o seu gerenciador de aplicativos e clicar em "Remover", ou se preferir pode-se rodar o seguinte comando no terminal:
$ sudo apt-get remove crossroads
Empacotamento RPM
[editar | editar código-fonte]Para realização do empacotamento RPM, foi utilizado a ferramenta de conversão de pacotes Alien. Alien é uma ferramenta de linha de comando que permite você converter pacotes DEB para RPM e pacotes RPM para DEB. Foram feito os seguintes passos para gerar o pacote RPM:
Primeiramente deve-se instalar o Alien via terminal:
$ sudo apt-get install alien
Após a instalação, guiando o terminal até o diretório ao qual o pacote debian se encontra e foi realizado o seguinte passo:
$ sudo alien -r -c -v cross-roads-game_0.0.2_amd64.deb
Após rodar o comando o pacote RPM foi criado e pronto para ser instalado em sistemas Red Hat Based.
Para instalar o pacote na sua máquina Red Hat Based. Basta fazer o download através do seguinte link:
Pode-se instalar usando o gerenciador de aplicativos de seu sistema. Basta lembrar que é precisa permissão de super usuário para tal ação. Para iniciar o jogo, basta procurar pelo nome CrossRoads no meu de aplicações. Ou se preferir pode ser feita a instalação através do terminal rodando o seguinte comando:
$ sudo rpm -i cross-roads-game-0.0.2-2.x86_64.rpm
Para desinstalar o jogo, pode-se utilizador o seu gerenciador de aplicativos e clicar em "Remover", ou se preferir pode-se rodar o seguinte comando no terminal:
$ sudo rpm -e remove crossroads
Imagens do jogo
[editar | editar código-fonte]Abaixo é possível ver algumas imagens acerca do jogo:
Matéria - Gerência de Configuração de Software
[editar | editar código-fonte]Experiência
[editar | editar código-fonte]A aplicação dos conteúdos abordados em Gerẽncia de Configuração de Software foi de bom proveito, pois mostra como é importante o GCS aplicado na prática. Notou-se também que um plano bem definido é de extrema importânciaa para a boa execução do mesmo durante as fases do projeto, deixando bem claro e respeitando as datas do plano para evitar atrasos e perda de tempo com tarefas que deveriam ser concluídas. Também foi visto o quanto é importante fazer de maneira correta o empacotamento, para evitar problemas de bugs e crashs na máquina a ser instalada, podendo até mesmo gerar erros no sistema.
Desafios e Dificuldades
[editar | editar código-fonte]- Jogo sendo desenvolvido na matéria de Jogos Eletrônicos e utilizado ao mesmo tempo em Gerência de Configuração de Software
- Problemas ao empacotar o jogo devido que na hora do empacotamento as sprites do jogo não eram reconhecidas
- Bugs ao tentar rodar o jogo utilizando placa de vídeo dedicada. Placas de vídeo nativa não ocorriam bugs