![UPENDI](/branding/upendi_logo.png) # JuggleBoard Game Un gioco arcade **reaction & chaining** per dispositivi mobili (orizzontale), realizzato in **Godot 4.7** (GDScript). **Prodotto per la [Cooperativa Sociale UPENDI](https://www.upendi.it/)** (Gravina in Puglia) — Pedagogia del Circo e Circo Sociale. > Il logo UPENDI è stato generato con l'API Gemini. Un gioco arcade **reaction & chaining** per dispositivi mobili (orizzontale), realizzato in **Godot 4.7** (GDScript), ispirato al prodotto riabilitativo "Juggle Board". ## Gameplay - **5 corsie orizzontali**, ognuna con una **pallina colorata** a riposo sul lato destro. - Un **bersaglio in alto** indica quale pallina toccare. - Toccando la pallina giusta: scivola a sinistra e poi torna a destra, con un **suono di conferma**. - Un nuovo bersaglio appare **solo se c'è almeno una pallina a riposo**. - Devi concatenare i lanci **prima che scada il timeout**: più concateni, più punti (combo). - **Difficoltà crescente**: il tempo parte molto disteso (~4,5s) e **si riduce** con il tempo trascorso e il punteggio. - **Tap sbagliato** → suono di errore e reset combo (nessun game over). - **Combo con decadimento**: il combo cresce con i tap rapidi ma **si riduce pian piano** in proporzione al tempo che aspetti prima di cliccare la pallina bersaglio (rate configurabile `COMBO_DECAY`). - **Timeout scaduto** → suono dedicato, reset combo, nuovo bersaglio (nessun game over). - I suoni (lancio, errore, timeout) sono generati proceduralmente in 8-bit. ## Requisiti - Godot 4.x (sviluppato e testato con 4.7.1, renderer GL Compatibility). ## Eseguire ```bash # dal percorso del progetto godot --path . ``` Oppure apri il progetto con l'editor Godot (`godot -e .`) e premi **Play** (F5). ## Controlli - **Desktop**: click del mouse sulla pallina. - **Mobile**: tocco sullo schermo. ## Struttura ``` project.godot # configurazione (viewport 1280x720, landscape, GL Compatibility) icon.svg scenes/ main.tscn # scena principale (radice Node2D + script) scripts/ main.gd # logica di gioco, HUD, punteggio, difficoltà ball.gd # pallina: Area2D, scivolata sinistra↔destra, input target_dot.gd # indicatore del colore bersaglio ``` ## Personalizzare la difficoltà In `scripts/main.gd` (sezione "Tuning difficoltà"): - `START_TIME` → tempo iniziale tra un ordine e l'altro (s). Più alto = partenza più distesa. - `MIN_TIME` → tempo minimo (velocità massima) raggiunto a difficoltà piena. - `TIME_RAMP` → secondi di gioco per raggiungere la difficoltà piena. - `SCORE_RAMP` → punteggio per raggiungere la difficoltà piena. La difficoltà cresce col massimo tra il fattore-tempo e il fattore-punteggio. ## Esportazione mobile Installa dal Project Manager il template **Android** (o iOS su macOS), poi *Project → Export* con preset `Android` / `Web`.