Su Opera non si garantisce il corretto funzionamento del puntatore del mouse.
Su chrome e firefox si garantisce il funzionamento del puntatore del mouse se gli fps sono maggiori di 15.
Il progetto ripropone il gestore del mondo di populous semplificato in chiave voxel con alcune capacità divine, quali il
terremoto, lo tzunami e la meteorite.
Vi è inoltre la presenza di un Camminatore Errante, immortale, e incapace di nuotare, difatto quando dovesse cadere in acqua profonda si
trasporterebbe magicamente da un altra parte.
L' interfaccia si compone di un tastierino sulla sinistra con le seguenti feature dal alto-sinistro muovendosi per righe crescenti:
-
8 bottoni direzionali per muoversi nelle varie direzione (se fine mappa non si muove)
-
bottone per trovare il Camminatore Errante
-
2 bottoni per gestire l'altezza terreno
-
bottone potere terremoto
-
bottoni per lo zoom
-
bottoni per ruotare la mappa
-
bottone potere tzunami
-
bottone potere meteorite
sulla destra una bussola che indica la posizione, il tutto su un tavolo al cui centro si può vedere la mappa dela mondo modificabile.
Premendo WASD si va a interagire con la posizione mentre con Q ed E si ruota e con + e - si effettua uno zoom
-
altezza Terreno: si può alzare o abassare il terreno andando a premere i bottoni adeguati e cliccando poi la mappa
-
Terremoto: il Terremoto va a modificare l'aspetto del terreno alzando e abassando l'altezza massima dei blocchi con una semplice animazione di tutta la mappa al centro, simulando un terremoto ondulatorio
-
Tzunami: lo Tzunami va ad alzare l'acqua con una mappa a punti,non interferisce in nessun modo con il terreno ma ha solo carattere grafico
-
Meteora: la Meteora crea un meteorite che va a inpattarsi con il terreno ove si è cliccato dopo averlo selezionato, all'impatto genera un cratere di dimensioni circa 6x6 di profonidità 3, modificando il terreno
-
28/10/19:
- Progettazione idea simil populous
- Studio funzionamento HeightMap, implementazione
-
29/10/19:
- Implementazione del "crop" nel terreno del mondo
- initiateTerrain() : inizializza la mappa
- updateTerrainVis() : passa alla scena solo il terreno "utile"
- onDocumentKeyDown(): input della tastiera per muovere il "crop" della mappa
- uso della camera ortogonale
- resize del renderer al resize schermo
- onWindowResize() : resize view
- La mappa si muove al premere dei btn WASD sino al bordo
- Implementazione del "crop" nel terreno del mondo
-
30/10/19:
- Implemetazione shader material sabbia
- con luccichio e ombra posizionale non trasmessa
- Implemetazione shader material sabbia
-
31/10/19:
- Implemetazione shader material erba
- con ombra posizionale non trasmessa e movimento
- Implemetazione shader material acqua
- con luccichio e movimento
- Implemetazione shader material neve
- con luccichio e ombra posizionale non trasmessa
- materiale(posY) : setta materiale in base all'altezza
- Implemetazione shader material erba
-
1/11/19:
- Aggiunta bottoni comando x posizione
- initiateButton() : posizione
- Implementazione funzione per alzare o abassare il terreno e bottoni per controllarlo
- modifyTerrainHigh(position,value) : aumenta altezza terreno in posizione position di un valore value
- onDocumentMouseMove() : per estrapolare posizione mouse
- onDocumentMouseUp() : per quando si lascia il bottone
- onDocumentMouseDown() : per intercettare cosa si clicca sullo schermo
- initiateButton() : add, subtruct height
- aggiunti btn per terremoto, tzunami(errore di alpha), meteorite(ancora non implementato)
- terremotoAction() : gestione terremoto
- waveAction() : gestione tzunami
- initiateButton() : terremoto, tzunami e meteorite
- rotazione con correzione di direzione e zoom in/out
- initiateButton() : +, - per lo zoom
- vertexWater tzunami ma errore alpha
- Aggiunta bottoni comando x posizione
-
2/11/19:
- correzione alpha dello tzunami e suo aspetto
- implementazione meteorite senza texture con funzionalità del impatto
- meteoraAction(positione) : gestore meteora data la posizione di dove dovra colpire
- correzione direzione
- directionAction(dir) : gestione direzioe data la rotazione (0 = north, 1 = north-est, 2 = est, ... , 6 = west, 7 = nort-west)
-
3/11/19
- aggiunta bussola con direzione
-
4/11/19
- Implemetato fasi giorno notte, con passaggio poco sfumato
- implementato orologio in alto a sinistra per fasi giorno
- correzione bug di shader
-
5/11/19
- bug direzione sfalsata
- implementato effetto esplosione con fragment e vertex, e oggetto esplosione
- meteoraAction(positione) : crea anche l'intervallo per gestire l'animazione delle esplosioni
- implementato shader meteora
- correzione colori
- la mappa ruota al premere di Q(orario), E(antiorario)
-
6/11/19:
- implementato camminatore errante nella mappa
- Entity(model) : crea il un entity dato un modello (Mesh+Armature)
- implementato camminatore errante nella mappa
-
7/11/19:
- implementata animazione camminatore errante
- aggiunto bottone per centrare il camminatore
- puntaCamminatore() : sposta il cropWorld per mostrare il camminatore
- correzione movimento camminatore ("no in acqua" e no camminata oltre 2 blocchi altezza)
- implementato un loadState per controllare lo stato del caricamento
-
8/11/19:
- Corretto combattimento sulla Z tra table e i bottoni
- ritocco di alcune texture
-
9/11/19:
- correzione bug posizione meteora alla rotazione della mappa
- correzione teletrasporto Camminatore Errante in caso di caduta in acqua
-
10/11/19:
- correzione bug posizione meteora al spostamento e rotazione durante la sua animazione
- correzione limite scalino altezza Camminatore Errante
- immagini e texture Paint.net ver: 4.205
- shader test ShaderToy
- editor di testo Notepad++ ver: 7.7.1
- server Web Apache ver: 2.4
- Modellazione 3D Blender ver: 2.8
- materialBussola : fragmentBussola, vertex
- materialButton : fragmentButton, vertex
- materialSnow : fragmentSnow, vertex
- materialSand : fragmentSand, vertex
- materialBadRock : fragmentBadRock, vertex
- materialWater : fragmentWater, vertexWater
- materialGrass : fragmentGrass, vertexGrass
- materialExplosion : fragmentExplosion, vertexExplosion
- materialMeteora : fragmentMeteora, vertexMeteora