Nessuna descrizione

Gabriel Capella be34c4e06a Add 10 powers, 7 segment kinds and a level progression that only gets harder 5 giorni fa
assets b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa
scenes be34c4e06a Add 10 powers, 7 segment kinds and a level progression that only gets harder 5 giorni fa
scripts be34c4e06a Add 10 powers, 7 segment kinds and a level progression that only gets harder 5 giorni fa
.dockerignore b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa
.gitignore b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa
Dockerfile b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa
README.md be34c4e06a Add 10 powers, 7 segment kinds and a level progression that only gets harder 5 giorni fa
export_presets.cfg b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa
manual.md 7060ab9ab9 Transformado manual de .txt para .md 9 anni fa
project.godot b1babde37e Finish the Godot migration and remove the cocos2d-x version 5 giorni fa

README.md

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:

Os power-ups caem como fichas com uma letra; pegue com a pá para usar. Novos power-ups aparecem conforme os níveis avançam:

Ficha Power-up A partir do nível Efeito
S Salvar 0 Salva o nível atual
3 Bolas triplas 0 Até 3 bolas em jogo (cai quando a bola fica muito tempo sem tocar em nada)
P Tamanho da pá 0 50% de chance de dobrar ou reduzir a pá pela metade por 10 s
X Super-bola 0 Quebra um bloco indestrutível; só cai se ainda houver um
Z Câmera lenta 2 Bolas a 60% da velocidade por 8 s
C Pegar 4 A pá segura a bola por 12 s; solte o dedo para lançar
U Escudo 6 Uma barreira no fundo salva uma bola
O Bola grande 8 Bola 60% maior por 10 s
F Bola de fogo 12 Atravessa e quebra blocos por 5 s
! Pressa (negativo) 15 Bolas 35% mais rápidas por 6 s
L Laser 20 A pá atira dois lasers por 6 s
* Congelar 25 Os anéis param de girar por 8 s
B Bola bomba 30 O próximo bloco atingido explode
H Teleguiada 40 A bola curva em direção ao núcleo por 6 s

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

As fases são geradas aleatoriamente e são infinitas. A dificuldade só aumenta com o nível: mais anéis (até 14), anéis girando mais rápido, bola mais rápida, mais blocos indestrutíveis e mais power-ups negativos.

A cada 50 níveis aparece um novo tipo de bloco, e a fração de blocos especiais cresce de 8% no nível 50 até 50%:

Nível Bloco Comportamento
50 Água 3 toques; esvazia a cada toque e segura a bola por um instante
100 Gelo 2 toques; racha no primeiro e acelera a bola
150 TNT Explode ao quebrar, levando os vizinhos (em cadeia)
200 Borracha 2 toques; rebate a bola mais rápido
250 Fantasma Some e reaparece; a bola atravessa quando ele some
300 Musgo Cresce de novo uma vez, 8 s depois de quebrado
350 Ímã 2 toques; puxa a bola quando ela passa perto

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/