Apertura nuovo blog

Come preannunciato tempo fa, ho aperto dopo tanto il nuovo blog destinato a raccogliere quei post che non erano attinenti all'informatica, oltre a contenere i nuovi post di tal genere che pubblicherò.

Il link è: AsgardWalls
Chi vuole darci un'occhiata faccia pure (se siete tanto coraggioni o incoscienti).
In un'epoca dove tutti possono dire quello che vogliono ho pensato che era il caso di fare lo stesso. Almeno ci si sfoga un pochino.

Alla prossima!
Continua a leggere!

Avviso

Comunicazione di servizio:
per esigenze particolari dettate dalla mia mente contorta, forse qualcuno potrà notare che una trentina di post sono scomparsi dal blog.
Questo perchè ho deciso di ripulire il blog, lasciando questo solo per gli articoli riguardanti la programmazione.
Gli altri articoli/post andranno a finire in un altro blog, che vedrò di aprire il prima possibile, dove andrò a mettere tutta quella roba che non riguarda il mondo della programmazione (quindi recensioni, riflessioni, lamentazioni, bestemmioni vari).
Abbiate un po' di calma che ora come ora di tempo ne ho poco quindi la cosa andrà a rilento.

Saluti dal vostro amichevole Odino di quartiere (non mi uccidete per questa citazione storpiata XD) Continua a leggere!

Tanti auguri a me!

No, non sono impazzito...
Era ormai il lontano 06/04/2009 quando veniva pubblicato su questo blog il primo post, il primo post dopo il Ragnarok.
Tante cose sono accadute da allora, alcune buone ma la maggior parte mica tanto...

Tra una disavventura e l'altra siamo andati avanti, si è pubblicato un po' di roba (non tanta, ma ci si è provato).

L'intenzione di continuare, nonostante il poco tempo, c'è sempre.
Dovuta anche al fatto che bene o male un po' di visite ci sono sempre, per quanto questo sia un blog un po' strano...

Quindi faccio gli auguri a questo blog! Che possa continuare a prosperare!
E che la luce di Odino lo protegga! Continua a leggere!

Small Tutorial: testo a scomparsa tramite JavaScript (JS)

Quanti di voi hanno visto quei fantastici siti/blog dove ci sono i blocchi di testo che appaiono/scompaiono magicamente quando si clicca su dei link...
Sono fantastici vero? ^^

Bè oggi voglio spiegare un pochino come si fanno...
e vedrete che non è poi così complicato :)

Intanto quello di cui avete bisogno è di una funzione javaScript.
Senza entrare nel dettaglio del linguaggio quello che dovete aggiungere è quanto segue:

<script type='text/javascript'>
function openclose(name){
var elm = document.getElementById(name);
if(elm .style.display == &#39;none&#39;)
elm.style.display = &#39;block&#39;;
else
elm.style.display = &#39;none&#39;;
}
</script>


Questa funzione recupera dalla vostra pagina l'elemento con ID passato, e controlla se il suo stile display vale block o none.
In caso sia block lo imposta a none, e viceversa.

Ora, quando volete avere del testo/contenuti che compaiono/scompaiono fate un qualcosa di questo tipo:

<h2 style="cursor: pointer;" onclick="openclose('myElm');">Show∇</h2>
<div id="myElm" style="display: none;">
<h2 style="cursor: pointer;" onclick="openclose('myElm');">HideΔ</h2>
</div>


All'interno del div mettete quello che vi serve e avrete un effetto simile ^^

Show∇




byez^^

Continua a leggere!

Internet Explorer.... una chiavica di browser...

In un mondo pieno di Browser, in continua evoluzione, dove quasi ogni giorno centinaia di utenti decidono di navigare su internet...
Perchè la gente continua ad usare IE?

Sto avendo modo ultimamente di di lavorare a delle applicazioni internet, e ogni volta che faccio qualche modifica devo controllare come risponde il tutto su Fire Fox (il quale di solito lavora bene, raramente ti fa incazzare), per poi passare a Internet Explorer.

Come mai solo questi due direte voi?
Perchè da soli fanno circa il 95% delle visite di un sito. Lo so che chi usa Opera o Chrome ora mi linceranno, ma non ci posso far nulla, lo dicono le statistiche.
E le statistiche (mie) mi dicono che ogni volta che devo vedere lle modifiche su IE, il 70% delle volte sono bestemmie!

Nel senso che:

  1. funziona ma con qualche piccola differenza

  2. funziona così così

  3. funziona male

  4. non funziona per nulla



Ma quando gli costerà alla Microsoft mettere una schiera di sviluppatore/programmatori/debuggatori (me lo passate sto francesismo?) a correggere il tutto e a farlo funzionare per bene?
E invece no...
Si ostinano ancora a fare come vogliono loro...

VI PREGO! ADERIAMO AGLI STANDARD CAVOLO!

Una piccola vendetta per gli utenti di IE?
Beccatevi questo:

Sei un mona?
Se vedi il bordo smussato hai la superato la prova e non sei un mona.

Se vedi un fotutto rettangolo sei un mona! Cambia subito browser!
Firefox
Opera
Chrome


Alla prossima!
Continua a leggere!

The Xna-Way: Terrain Editor - Update 1

Aggiornamento sul terrain editor.

Dopo diversi giorni di lavoro, che sono stati più di quanto avessi preventivato all'inizio (non tanto per la complessità del problema, ma il fatto è che sono stato rallentato da problemi personali) direi che sono quasi alla fine della base di questo progetto.
Cosa è stato fatto in questo periodo?

Il codice è stato organizzato in modo che il controllo/editor del livello contenga due oggetti separati definiti come TerrainEditor e ModelLevelEditor. Tali oggetti vanno a riferire lo stesso oggetto Level, solo che il promo va a modificare il terreno e le texture del terreno, mentre il secondo da la possibilità di modificare in modo agevole i modelli presenti nel livello.

Questi oggetti come si è capito danno specifiche funzioni che agiscono su una parte del modello dell'applicazione.

Tra le caratteristiche comuni ad entrambi c'è la coda delle operazioni svolte: posso cioè tornare indietro con le operazioni svolte e ripristinare lo stato precedente alla modifica fatta, questo per ogni operazione possibile (editing del terreno, editind delle texture del terreno, editing delle trasformazioni spaziali del modello). Ancora è da rifinire e perfezionare, ma per ora funziona.

Ho aggiunto la possibilità di importare oggetti 3D a runtime, cioè non compilati a posteriori da XNA tramite il Visual C# o VS. Questa parte devo dire mi ha impegnato un po', ma solo per il fatto che non capivo come re-indirizzare il compilatore alla giusta versione delle dll da usare.
Ora, tramite un sistema di Builder e ContentManager, "compila" a tempo di esecuzione i file che deve importare nella scena. Il tutto rallenta un po' (dato che la compilazione/importazione dei modelli nel formato compatibile con XNA impiega un po' ti tempo; forse potrei ottimizzare aggiungendo in futuro la compilazione in un thread separato, in questo modo, almeno al caricamento di un livello precente otterrei un tempo minore), ma funziona.
Unica "pecca": dato che non riesco ancora a trovare il riferimento a tutti i file necessari per la compilazione di un modello (texture e simili) sarà compito di usa il modello copiare poi nella cartella/directory che più preferisce i file necessari al corretto funzionamento del modello nel livello.

A cosa serve poter importare oggetti nel livello se poi non si possono usare? Ho aggiunto quindi la possibilità di inserire/eliminare modelli dal livello tramite il mouse. Lo stesso dicasi per quanto riguarda la traslazione/rotazione/scaltura degli stessi.
Per le trasformazioni spaziali degli oggetti ho creato ed aggiunto degli assi cartesiani, per ora molto semplici, che permettono di postare l'oggetto.

Dato che le modifiche possibili sono diventate varie, ho deciso di rendere modulare il modo di agire sui dati.
L'applicazione permetterà di modificare la parte del modello che vogliamo modificare: tramite dei radio button (o con un short-cut) si può passare dalla modalità di editig del terreno, alla modalità di editing delle texture ed infina a quella dei modelli.
Forse è un po' scomodo all'inizio, ma se si pensa che in altri programmi professionali fanno cose simili (ok forse è esagerato comparare questo sgorbio che sto facendo con programmi professionali, ma a qualcuno/qualcosa ci si deve pur ispirare no?).

Aggiunta la possibilità di caricare nuove immagini da usare nei brush per la modifica del terreno, e queste immagini poi saranno copiate nella directory dei terrain brush e ricaricate al riavvio successivo.
Credo che andrò a fare una cose del genere anche per le texture usate per il terreno, in modo che quando si vorrà poi riusare il livello creato in un gioco (ma chi mai andrà a farlo mi domando io XD) almeno avrà parte dei dati raggruppati e più facilmente utilizzabili.

Per ora non credo di avere altro da aggiungere.
Se ho dimenticato qualcosa aggiungerò in seguito.

Vi lascio con uno screen del programma:


Per le percentuali di lavorazione:
Terrain Editor Journal

Alla prossima ^^

PS: non credo che molti avranno qualcosa da dire, ma in caso contrario che dite tutto quello che vi passa per la testa! Curiosità, possibili correzioni, cosa da fare/aggiungere.
E se avete qualche curiosità sul codice ditelo, e vedrò di pubblicarlo! (almeno in parte ^^)
Continua a leggere!

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!

Donazioni

My Menu'