# RedCore Gabriel Capella, 8962078 João Herique Luciano, 8535957 EP2 MAC0463 O jogo desenvolvido nesse projeto foi um estilo brick-break onde o objetivo é avançar de fases atingindo o núcleo vermelho dentro das camadas de blocos. Os blocos em questão podem ser destrúidos ao serem atingidos pela(s) bola(s) em jogo. Satisfazendo alguns requisitos do trabalho, foram implementadas as seguin- tes funcionalidades: - Power ups-downs: aumento/diminuição da pá; bolas múltiplas (até 3); salvar o nível do jogo; super-bola, capaz de destruir qualquer tipo de bloco. - Fases aleatórias: as fases são geradas aleatoriamente, no sentido de variação do tamanho, cor e velocidade de rotação dos blocos. - Blocos móveis: os blocos se movem ao redor do núcleo. - Mais de um tipo de bloco: existem dois tipos de blocos (normais e indestrutiveis). Alguns detalhes que devem ser mencionados sobre a implementação: - Os power ups colidem com a bola, podendo ser jogados para fora do mapa (isso foi proposital para aumentar a dificuldade) - O nível salvo pelo jogo reduz em 1 para cada 12 horas sem jogar (queremos que o jogador jogue sempre que possível) - O jogo não tem pausa (propositalmente, também), pois o objetivo é conquistar o máximo de níveis possíveis numa jogatina ### Power-ups: - Aumento/diminuição da pá (power-up azul): tem 50% de chance de aumentar ou de diminuir a pá (diminuir pela metade e aumentar para o dobro do tamanho). A pá volta ao seu tamanho normal depois de um tempo. - Bolas múltiplas (power-up rosa): aumenta o número de bolas no jogo para 3. - Salvamento do nível (power-up verde): salva o nível atual do jogo - Super-bola (power-up): a bola pode destruir tanto os blocos normais quanto o bloco indestrutível. Ela volta ao normal depois de destruir um bloco indestrutível. ### Desenvolvimento O jogo foi desenvolvido originalmente com o framework cocos2d-x, em C++, para Android, e testado em um celular Motorola G4 com Android 7.0. Hoje o jogo é um projeto Godot 4.7 em GDScript, portado do código cocos2d-x mantendo o mesmo comportamento (geração de fases, power-ups, efeitos e sons). Para editar, abra o `project.godot` no editor Godot. - `scenes/`: cenas (título, jogo, bola, pá, power-up, efeito de explosão) - `scripts/`: um script por classe do jogo original (`blocks.gd` é o antigo `BlocksLayer`) - `assets/`: fonte e sons ### Fases Aleatórias Para deixar o jogo mais legal criamos fases aletórias. São infinitas fases. Comforme o nível são geradas são geradas fases na seguinte sequência: 1 fase de uma camada, 2 de duas camada, 3 de 3 camadas, até 8 fases de 8. Quando a oitava fase de 8 camadas é completa, o tamanho da camada é dividido por 1.5 e o ciclo se repete, mas agora com no máximo 12 camadas. Fases com o a mesma quantidade de camadas são destintas pois a probabilidade de blocos indestrutíveis aumenta conforme o jogador chega mais perto da última. ## Build O build roda dentro do Docker, com o Godot em modo headless. Antes de exportar, ele roda as duas cenas e falha se houver erros de script: ``` docker build --target test -t redcore-build . id=$(docker create redcore-build) && docker cp $id:/project/build/RedCore.x86_64 build/ && docker rm $id ./build/RedCore.x86_64 ``` Com BuildKit, `docker build --output build .` faz o mesmo em um passo. Por enquanto só o export para Linux está configurado. ### Link para o repositório https://git.capella.pro/capella/RedCore/