LastWorldWar
Glossário
editarTermo | 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
editarO 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
editarIntrodução
editarEsse documento possui a intenção de definir atividades, processos e ferramentas de GCS para a execução do objetivo do projeto.
Objetivo
editarO 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- 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
editarCronograma
editarData | 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
editarMembro | Tarefa |
Matheus de Oliveira | Desenvolver e aplicar o planejamento de GCS |
Stefânia Bezerra | Desenvolver e aplicar o planejamento de GCS |
Sobre o LastWorldWar
editarHistória do jogo
editarO jogo consiste em conquista de território assim como o acúmulo de alguns itens.
O Jogo
editarComandos
editarBotõ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
editarNa 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
editarO 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
editarManual de Instalação
editar1ª Passo: Clonar o repositório
editar$ git clone https://github.com/fgagamedev/LastWorldWar
2ª Passo: Instalando o compilador
editar$ sudo apt-get install g++
3ª Instalando o SDL
editar$ 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
editar1 - 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
editarPara compilar todos os arquivos do jogo, utilize o seguinte comando:
$ make
Limpar pasta
editarPara remover os arquivos .d e .o, utilize o seguinte comando:
$ make clean
Executando o jogo
editarPara 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
editarUm 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
editarCom 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
editarApó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
editarPara 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
editarConsiderações finais
editarPontos negativos
editar- 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- Descobriu-se que o Cmake é uma ótima ferramenta
Referências
editar- LWW no GitHub: https://github.com/fgagamedev/LastWorldWar