The Xna-Way: Terrain Editor Journal

Questo post sarà il giornale di sviluppo che dedicherò al terrain editor.
Aggiornerò di volta in volta con le modifiche che farò, con le possibili modifiche/update da fare al programma, gli errori (e quando riesco a risolverli anche come ho fatto XD).
Se poi ci saranno articoli relativi a pezzi di codice del Terrain Editor saranno linkati anche qui.

Quello che mi sono prefisso di fare inizialmente era di creare un Terrain Editor, in modo da poterlo poi utilizzare per creare i livelli di gioco per i miei futuri progetti (sempre pensare in grande perchè poi a forza di tagliare resta sempre poco XD).
Ho quindi poi deciso di ampliare il progetto permettendo di aggiungere oggetti alla scena.
Quindi da "semplice" terrain editor sono passato a voler fare un "semplice" Level Editor (con un formato mio personale).

I fondamenti sono i seguenti:
- Uso di un'immagine come Height Map (HM) per la creazione del terreno di base.
Un'immagine ha 4 canali per il colore (RGBA), ed ho deciso di utilizzare solo le informazioni presenti nel canale R per la creazione del modello del terreno. In questo modo gli altri canali potranno essere utilizzati per memorizzare altre informazioni (per esempio le zone in cui è possibile "camminare", posizione di alcuni oggetti di scena, etc)
Usando il valore di un singolo colore per l'altezza del vertice, il valore dell'altezza può variare tra 0-255 (estremi compresi).
Per ampliare il range di valori posso utilizzare un fattore di scala (positivo) per il quale moltiplicare il valore dell'altezza del vertice.
Avrò un fattore di scala anche per la dimensione del del modello lungo gli assi X-Z (in questo modo il fattore di scala per la larghezza sarà diverso e distinto da quello per l'altezza).

- Possibilità di editare il terreno, modificando l'altezza dei vertici che compongono il modello.
Cioè saranno dati dei brush con i quali sarà possibile modificare la mesh del terreno. Ad ogni brush (a seconda della funzionalità che deve espletare) può avere associata un'immagine, la quale verrà utilizzata per modificare la posizione dei vertici. L'immagine associata potrà essere cambiata a seconda del tipo di modifica che si vuole fare, e sarà in BN (o in caso non sia in BN verrà usato solo il valore del canale R, come per la HM usata per costruire il terreno).

- Possibilità di salvare il terreno prodotto come immagine.
Per quando ci saranno dei possibili modelli sul terreno dovranno essere salvati anche le informazioni sui modelli (forse serializzando con XML), come anche le informazioni sulle luci della scena, etc.

- Possibilità di utilizzare 4 texture per la colorazione del terreno. Per ora il numero è limitato a 4 per una maggiore semplicità di programmazione (e per la struttura dei vertici usati): difatto utilizzare più di 4 texture è "la stessa cosa" che usarne 4, solo che i casi da discriminare sono di più. Sarà possibile utilizzare le varie texture in base all'altezza dei vertici, o texturizzare a mano il terreno.

A presto per degli aggiornamenti

Stato attuale:
  • Caricamento HM e creazione terreno partendo dall'immagine: 100%
  • Caricamento altre informazioni dall'immagine: 100%
  • Salvataggio terreno editato: 100%
  • Uso di un file XML per la memorizzazione di altre informazioni sul livello: 100%
  • Definizione di Brush personalizzati atti alla modellazione del terreno: 100%
  • Salvataggio/caricamento brush ed immagini dei brush: 100%
  • Possibilità di texturizzare il modello in base all'altezza dei vertici o a mano: 100%
  • Possibilità di creare ed aggiungere nuovi brush: 0%
  • Possibilità di modificare le texture usate dal modello: 100%
  • Possibilità di aggiungere/gestire modelli al livello: 100%
  • Possibilità di aggiungere/gestire luci nel livello: 0%
  • Possibilità di fare degli screenshot/render del terreno: 0%
  • Algoritmo di intersezione mouse-VS-poligoni: 100% (Implementato algoritmo ricorsivo a partizione dello spazio per la l'indificazione del vertice più vicino al puntatore)
  • Algoritmo di editig dei vertici del modello: 100%
  • Algoritmo di texturing: 100%
End
Continua a leggere!

The Xna-Way: Terrain Editor

Come avevo detto tempo fa, non ho molto tempo per scrivere qualcosa su XNA da postare qua, ma non per questo vuol dire che non stia andando avanti in qualche modo.

Ho recentemente iniziato un progetto per l'università (o almeno spero che possa usarlo per un esame universitario), che per ora ha il nome di Terrain Editor.
Lo sto sviluppando usando C# ed XNA (se no cola cavolo che ne parlavo sotto Xna-Way XD), e per ora si prospetta come un semplice editor di terreni.
Alcune immagini:



Quello che mi sono prefisso di fare è di creare un piccolo editor di livelli, in modo da poter creare delle mappe da poter usare in un gioco o quello che ci pare.
I "livelli" per ora composti solo dal terreno, sono costruti partendo da delle immagini (usate come Height Map), in modo da poter usare i colori per posizionare i vertici.
In seguito voglio aggiungere altre caratteristiche, tra le quali per ora ho messo:
- editare il terreno (se no che Terrain editor sarebbe...) (già in parte implementato)
- definire zone in cui è possibile camminare o meno
- possibilità di aggiungere oggetti al livello e posizionarli nella scena
- Multitexturing del terreno (questo già in parte implementato)

poi mano a mano che mi vengono in mente le aggiungerò.
Quando avrò tempo credo che posterò qualche pezzo di codice più interessante (non che per il momendo ce ne sia poi molto).
Spero che il progetto vi piaccia (e nel caso possa usarlo come progetto d'esame che piaccia anche al prof!).

Un salutone!
A presto!
Continua a leggere!

Donazioni

My Menu'