My Fruit Worth
Raccogli tutta la frutta che cresce nel tuo giardino.
Apri My Fruit Worth (nuova scheda)Un breve prototipo di gioco in cui il giocatore raccoglie la frutta in giardino allenando la rapidità di decisione e il riconoscimento visivo. Realizzato per il corso di Computer Graphics 5160, con ogni vista 3D proiettata e disegnata a mano.
GiocaComandi e gioco
- Movimento: vai avanti o indietro nella direzione in cui guardi e gira con le frecce Sinistra e Destra.
- Interazione: quando sei abbastanza vicino a un frutto, premi la barra spaziatrice per raccoglierlo e metterlo nel cesto.
- Ricomincia: premi R per ricominciare in qualsiasi momento.
- Grafica: scegli tra tre stili visivi con i pulsanti di opzione.
- Vittoria: quando hai raccolto tutta la frutta compare una schermata di vittoria; premi R per giocare di nuovo.
Panoramica tecnica
Ogni tipo di oggetto del gioco (house, bush, fruit) è definito da un insieme di vertici, spigoli e facce costruite su quei vertici.
Le istanze degli oggetti vengono create con posizione e scala proprie, poi proiettate con il metodo della camera a foro stenopeico: x e y vengono divise per z per rendere la profondità.
Livelli della pipeline grafica
Livello 1
- Scorre ogni istanza di oggetto, saltando la frutta già raccolta.
- Applica posizione, scala e proiezione dei vertici a ogni modello.
- Ordinamento per profondità: ordina dalla z più grande alla più piccola, così la geometria più lontana dalla camera viene disegnata per prima e quella più vicina sopra.
- Rendering: disegna le facce con HTML5 Canvas:
beginPath(), percorre i vertici della faccia conmoveTo(), poiclosePath()efill().
Livello 2
- Inizializza una griglia di 320 × 200.
- Scorre tutte le istanze degli oggetti, saltando la frutta raccolta.
- Scala, posiziona e proietta ogni vertice sulla griglia, tenendo solo i punti davanti alla camera.
- Disegna ogni spigolo a partire da (u₁, v₁), avanzando pixel per pixel lungo x e sommando la pendenza a ogni passo per colorare la linea.
Livello 3
- Inizializza la griglia e salta la frutta raccolta.
- Posiziona e scala ogni istanza e ne memorizza i vertici proiettati.
- Per ogni oggetto, scorre le facce visibili, tagliando la geometria dietro la camera.
- Rasterizzazione dei triangoli: trova il riquadro che contiene i tre vertici di ogni faccia, poi verifica ogni pixel con le coordinate baricentriche per colorare solo quelli dentro il triangolo.
Problemi noti
- Rilevamento delle collisioni: le collisioni non funzionano del tutto. Andando dritto contro la facciata di una casa ci si ferma, ma avvicinandosi di sbieco dopo aver girato la si può attraversare.
Miglioramenti futuri
- Ciclo giorno/notte: un sole che tramonta come timer di gioco, scurendo piano piano il cielo.
- Meteo: meteo e nuvole dinamici.
- Cesto a schermo: un cesto che si riempie man mano che raccogli la frutta.
- Social: una classifica giornaliera.