LastWorldWar
Glossário
[editar | editar código-fonte]Termo | Descrição |
---|---|
'.deb' | Extenção "Debian", para arquivos prontos para rodar diretamente em sistemas operacionais compatíveis com o Debian, tais como o Ubuntu e o Mint |
'.exe' | Extenção "EXEcutable file", para arquivos prontos para rodar diretamente em sistemas operacionais DOS, Windows, OS/2 e VMS |
Empacotamento | Ação de definir e reunir recursos que juntos, em um pacote, possuem alguma funcionalidade ou fazem parte de um sistema maior |
FGA | Faculdade do Gama, pertencente à UnB |
GCS | Gerência de Configuração de Software |
IJE | Disciplina de Introdução à jogos eletrônicos |
LWW | Last World War, o jogo que será utilizado no projeto |
UnB | Universidade de Brasília |
Contexto do projeto
[editar | editar código-fonte]O projeto que será executado por esse planejamento envolve fazer o empacotamento do jogo LWW para que então, esse possa ser distribuído digitalmente por meio de uma plataforma que está sendo desenvolvido para IJE, 1.2017.
Plano de Gerência de Configuração de Software
[editar | editar código-fonte]Introdução
[editar | editar código-fonte]Esse documento possui a intenção de definir atividades, processos e ferramentas de GCS para a execução do objetivo do projeto.
Objetivo
[editar | editar código-fonte]O objetivo do projeto é planejar e executar o empacotamento do jogo LWW para plataformas linux compatíveis e Windows. Com o empacotamento feito, será possível utilizar os pacotes gerados na plataforma que está sendo desenvolvida.
Escopo
[editar | editar código-fonte]- Pacotes .deb, para distribuições linux compatíveis, tais como o Ubuntu;
- Pacotes .exe, para distribuições Windows;
- Utilização da ferramenta Conan, para auxiliar o empacotamento;
- Utilização de um contêiner da ferramenta Docker, para descobrir quais são as dependências do LWW e para auxiliar no deploy;
- Descobrir e definir quais são as bibliotecas e outras dependências, para que o usuário final não tenha surpresas.
Gerência de Configuração de Software
[editar | editar código-fonte]Cronograma
[editar | editar código-fonte]Data | Marco |
---|---|
24/04/2017 | Apresentação dos planos de GCS dos projetos |
25/04/2017 | Estudo sobre empacotamento Debian |
25/04/2017 | Estudo sobre empacotamento Windows |
09/05/2017 | Começo da implementação do empacotamento do projeto |
29/05/2017 | Andamento dos projetos - Ponto de Controle 1 |
05/06/2017 | Andamento dos projetos - Ponto de Controle 2 |
19/06/2017 | Apresentação final dos projetos |
Papéis
[editar | editar código-fonte]Membro | Tarefa |
Matheus de Oliveira | Desenvolver e aplicar o planejamento de GCS |
Stefânia Bezerra | Desenvolver e aplicar o planejamento de GCS |
Sobre o LastWorldWar
[editar | editar código-fonte]História do jogo
[editar | editar código-fonte]O jogo consiste em conquista de território assim como o acúmulo de alguns itens.
O Jogo
[editar | editar código-fonte]Comandos
[editar | editar código-fonte]Botões
0 - Muda modo de visualização
1 - Selecionar unidade 1
2 - Selecionar unidade 2
3 - Unidade 2 atacar unidade 1
A, S, D, W - Movimenta o personagem
Imagens do jogo
[editar | editar código-fonte]Na imagem abaixo, você tem o inicio do jogo, para movimentar o tanque, ou o soldado, ou o navio, você clica e utiliza as teclas 'A,S,D,W' para definir sua movimentação.
A imagem abaixo mostra os três personagens na posição diferente da do inicio do jogo.
Quando se muda o modo de visualização, é mostrado o tipo de recurso que se tem naquela parte do mapa, como mostrado nas imagens abaixo:
Vídeo de Gameplay
[editar | editar código-fonte]O vídeo poderá ser acessado no Google Drive pelo link abaixo.
- LastWorldWar Gameplay: https://drive.google.com/file/d/0B_udPAYDuuIycV90bDREaDBoR2M/view
Execução das Atividades
[editar | editar código-fonte]Manual de Instalação
[editar | editar código-fonte]1ª Passo: Clonar o repositório
[editar | editar código-fonte]$ git clone https://github.com/fgagamedev/LastWorldWar
2ª Passo: Instalando o compilador
[editar | editar código-fonte]$ sudo apt-get install g++
3ª Instalando o SDL
[editar | editar código-fonte]$ sudo apt-get install libsdl2-2.0-0 libsdl2-dev libsdl2-image-2.0-0 libsdl2-image-dev libsdl2-ttf-2.0-0 libsdl2-ttf-dev
Compilando o jogo
[editar | editar código-fonte]1 - Entre na pasta do jogo e utilize o comando make.
2 - Execute o arquivo LastWorldWar ou utilize o comando make init.
É necessário o compilador 'gcc' e as bibliotecas 'SDL 1.2' e 'SDL_IMAGE 1.2'.
Compilando
[editar | editar código-fonte]Para compilar todos os arquivos do jogo, utilize o seguinte comando:
$ make
Limpar pasta
[editar | editar código-fonte]Para remover os arquivos .d e .o, utilize o seguinte comando:
$ make clean
Executando o jogo
[editar | editar código-fonte]Para executar o jogo e começar a jogar, utilize o seguinte comando:
$ make init
ou também pode executar o comando seguinte:
$ ./LastWorldWar
Mudando o UNIX Makefile para o CMAKE
[editar | editar código-fonte]Um dos objetivos do projeto é o empacotamento do jogo. Para isso, é necessário utilizar algumas ferramentas que tornem esse processo mais simples e robusto. Uma das primeiras mudanças foi mudar o UNIX Makefile já presente no projeto para o CMake.
O CMake é capaz de criar Makefiles de forma muito mais simplificada e com suporte a várias plataformas. Além disso, essa mudança é uma chance de organizar melhor a estrutura do projeto.
O Makefile original é representado abaixo:
all:
#g++ -g `sdl-config --cflags --libs` server.cpp -Wall -W -pedantic -ansi -lSDL -lSDL_image -lSDL_ttf -lSDL_net -o server
g++ -g `sdl-config --cflags --libs` LastWorldWar.cpp Cenario.cpp Tile.cpp ClasseUnidade.cpp Unidade.cpp Random.cpp Draw.cpp Territorio.cpp ImageHandlerSDL.cpp biblioteca.cpp Network.cpp game.cpp AudioHandler.cpp FontHandler.cpp -Wall -W -pedantic -ansi -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net globals.cpp globalsGame.cpp Nacao.cpp Timer.cpp -o LastWorldWar -std=c++0x
init: LastWorldWar
./LastWorldWar
clean:
rm -rf LastWorldWar
Utilizando o CMake, é criado um arquivo CMakeLists.txt, que tem a função de indicar como a build será feita, gerando no final um Makefile correspondente às configurações indicadas no arquivo. A primeira versão criada do CMakeLists.txt é representada abaixo:
# Using the lastest version available for CMake to date
cmake_minimum_required(VERSION 3.8)
# Project's name
project(LastWorldWar)
# Get all .cpp files and set they to the source code
file(GLOB SOURCE_FILES *.cpp *.h)
# Set the output folder where your program will be created
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
# Set the libraries - Must have
find_package(SDL REQUIRED)
include_directories(${SDL2_INCLUDE_DIR})
# Set compiler flags
set(CMAKE_CXX_FLAGS "sdl-config --cflags --libs -Wall -W -pedantic -ansi -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net -std=c++0x -o -g")
# The following folder will be included
include_directories("${PROJECT_SOURCE_DIR}")
# Run the executable
add_executable(LastWorldWar ${SOURCE_FILES})
target_link_libraries(LastWorldWar ${SDL_LIBRARY})
A versão final do Cmake se encontra logo abaixo:
# Using the lastest version available for CMake to date
cmake_minimum_required(VERSION 3.8)
# Project's name
project(LastWorldWar)
# Set the libraries - Must have
find_package(SDL REQUIRED)
find_package(SDL_image REQUIRED)
find_package(SDL_mixer REQUIRED)
find_package(SDL_ttf REQUIRED)
find_package(SDL_net REQUIRED)
# The following folder will be added as "include" in C++ compilation
include_directories(include)
# Set all source files to a variable
file(GLOB SOURCE_CODE source/*.cpp)
# Set compiler flags
set(CMAKE_CXX_FLAGS "${SDL_CFLAGS} -Wall -W -pedantic -ansi -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net -std=c++0x -o -g")
# Executable for Main Game
add_executable(LastWorldWar LastWorldWar.cpp ${SOURCE_CODE})
include_directories(LastWorldWar ${SDL_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR} ${SDLTTF_INCLUDE_DIR} ${SDLNET_INCLUDE_DIR})
target_link_libraries(LastWorldWar ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY} ${SDLTTF_LIBRARY} ${SDLNET_LIBRARY})
# Executable for Server
add_executable(LastWorldWarServer server.cpp ${SOURCE_CODE})
include_directories(LastWorldWarServer ${SDL_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR} ${SDLTTF_INCLUDE_DIR} ${SDLNET_INCLUDE_DIR})
target_link_libraries(LastWorldWarServer ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY} ${SDLTTF_LIBRARY} ${SDLNET_LIBRARY})
# Installation - Install each needed file to a designated folder
INSTALL(TARGETS LastWorldWar DESTINATION LastWorldWar_GAME)
INSTALL(TARGETS LastWorldWarServer DESTINATION LastWorldWar_GAME)
INSTALL(FILES build/lazy.ttf build/mapaTeste.tmx DESTINATION LastWorldWar_GAME)
INSTALL(DIRECTORY build/images build/sound_effects build/soundtrack DESTINATION LastWorldWar_GAME)
# SECTION - Packaging for Debian systems
## Needed for .deb generation
SET(CPACK_GENERATOR "DEB" "NSIS")
SET(CPACK_NSIS_MODIFY_PATH ON)
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "FgaGameDev <https://github.com/fgagamedev/LastWorldWar>")
## Setting dependences - Auto Discovery
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
## Installation info
set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/)
## Adding info
set(CPACK_PACKAGE_CONTACT "https://github.com/fgagamedev/LastWorldWar")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LastWorldWar game, from UnB-FGA students.")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
## This should be the last item on this file
include(CPack)
Executando com o CMake
[editar | editar código-fonte]Com o CMakeLists.txt preparado, é necessário iniciar o comando CMake no diretório em que o arquivo se encontra. No caso:
$ cmake .
Então, o CMake irá processar o que foi descrito no CMakeLists.txt e executar o que foi indicado. Ao finalizar, um novo Makefile é criado. É necessário utilizá-lo para compilar o jogo como o comando abaixo:
$ make
Por fim, é possível iniciar o jogo utilizando o comando:
./LastWorldWar
Empacotamento
[editar | editar código-fonte]Após a configuração do Cmake, é possível criar qualquer tipo de empacotamento. Para a disciplina os empacotamentos utilizados seriam o .deb, para o Linux, e o .exe, para o Windows.
Empacotamento .deb
[editar | editar código-fonte]Para executar o empacotamento .deb é necessário seguir os seguintes passos:
- Execute o Cmake
$ cmake .
- Em seguida deve-se construir o pacote usando:
$ make package
- Logo em seguida irá gerar um arquivo com o seguinte nome
LastWorldWar-1.0.0-Linux.deb
- Para poder encontrar o jogo é necessário usar:
/usr/local/LastWorldWar_GAME
Ferramentas utilizadas
[editar | editar código-fonte]Considerações finais
[editar | editar código-fonte]Pontos negativos
[editar | editar código-fonte]- O progresso do jogo não foi identificado mesmo conversando com o desenvolvedor do jogo.
- Dificuldade de trabalhar com o Docker
- Dificuldade em empacotar o jogo pelo meio tradicional
- Dificuldade em realizar a compilação do .exe
- Dificuldade em criar o Docker
Pontos positivos
[editar | editar código-fonte]- Descobriu-se que o Cmake é uma ótima ferramenta
Referências
[editar | editar código-fonte]- LWW no GitHub: https://github.com/fgagamedev/LastWorldWar