# BoomScience Devlog

<span class="mw-headline">Aqui fica o histórico de atas e decisões tomadas sobre o projeto BoomScience.</span>

---

## <span class="mw-headline" id="bkmrk-22%2F6%2F2017-1">22/6/2017</span>

### <span class="mw-headline" id="bkmrk-puzzle-das-alavancas-1">Puzzle das alavancas</span>

4 alavancas: A, B, C, D

5 portas

alavanca A = flipa o estado das portas 1, 2, 4, 5

alavanca B = flipa o estado das portas 1, 5

alavanca C = flipa o estado das portas 2, 3, 4

alavanca D = flipa o estado das portas 1, 3

Estado inicial das portas: A A A A F

A - aberta, F - fechada

Solução do puzzle: alavancas A, C e D, em qualquer ordem

---

## <span id="bkmrk--2"></span><span class="mw-headline" id="bkmrk-22%2F5%2F2017-1">22/5/2017</span>

### <span class="mw-headline" id="bkmrk-level-design-do-esgo-1">Level Design do Esgoto</span>

```
      A
      ⇅
1  →  2  ⇆ 2.5 → 3  →  4  →  5
⇅           ↓
dica   ⇆    B
```

---

## <span id="bkmrk--4"></span><span class="mw-headline" id="bkmrk-22%2F5%2F2017-3">22/5/2017</span>

### <span class="mw-headline" id="bkmrk-level-design-do-esgo-3">Level Design do Esgoto</span>

Tempo total: 10 ~ 15 min

80% puzzle, 20% boss

1. Queda no esgoto (entrance)
2. Puzzle: nível de água -&gt; branch A (2.5 -&gt; branch B) (water-puzzle)
3. Puzzle: alavancas que abrem/fecham determinadas portas (lever-puzzle)
4. Puzzle: água + alavancas (final-puzzle)
5. Boss
6. Saída

- branch A: dorgas que aumentam a vida máxima
- branch B: boost de dano/alcance da bomba básica

- Sistema de galerias com conexões intercaladas (os puzzles ficam nas conexões, os inimigos ficam nas galerias)

- A saída do esgoto vai ser uma galeria com água que dá acesso a uma doca do laboratório. Vai ter uma válvula que escoa a água e revela uma grade de metal. O protagonista explode a grade usando a bomba básica, e sobe por uma escada até a doca.

---

## <span id="bkmrk--6"></span><span class="mw-headline" id="bkmrk-8%2F5%2F2017-1">8/5/2017</span>

#### <span id="bkmrk--7"></span><span class="mw-headline" id="bkmrk-gr%C3%A1fico-valor-x-risc-1">Gráfico Valor x Risco</span>

1. Stair jump
2. Level design do esgoto
3. Player detection
4. Smoke bomb
5. Game state switching
6. Main menu
7. Save files
8. Save points
9. Flags

---

## <span id="bkmrk--9"></span><span class="mw-headline" id="bkmrk-30%2F3%2F2017-1">30/3/2017</span>

### <span id="bkmrk--10"></span><span class="mw-headline" id="bkmrk-%C3%81rvore-da-cena-duran-1">Árvore da cena durante o gameplay</span>

- Root 
    1. global
    2. Main 
        1. GUI/HUD
        2. Stage (Floor) 
            1. Player\*
            2. StreamPlayer
            3. Enemies
            4. Interactive Objects (key, door)
            5. Layers (stairs, breakables)

Observações:

1. SamplePlayer será filho de quem emite o som.
2. Player\* é inserido quando o stage é carregado.
3. Menu/Game Over entra no lugar da Main.

---

## <span id="bkmrk--12"></span><span class="mw-headline" id="bkmrk-27%2F3%2F2017-1">27/3/2017</span>

### <span id="bkmrk--13"></span><span class="mw-headline" id="bkmrk-gr%C3%A1fico-valor-x-risc-3">Gráfico Valor x Risco</span>

1. Inimigo
2. Estrutura da árvore da cena
3. NPCs
4. HUD (HP)
5. Readme
6. HUD (mini-inventário)
7. Gamestate (Menu, Win/Lose)
8. Bomba de Fumaça

---

## <span id="bkmrk--15"></span><span class="mw-headline" id="bkmrk-29%2F8%2F2016-1">29/8/2016</span>

**Trilha Sonora**

- Música 
    - Fase do esgoto
    - Fase aquática
    - Menu
    - Game Over
- Efeitos Sonoros 
    - Arremesso da bomba
    - Button Toggle
    - Dano no personagem
    - Dano nos inimigos

**Outros**

[Script interessante](https://github.com/godotengine/godot-demo-projects/blob/master/2d/kinematic_char/player.gd) para simular física na classe Body.

---

## <span id="bkmrk--17"></span><span class="mw-headline" id="bkmrk-17%2F8%2F2016-1">17/8/2016</span>

**Readme**

- Descrição do projeto
- Dependências
- Install/Run

**Cenas**

- Estrutura
- Trocar níveis
- Trocar entre gamestates
- HUD
- Player 
    - Walk
    - Run
    - Shoot + Bomb
    - Jump
- NPCs

**Resources**

- Mapa
- Tileset

**Concept Art**

- Cenário
- Protagonista
- Mood Board + palavras-chave (OST)

### <span id="bkmrk--18"></span><span class="mw-headline" id="bkmrk-gr%C3%A1fico-valor-x-risc-5">Gráfico Valor x Risco</span>

1. Mapa, Player
2. HUD
3. Readme, Trocar entre gamestates

---

## <span id="bkmrk--20"></span><span class="mw-headline" id="bkmrk-15%2F8%2F2016-1">15/8/2016</span>

1. Escrever o readme
2. Criar cenas básicas, tendo em mente um simples demo 
    1. Cena Main (nó gerenciador de cenas)
    2. Dois levels conectados 
        1. Sistema de "Salas"
        2. Esgoto + Bioma marítmo
        3. Tilesets 
            1. Pixações
            2. Canos, goteiras, lixo, signs, objetos brilhantes
    3. Protag 
        1. Bombas
    4. Animal-people (enemies and not enemies, NPCs in general) 
        1. Rats
        2. Something else that is not a rat

---

## <span id="bkmrk--22"></span><span class="mw-headline" id="bkmrk-10%2F8%2F2016-1">10/8/2016</span>

- Convenção 
    - Godot Engine 2.1
    - [Padrões de Nomenclatura](https://github.com/Calinou/godot-style-guide)
- Física 
    - NÃO USE RigidBody2D
    - Caso precisemos de propriedades do RigidBody2D, implementar por código usando KinematicBody2D
- Tamanho de Tela 
    - 4:3 
        - Em monitores 16:9, adicionar pixels nas laterais
    - Resolução 
        - 480p, 720p, 1080p

---

## <span id="bkmrk--24"></span><span class="mw-headline" id="bkmrk-8%2F8%2F2016-1">8/8/2016</span>

- Cuidados com tela cheia 
    - Janela maximizada ou fullscreen?
- Estrutura de Cenas 
    - Entender a estrutura atual
    - Definir uma estrutura ótima
- Talvez implementar nossa própria física 
    - Não usar RigidBody2D
- Conteúdo Procedural?
- [UML](https://pt.wikipedia.org/wiki/UML) ftw 
    1. Main 
        1. Sample Player
        2. GUI
        3. Level 
            1. Player
            2. Enemies
            3. Platforms
            4. Floor
            5. Interactive Objects
- Convenção para nomes
- Convenção para a versão da Godot

---

## <span id="bkmrk--26"></span><span class="mw-headline" id="bkmrk-30%2F6%2F2016-1">30/6/2016</span>

### <span id="bkmrk--27"></span><span class="mw-headline" id="bkmrk-ata-da-reuni%C3%A3o-de-re-1">Ata da Reunião de Retrospectiva do 1º semestre</span>

- **Presentes:** Victor, Wil, Akira, Kei, Lívia, André, Cabeça, Eduardo
- **Início:** 14h30
- **Término:** 16h10

As ações que decidimos tomar com base na retrospectiva do projeto foram as seguintes.

#### <span class="mw-headline" id="bkmrk-wiki-do-github-1">Wiki do GitHub</span>

- Separar log
- Separar tópicos
- Sugestão: usar issues

#### <span id="bkmrk--28"></span><span class="mw-headline" id="bkmrk-refor%C3%A7ar-que-%C3%A9-bom-a-1">Reforçar que é bom avisar sobre faltas</span>

- Perguntar quem virá
- Fazer canal no Discord 
    - + discussão

#### <span id="bkmrk--29"></span><span class="mw-headline" id="bkmrk-prioridade-para-reun-1">Prioridade para reuniões fixas</span>

- Conversar com maratona
- Considerar reservas

#### <span class="mw-headline" id="bkmrk-atividades-remotas-1">Atividades Remotas</span>

#### <span id="bkmrk--30"></span><span class="mw-headline" id="bkmrk-c%C3%B3digo-1">Código</span>

- Usar pull request 
    - Aprender a usar pull request 
        - Documentar boas práticas de pull request
- Definir estruturas do projeto

#### <span class="mw-headline" id="bkmrk-git-1">Git</span>

- Modularizar mais as cenas
- Usar pull request
- Usar issues e delegação de tarefas

#### <span class="mw-headline" id="bkmrk-ir-geral-para-oficin-1">Ir geral para oficinas Godot</span>

#### <span class="mw-headline" id="bkmrk-controle-das-bombas-1">Controle das bombas</span>

- Copiar Terraria
- Mostrar trajetória

#### <span class="mw-headline" id="bkmrk-aprender-a-fazer-rel-1">Aprender a fazer releases com a Godot</span>

#### <span id="bkmrk--31"></span><span class="mw-headline" id="bkmrk-listagem-e-decis%C3%A3o-d-1">Listagem e decisão da OST</span>

- Palavras-chave
- Progressão do plot

---

## <span id="bkmrk--33"></span><span class="mw-headline" id="bkmrk-23%2F6%2F2016-1">23/6/2016</span>

- Monstros do esgoto: "Blob Fish" e "Polvo Dumbo".
- O jogador poderia passar por "Basking sharks" em partes submarinas.
- Os suricatos são a gangue do café ("Don't tread on me"). Eles protegem a Regina.
- As moedas serão pedrinhas de âmbar com insetos dentro.

---

## <span id="bkmrk--35"></span><span class="mw-headline" id="bkmrk-16%2F6%2F2016-1">16/6/2016</span>

- Calabar: O nome do "amigo" cientista do jogador.

- Regina monta a "jet-pack" a partir de peças encontradas nas sedes.

- Sede X (vulcão): Tem muito fogo e calor. Devido ao ambiente, os inimigos locais são autômatos criados com a tecnologia roubada (ou golens supimpas). O jogador encontra sua pesquisa, mas descobre que ela já foi estudada pela empresa. Sabendo que serão necessárias gemas para replicá-la, o jogador se direciona agora ao centro de mineração local. 
    - Chefe Kentucky Fire Chicken ( Flamenco ) 
        - Bomba Chicken Cocktail -&gt; Chickentail

- Centro de Mineração: Os inimigos já utilizam gemas e há uma esteira despejando gemas de dentro pra fora da mina (indicando que É TARDE DE MAIS). O jogador adentra a mina a fim de causar o apagão, e assim frustar a operação de mineração da empresa. A esteira faz "BIEEUUMM" e desliga.
- A luta com o chefe seria no escuro? 
    - Chefe Toupeira com furadeiras nas mãos (Metaleira, faz símbolo de mão chifrada, furando o teto e fazendo rochas caírem)
    - Bomba Eletrica que faz "BUZZZ" (stuna os inimigos)

---

## <span id="bkmrk--37"></span><span class="mw-headline" id="bkmrk-14%2F6%2F2016-1">14/6/2016</span>

Discussão sobre progressão do enredo e dos levels:

- Prólogo/tutorial: no laboratório na casa dele. Ele está pesquisando e faz alguma descoberta nova, fica feliz e vai compartilhar a notícia com o(a) migo(a) em um lugar alternativo (que envolve café - spoiler alert). No caminho da cafeteria/na própria cafeteria a empresa deve ser contextualizada no universo do jogo. Ao voltar pro laboratório ele vê um automóvel parado na frente da sua casa com o logo de uma empresa. Ele entra na casa e volta pro laboratório e ele ouve o carro indo embora e percebe que sua pesquisa não está mais no lugar. Ele então volta pra rua e percebe que uma das coisas roubadas foi deixada para trás (no caso, a bomba inicial). &lt;PRECISAMOS PENSAR EM UM TUTORIAL&gt;.

- Cidade: caminho para a empresa. Fase de introdução às plataformas e sem combate. Maior contextualização da história.

- Sede oficial da empresa high-tech (fachada): interação com um atendente/recepcionista que não deixa o personagem passar. Usando combate ou stealth, ele passa por esse hall e vai percorrendo o interior da empresa. Em certo ponto, ele fisicamente não consegue avançar mais (alguma habilidade avançada é necessária), mas ele descobriu algo de novo que avançará a história (existência de outra sede onde se encontra parte de sua pesquisa roubada), levando ele para outro local. Ele cai por um alçapão e vai pra fase do esgoto (mais inimigos começam a surgir ao longo do jogo).

- Esgoto: fase com mais gameplay do que avanço narrativo. A fase deságua em outro ambiente (bioma marítimo).

- Bioma marítimo: deságua diretamente no ambiente do laboratório embaixo d'água. Avanço narrativo pois o cientista acha documentos da empresa em um lugar completamente nada a ver e isso o deixa mais intrigado em relação ao mistério do jogo inteiro. A informação que ele vai achar nessa fase (os documentos da empresa) estará criptografada e ele terá que levar essa mensagem para algum outro lugar para decodificá-la. 
    - Chefe Slayer Fishman: Todos os ataques são GOLPES DE BALÉ. 
        - Bomba de Água (ou criogênica?): Solidifica lava e destrói equipamentos/inimigos eletrônicos

- O personagem vai voltar pra casa pois está cansado/frustrado/com frio/com fome/molhado e quer descansar no conforto do seu lar. Ele chega e ve que a casa foi destruída e encontra sua amiga barista (Regina, a feneco) está lá pra entregar o pedido personalizado de café e encontra com o cientista. Ele entrega o documento criptografado para a Regina que reconhece a língua e traduz os documentos para o personagem. 
    - Regina: amiga de faculdade do personagem principal, lida com café desde sempre e por isso vira barista na sua vida adulta.
    - A partir deste momento, o jogador já é considerado um infrator pela empresa.

- O documento descreve algo como "Recebemos as novas tecnologias na sede x". Regina CONVENIENTEMENTE sabe a localização de tal local, ao qual o camaleão de gênero ambíguo se direciona, após consumir muito café ""especial"".

Discussão sobre as bombas:

- Recursos de energia vão ser dropados enquanto as fases progridem. Craft instantâneo de bombas usando as energias.

---

## <span id="bkmrk--39"></span><span class="mw-headline" id="bkmrk-31%2F5%2F2016-1">31/5/2016</span>

Bugs reportados:

- Detecção no modo stealth
- Plataforma móvel
- <s>Plataformas instáveis caem quando o player colide por baixo</s>
- Detecção nas bombas de fumaça
- Jogador trava em certos pontos do tileset em modo stealth
- Plataformas instáveis às vezes não somem quando o jogador permanece em cima delas
- <s>Bombas não colidem com plataformas instáveis</s>

## <span id="bkmrk--41"></span>

---

## <span class="mw-headline" id="bkmrk-5%2F5%2F2016-1">5/5/2016</span>

- O dia em que tudo mudou

- Movimento da bomba melhorado: 
    - Bombas iniciam a trajetória em linha reta em direção ao mouse, mas são afetadas normalmente pela gravidade. Colocamos um limite inferior e superior para as forças de arremesso.

- Colocamos invencibilidade no jogador ao ser atingido por um inimigo.

---

## <span id="bkmrk--44"></span><span class="mw-headline" id="bkmrk-7%2F4%2F2016-e-14%2F4%2F2016-1">7/4/2016 e 14/4/2016</span>

Feita a maioria da mecânica básica do jogo, consideramos importante estabelecer objetivos concretos relacionados a jogabilidade para o projeto de agora em diante. As decisões escritas aqui são diretrizes para o resto do jogo, portanto não são limitantes ou imutáveis.

- Inimigos com durabilidade e movimentação diferente: 
    - Inimigo básico: movimenta-se no horizontalmente no chão. Quando detecta o personagem com uma certa proximidade (personagem entra em uma área de gatilho), ele vai em sua direção (inicia combate).
    - Inimigo aéreo: movimenta-se horizontalmente a uma certa altura do chão. Quando o personagem entra em uma certa área de gatilho o inimigo faz um movimento rasante na sua direção (inicia combate).
    - Inimigo "aranha": fica no teto e tem um movimento vertical intervalar. Além disso, também detecta o personagem quando está próximo (área de gatilho) e desce verticalmente (não necessariamente vai no sentido do personagem) para causar dano no mesmo.
    - Inimigo "morcego": fica no teto e movimenta-se simultaneamente vertical e horizontalmente (movimento rasante). Também detecta a proximidade do personagem através de uma área de gatilho e faz o mesmo movimento (inicia combate).
    - Inimigo estático: não se movimenta (talvez se camufle com a cena).
    - Ideias adicionais: camuflagem, escudo, atirar de volta.
- Tipos diferentes de bombas: 
    - Bomba básica: o tipo de bomba com qual o jogador inicia a sua jornada;
    - Bomba de fumaça: usada em stealth mode. Impede que o inimigo veja o jogador;
    - Bomba de gás tranquilizante: usada em stealth mode. Usada para atordoar os inimigos sem entrar em combate direto;
    - Bomba flask fire: bomba de tiro rápido;
    - Bombas elementais: bombas de gelo, fogo, água, etc.
- Finais que variam baseados nas ações do jogador: 
    - Final energético: o cientista recupera sua pesquisa e a utiliza para desenvolver tecnologias sustentáveis;
    - Final bélico: o cientista acaba tomando o controle da empresa de bombas e desiste dos fins energéticos de sua pesquisa;
    - Final neutro: o cientista desiste de sua pesquisa e passa o resto dos seus dias se dedicando à profissão de barista.
- Levels: 
    - Casa do cientista/laboratório: cena inicial, onde o jogador passa por um tutorial;
    - Fase da cidade: onde o jogador deve interagir com o meio para descobrir a história/contexto;
    - Fase da fábrica: indústria da empresa;
    - Fase admnistrativa/"high-tech": escritório da empresa;
    - Fase final: base escondida/secreta da empresa.

Esses objetivos estão sujeitos a alterações!

---

## <span id="bkmrk--46"></span><span class="mw-headline" id="bkmrk-15%2F3%2F2016-1">15/3/2016</span>

- Conserto do pulo do personagem;
- Tentativa de conserto da direção da bomba (agora em relação à câmera);
- Tentativa de passar a colisão para as partículas.

---

## <span id="bkmrk--48"></span><span class="mw-headline" id="bkmrk-10%2F3%2F2016-1">10/3/2016</span>

- Adição de câmera;
- Correção da direção de lançamento bomba;
- Criação de um inimigo;
- Criação de um gerador de inimigos;
- Adição de partículas na explosão do inimigo.

A versão atual está rompida/danificada devido ao git merge.

---

## <span id="bkmrk--50"></span><span class="mw-headline" id="bkmrk-8%2F3%2F2016-1">8/3/2016</span>

- Correção do lançamento da bomba para ambos os lados;
- Direção do lançamento da bomba determinada pelo mouse.
- Velocidade limite de lançamento da bomba.

---

## <span id="bkmrk--52"></span><span class="mw-headline" id="bkmrk-4%2F3%2F2016-1">4/3/2016</span>

- Implementação do pulo permitido apenas em contato com o chão;
- Criação da bomba e implementação de arremesso;
- Colisão da bomba com partículas.

---

## <span id="bkmrk--54"></span><span class="mw-headline" id="bkmrk-1%2F3%2F2016-1">1/3/2016</span>

- Criação do repositório do GitHub;
- Início de simulação da mecânica básica do jogo na Godot.

---

## <span id="bkmrk--56"></span><span class="mw-headline" id="bkmrk-ata-da-reuni%C3%A3o-do-di-1">Ata da reunião do dia 26/2/2016</span>

- Objetivo: definir conceito básico do novo projeto
- Presentes: Akira, André, Isabela, Omar, Pão, Victor e Wil

### <span id="bkmrk--57"></span><span class="mw-headline" id="bkmrk-1.-a%C3%A7%C3%A3o-principal%3A-o-1">1. Ação principal: o que o jogador faz?</span>

- Combate: arremesso de explosivos (granadas, bombas, gemas, poções, etc.)
- Equilíbrio entre "guns blazing" e "stealth" (possivelmente usar backstabbing contra inimigos desproporcionalmente fortes vide Attack on Titan)

### <span id="bkmrk--58"></span><span class="mw-headline" id="bkmrk-2.-navega%C3%A7%C3%A3o-1">2. Navegação</span>

- I. Visão: lateral
- II. Movimento: platformer
- III. Espaço: Talas com scroll + exploração metroidvania

### <span class="mw-headline" id="bkmrk-3.-objetivo-1">3. Objetivo</span>

- I. Character customization: different animal races
- II. Main character: SCIENTIST
- III. Fins energéticos vs. Fins bélicos
- IV. Conflito moral: usar bombas vs. stealth
- V. Vilão: empresa que roubou sua pesquisa
- VI. Itens de cura: café
- VII. Endings: bélico ou energia ou nihilism (shutdown research -&gt; barista)
- VIII. Amigo pesquisador trai

---

## <span id="bkmrk--60"></span><span class="mw-headline" id="bkmrk-parte-da-ata-da-reun-1">Parte da [ata da reunião do dia 24/2/2016](https://usp.game.dev.br/wiki2/books/atas-de-reunioes/page/reuniao-2016-02-24)</span>

Por facilidade, copiamos aqui a parte da ata desse dia que envolveu o brainstorm inicial de restrições/premissas do projeto.

### <span class="mw-headline" id="bkmrk-novo-projeto-1">Novo projeto</span>

Para o novo projeto, foi combinado fazer um jogo com todos os participantes da reunião. Para montar a proposta de jogo, foi feito um brainstorm direcionado. Cada um anonimamente propôs uma feature que queria ter no jogo (ou no processo de fazer o jogo) que seria imutável. O que saiu foi o seguinte:

- 1. Explosões
- 2. Conteúdo processual
- 3. Inteligência Artificial
- 4. Enredo forte
- 5. Save files
- 6. Código organizado (wtf)

Como as imposições ficaram muito genéricas, foi feito uma segunda rodada, dessa vez aberta:

- 7. Combate
- 8. Plot twists
- 9. Multiple endings
- 10. Steam Punk
- 11. Stealth
- 12. Upgrades

Esses doze pontos são os fundamentos do jogo, por mais que eles tenham ficado bastante genéricos... Cada um ficou responsável por dizer se o projeto está ou não satisfazendo as features que propês. Por exemplo, o Wil é responsável por dizer se o jogo satisfaz "Conteúdo processual" e "Steampunk". TEndo determinado essas features, discutimos e fechamos os seguintes aspectos fundamentais:

- a. Plataforma: desktop
- b. Play time: 8h
- c. Idioma: Inglês
- d. Real-time ou Turn-based: Real-time
- e. Jogador: personagem "folha em branco" com aparência minimamente customizável
- f. Ação principal: ainda não decidido

Além disso, outras premissas do projeto é que ele será feito na Godot e será 2D.

A próxima reunião será sexta-feira 26/2/2016, às 14h, na sala de reuniões. Ela já contará como uma reunião exclusiva do projeto novo.