Este projeto tem objetivo de desenvolver um protótipo de jogo no estilo RPG/Puzzle.
Utilizando conceitos de Programação Orientada à Objetos, foi criada uma base de código com as funcionalidades e mecânicas de um jogo 2d top view, junto com uma demonstração jogável.
- Delimitação do Problema
- Visão Geral sobre o Sistema
- Classes e Funcionalidades
- Organização do Projeto
- Execução e Compilação
- Testando a Demo
- Pessoas Envolvidas
Para a execução da ideia, partir de elementos mais básicos seria de maior dificuldade e fugiria do escopo da disciplina. Dessa maneira, foi utilizada a biblioteca multimídia SFML para a aplicação de elementos essenciais como áudio, janelas e gráficos. Com isso conseguimos nos delimitar a apenas implementar TADs relativos às funcionalidades especiais do projeto, desde mais básicos como movimentação de personagem, cenários e contagem de status até mecânicas especiais.
O sistema foi projetado a fim de obter uma base de fácil usabilidade para a criação de jogos no estilo 2d top view. Para isso, o programa possui diversas classes que lidam com as mecânicas básicas de um jogo. Contando com elementos relacionados a estrutura básica do jogo como o gameloop e os diferentes estados de jogo, e também com elementos que compõem a gameplay como o player e as diversas instancias que interagem com ele.
Foram adicionadas classes responsáveis por diferentes componentes da aplicação. Desde a mais básica, Game, responsável por gerenciar tempo de atualização dos frames e estados da aplicação até uma mais específica como Dialogue, responsável por apresentar um diálogo ao jogador.
A seguir a lista das classes junto de uma breve descrição:
- Animation:
- Audio:
- Background:
- Collision:
- Dialogue:
- DialogueTree:
- Game:
- GameState:
- Instance:
- Node:
- Npc:
- Player:
- SpriteSet:
- State:
- Wall:
O projeto está organizado em diferentes pastas, com arquivos únicos a cada classe. Há a separação entre contrato e implementação, de modo a favorecer a modularidade e obter mais componentes reutilizáveis.
Abaixo a árvore de pastas do repositório:
├── build
├── docs
├── doxygen
├── include
│ ├── animation
│ ├── audio
│ ├── collision
│ ├── dialogue
│ ├── game
│ ├── hud
│ ├── instances
│ └── sprite-set
├── libs
└── src
├── animation
├── audio
├── collision
├── dialogue
├── game
├── hud
├── instance
└── sprite-set
Para executar o programa basta compilá-lo usando o comando make
e executá-lo com o comando make run
.
Em algumas versões utilizando o WSL, não é possível gerar interface gráfica. Dessa forma também é possivel compilar utilizando o mingw
O programa começa sua execução no estado de Menu e conta com três opções de seleção New Game, Credits, Quit. Clicando com o mouse em cima da opção New Game você será redirecionado para a intro do jogo. Para passar os textos da intro é necessário pressionar a tecla arrow right, assim que todos os textos forem terminados o jogo irá começar. O objetivo é pegar e entregar os itens espalhados pelo cenário para os seus respectivos donos antes que o cronômetro zere.
Controles: 'Z' e 'X' para interagir com os objetos e selecionar as opções dentro do diálogo dos NPCs 'arrow_up', 'arrow_down', 'arrow_left', 'arrow_right' para movimentar o jogador 'S' para sair do menu de cráditos
brisabn heitoeu mateuskrause minipatch