Strife of Mythology Tower Defense
Glossário
editarTermo | Descrição |
---|---|
Wave | Um conjunto de inimigos que nascem em conjunto em momentos do jogo. |
Trilha | Caminho pré-determinado que será seguido pelas waves. Caso um inimigo chegue ao fim da trilha, o jogador sofre uma punição. |
Tower Defense | Um estilo de jogo onde um jogador deve impedir unidades inimigas de completarem seu objetivo utilizando torres. |
SoMTD | Strife of Mythology Tower Defense. |
GCS | Gerência de configuração de software. |
UnB | Universidade de Brasília. |
Contexto do Projeto
editarO enredo desse projeto gira em torno da disciplina de desenvolvimento de jogos digitais e de gerência de configuração de software da Faculdade Gama da Universidade de Brasília. E tem como objetivo o empacotamento dos jogos desenvolvidos na disciplina de jogos com pelo alunos de GCS.
O jogo selecionado para empacotamento foi SoMTD. Que é um jogo de estilo Tower Defense, onde o objetivo é impedir que as waves de monstros avancem pela trilha utilizando torres que atacam. A medida em que as "waves" são vencidas, elas ficam mais fortes e difíceis. Haverá um recurso que servirá para evoluir e construir torres, e que será obtido conforme os monstros forem derrotados.
Plano de Gerenciamento de Configuração de Software
editarIntrodução
editarEste plano tem como objetivo definir as atividades que serão realizadas no projeto final da disciplina de gerência de configuração de software da universidade de Brasília.
Objetivo
editarO objetivo do presente projeto é realizar o empacotamento do jogo SoMTD para os sistemas operacionais MacOS e Linux, possibilitando assim a distribuição do mesmo e de jogos desenvolvidos na disciplina de Jogos Digitais, ministradas na UnB, de maneira ainda mais acessível para usuários.
Escopo
editar- Criação de pacotes
.dmg
para fácil instalação em ambientes MacOS. - Criação de pacotes
.deb
para instalação em distribuições linux baseadas no Debian.
Gerenciamento de Configuração de Software
editarCronograma
editarData | Marco |
---|---|
24/04 | Apresentação do plano de GCS |
25/04 a 08/04 | Estudo de diretrizes sobre empacotamento Debian |
25/04 a 08/04 | Estudo de diretrizes sobre empacotamento MacOS |
09/05 a 15/06 | Implementação de empacotamentos do projeto |
29/05 | Andamento dos projetos - Ponto de Controle 1 |
05/06 | Andamento dos projetos - Ponto de Controle 2 |
16/06 a 17/06 | Finalização e revisão do projeto |
17/06 a 18/06 | Elaboração da apresentação do projeto |
19/06 | Apresentação final do projeto |
Papeis
editarMembro | Tarefa |
Gabriel Silva | Desenvolver e aplicar o planejamento de GCS |
Pedro Sales | Desenvolver e aplicar o planejamento de GCS |
Dependências do sistema
editarA arquitetura do jogo é dividida em dois grandes módulos. Um sendo a ijengine e outro o módulo do jogo. O módulo da ijengine é responsável por fornecer um mecanismo de para a utilização de eventos do computador como eventos de teclado, mouse, gerenciamento de windows entre outra coisa e por sua vez possui dependências da biblioteca SDL2. Enquanto o módulo do jogo é responsável por utilizar a ijengine e lógica do jogo. A lista completa de dependências é apresentada a seguir:
ijengine
- gcc
- g++
- libsdl2-dev
- libsdl2-ttf-dev
- libsdl2-image-dev
- libsdl2-mixer-dev
Jogo
- gcc
- g++
- ijengine
- lua5.2-dev
Como compilar a ijengine
editarPara compilar a ijengine, primeiro instale as dependências com o seguinte comando:
sudo apt-get install g++ libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev
Em seguida compile com o seguinte comando:
make
Com esse comando um biblioteca libijengine.a
será gerada e também um mini-módulo chamado kernel na pasta kernel/sdl2
.
Também é necessário instalar a ijengine com o comando a seguir:
sudo make install
Como esse comando a biblioteca será instalada em /usr/local/include
.
Como compilar o jogo
editarCom a ijengine instalada, compie e colo o mini-módulo kernel
para a pasta libs no diretório raiz do jogo. Caso a pasta libs
não exista, crie uma.
Em seguida instala a dependencia do jogo com o seguinte comando:
sudo apt-get install lua5.2-dev
E para compilar execute o seguinte comando:
make
Um binário deve ser gerado na pasta bin. Dessa forma, execute o jogo com o seguinte comando:
./bin/SoMTD
Criando os pacotes
editar.deb
editarPara a criação do .deb primeiramente foi compilado o jogo, já com a ijengine também compilada, em uma distribuição Debian, com suas dependências previamente instaladas. Em seguida, foram organizados os diretórios de forma de acordo com o seguinte diagrama:
strife-of-mythology_1.0_all
├── DEBIAN
│ └── control
└── usr
├── bin
│ └── strife-of-mythology
│ ├── bin
│ │ └── SoMTD
│ ├── libs
│ │ └── kernel.so.0.1.0
│ ├── lua-src
│ │ ├── Action.lua
│ │ ├── Button.lua
│ │ ├── Panel.lua
│ │ ├── Tower.lua
│ │ └── Unit.lua
│ ├── res
│ │ ├── (Imagens e txts)
│ └── somtd.png
└── share
├── applications
│ └── strife-of-mytology.desktop
└── doc
└── strife-of-mythology
└── copyright
Os meta-dados são descritos no arquivo control, como a seguir:
Package: strife-of-mythology
Version: 1.0
Installed-Size: 17692
Maintainer: Dylan Jefferson M. Guimarães Guedes <djmgguedes@gmail.com>
Section: games
Architecture: all
Priority: optional
Depends: libsdl2-dev, libsdl2-ttf-dev, libsdl2-image-dev, libsdl2-mixer-dev, lua5.2
Description: A 2d-isometric Tower Defense based on mythology.
O SoMTD é um jogo de estilo Tower Defense, onde o objetivo é impedir que as waves de monstros avancem pela trilha utilizando torres que atacam. A medida em que as "waves" são vencidas, elas ficam mais fortes e difíceis. Haverá um recurso que servirá para evoluir e construir torres, e que será obtido conforme os monstros forem derrotados.
No arquivo copyright foi explicitada a Licença Pública Geral GNU (GNU General Public License). O launcher da aplicação foi descrito no arquivo stryfe-of-mythology.desktop , como a seguir:
[Desktop Entry]
Name=Strife Of Mythology
Version=1.0
Exec=/usr/bin/strife-of-mythology/bin/SoMTD
Icon=/usr/bin/strife-of-mythology/somtd.png
Type=Application
Terminal=false
StartupNotify=true
Encoding=UTF-8
Path=/usr/bin/strife-of-mythology/
Finalmente, após a configuração dos referidos arquivos, foi executado o seguinte comando no diretório externo ao do jogo:
dpkg-deb --build strife-of-mythology_1.0_all
O comando realiza o empacotamento, gerando o pacote .deb strife-of-mythology_1.0_all.deb, podendo este ser distribuído e executado em diversas distribuições linux.
.dmg
editarPara a geração do .dmg foi utilizado a ferramenta appdmg(https://www.npmjs.com/package/appdmg) um modulo npm que automatiza o processo padrão para criação de dmgs.
Para a geração é necessário a criação de um arquivo chamado spec.json com a seguinte informações:
{"title": "Strife of Mythology","contents": [{ "x": 448, "y": 344, "type": "link", "path": "/Applications" },{ "x": 192, "y": 344, "type": "file", "path": "SoMTD" }]}
SoMTD é o caminho relativo para a pasta que será criada para o dmg e Applications a pasta target onde será instalado os arquivos. Feito isso, basta executar o seguinte comando:
appdmg spec.json SoMTD.dmg
A pasta SoMTD é basta com os arquivos necessários para a execução do jogo, ou seja, os recursos(imagens, sons, fonts e código lua) assim como os binários do kernel e do jogo. Não contendo código do jogo.
Também foi desenvolvido um Launcher.command. Arquivo que executa o jogo.
#!/bin/bash
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd "$parent_path"
./bin/SoMTD
Esse arquivo consiste em um script bash que executa o jogo. Para executa-lo via GUI, foi usado o seguinte comando chmod u+x para transformalo em executável e adicionado a extensão .command para mapear para um terminal.
Como instalar o pacote
editar.deb
editarPara a instalação do pacote criado no presente trabalho, basta acessar o repositório onde o mesmo se encontra e executar o seguinte comando:
sudo dpkg -i strife-of-mythology_1.0_all.deb
O jogo será instalado no diretório usr/bin/strife-of-mythology . Para execução do mesmo, pode-se executar o binário a partir do diretório raiz do jogo com o seguinte comando:
./bin/SoMTD
ou executar o launcher criado no momento da instalação do pacote.
.DMG
editarPara a instalação do .DMG, faça o download do arquivos presente no link na próxima sessão. Após o download, arraste a pasta do jogo para Applications. Em seguida execute o Launcher.
PS.: Não conseguimos configurar a dependência lua5.2 via dmg. Para instalar via dmg, instale o lua5.2 antes.
Link para download
editarDebian package - https://drive.google.com/file/d/0B1BuoMkWlTnUbDdvbUMtZnNjcmM/view?usp=sharing
DMG package - https://drive.google.com/file/d/0B1BuoMkWlTnUV242OUIwV2dLeTg/view?usp=sharing
Gameplay - Imagens e Video
editarUm video de gameplay foi gravado e pode ser acessado no link https://www.youtube.com/watch?v=vrD_XxZo9p8
Gameplay - Como Jogar
editarPara jogar, clique no botão jogar. Dessa forma uma nova partida começará. O objetivo do jogo é sobreviver ao ataques dos monstros.
Para derrotar a onda de monstro que continuará a surgir enquanto a sua torre estiver com vida, você deve criar elementos de defesa clicando nos NPCs no canto inferior esquerdo e comprando estes elementos, podendo avançar para os níveis II, III, e IV de defesa para cada NPC.
Integração Contínua
editarO arquivos a seguir .travis serve para integração continua caso a equipe de desenvolvimento deseje prosseguir com o desenvolvimento.
sudo: required dist: trusty language: cpp install: - sudo apt-get update - sudo apt-get install -y libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev lua5.2-dev compiler: - g++ script: - make
Matéria - Gerência de Configuração de Software
editarExperiências
editarDe forma geral a utilização de GCS e a abordagem de empacotamento do jogo como trabalho final foi proveitosa para os alunos envolvidos nesse trabalho. Uma vez que nunca trabalharam com empacotamento. O que trouxe uma nova área de conhecimento para o envolvidos.
Desafios e Dificuldades
editar- Desafio de compilar
- Desafio de fazer com que o jogo rodasse
- Muitos erros no macOS