Skip to content

v8.0 - Final release

Choose a tag to compare

@AlbyMiscy AlbyMiscy released this 14 Dec 17:25
· 2 commits to main since this release
8013c17

Pagina di start del gioco

Game

📌 Descrizione

In questo step NeoSnake compie un ulteriore salto di qualità, evolvendo da semplice gioco arcade a esperienza strutturata a livelli, con una gestione completa di UI, progressione, camera dinamica e qualità del gameplay.

Il focus principale di questa pull request è il consolidamento dell’engine di gioco e l’introduzione di schermate dedicate, mappe multilayer da CSV, spawn intelligente della frutta e sistemi di supporto al giocatore come la freccia direzionale.

L’architettura viene ulteriormente modulata: la logica di gioco, la gestione dei livelli e la UI sono ora ben separate, rendendo il progetto più leggibile, estendibile e manutenibile.


🎮 Gameplay & UX

  • Introduzione di un sistema di livelli progressivi basato sul numero di frutti raccolti
  • Implementazione della schermata di passaggio al livello successivo
  • Miglioramento del game over con restart del livello corrente
  • Sistema di pausa con overlay e navigazione da tastiera
  • Menu principale con sfondo tile-based e selezione interattiva
  • HUD score separato dalla view di gioco

🗺️ Mappe & Rendering

  • Nuovo sistema di mappe multilayer da CSV (sfondo, accessori, muri, pattuglie nemici)
  • Rendering ottimizzato tramite VertexArray e tileset condiviso
  • Correzione del texture bleeding tramite inset e smoothing disabilitato
  • Supporto a background animati/strutturati anche per menu e schermate UI

🍎 Logica di spawn avanzata

  • Spawn della frutta solo in celle valide
  • Verifica che la frutta sia raggiungibile dal serpente tramite A*
  • Evitata la generazione in muri, sul corpo del serpente o in aree isolate
  • Fallback di sicurezza per prevenire loop infiniti

🧭 Supporto al giocatore

  • Introduzione della freccia direzionale animata che indica la posizione della frutta
  • La freccia compare solo quando la frutta è fuori dall’area visibile
  • Rotazione e posizionamento dinamici rispetto alla camera

🎥 Camera & Movimento

  • Camera dinamica che segue il serpente con interpolazione fluida
  • Clamping automatico ai bordi della mappa
  • Separazione tra view di gioco e view UI

🧠 Engine & Architettura

  • Estensione dell’engine per:
  • gestione livelli
  • reset e restart controllati
  • collisioni avanzate (muri, nemici, corpo)
  • Migliore organizzazione della logica di update/draw/input
  • Riutilizzo del pathfinding anche per controlli di gameplay (non solo nemici)

📂 File principali coinvolti

NeoSnake
 │
 ├── 📂handlers/
 │   ├── draw.cpp
 │   ├── input.cpp
 │   ├── update.cpp
 │   ├── snakeFunction.cpp
 │   ├── fruitFunction.cpp
 │   └── arrowFunction.cpp
 │
 ├── 📂src/
 │   ├── engine.cpp
 │   ├── levelMap.cpp
 │   ├── enemy.cpp
 │   ├── pathfinding.cpp
 │   ├── main.cpp
 │   ├── snake.cpp
 │   └── fruit.cpp
 │
 ├── 📂ui/
 │   ├── mainMenuScreen.cpp
 │   ├── pauseScreen.cpp
 │   ├── gameOverScreen.cpp
 │   └── nextLevelScreen.cpp
 │
 ├── 📂header/
 │   ├── engine.hpp
 │   ├── levelMap.hpp
 │   ├── enemy.hpp
 │   ├── pathfinding.hpp
 │   ├── snake.hpp
 │   ├── fruit.hpp
 │   ├── iscreen.hpp
 │   └── resource_path.h.in
 │
 └── 📂resources/
     ├── 📂maps/
     │   └── levelXX/
     │       ├── mapCSV_wall.csv
     │       ├── mapCSV_grass.csv
     │       ├── mapCSV_grass_accessories.csv
     │       └── mapCSV_enemies_patrols.csv
     │
     ├── 📂backgroundMenu/
     ├── 📂texture/
     │   ├── 📂enemies/
     │   ├── 📂skin/
     │   ├── arrow.png
     │   └── fruit.png
     │
     └── 📂fonts/
         └── PressStart2P-Regular.ttf

🔗 Link utili