Strife of Mythology Tower Defense
Glossário
[editar | editar código-fonte]Termo | 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
[editar | editar código-fonte]O 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
[editar | editar código-fonte]Introdução
[editar | editar código-fonte]Este 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
[editar | editar código-fonte]O 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 | editar código-fonte]- 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
[editar | editar código-fonte]Cronograma
[editar | editar código-fonte]Data | 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
[editar | editar código-fonte]Membro | Tarefa |
Gabriel Silva | Desenvolver e aplicar o planejamento de GCS |
Pedro Sales | Desenvolver e aplicar o planejamento de GCS |
Dependências do sistema
[editar | editar código-fonte]A 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
[editar | editar código-fonte]Para 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
[editar | editar código-fonte]Com 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 | editar código-fonte].deb
[editar | editar código-fonte]Para 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
[editar | editar código-fonte]Para 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 | editar código-fonte].deb
[editar | editar código-fonte]Para 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
[editar | editar código-fonte]Para 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
[editar | editar código-fonte]Debian 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
[editar | editar código-fonte]Um video de gameplay foi gravado e pode ser acessado no link https://www.youtube.com/watch?v=vrD_XxZo9p8
Gameplay - Como Jogar
[editar | editar código-fonte]Para 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
[editar | editar código-fonte]O 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
[editar | editar código-fonte]Experiências
[editar | editar código-fonte]De 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 | editar código-fonte]- Desafio de compilar
- Desafio de fazer com que o jogo rodasse
- Muitos erros no macOS