Tuesday, March 25, 2014

Still alive!

E' passato molto dal mio ultimo post. E son cambiate tantissime cose nella mia vita e nel panorama informatico.
Ma non ho dimenticato il mio hobby.
La faccio breve: il lavoro che ho non mi da modo di dedicare il tempo che avevo prima al mio progetto. Bene da un lato, ovviamente un po' però mi spiaceva aver dovuto mettere in soffitta Tau Ceti. Sicuramente seguendo la strada di Ogre e del C++ non sarei andato da nessuna parte specie con la diminuzione del tempo libero a disposizione: ci vuol troppo impegno, troppe risorse, è già un miracolo quel che son riuscito a fare in passato.
Nel frattempo però la tecnologia è andata avanti, processori e schede video son divenuti più potenti e quindi perché doversi ostinare ad usare strumenti complessi da usare? Mi son guardato attorno e ho scoperto che esiste un motore 3D scritto in Java, completamente open source, e che ha capacità impressionanti. Si chiama jMonkeyEngine e lo trovate qui: Homepage jMonkeyEngine

Il vantaggio di usare Java rispetto a C++ è che rende estremamente più veloce lo sviluppo, non serve star li' a preoccuparsi di risorse da deallocare o cose del genere. Inoltre l'engine mette a disposizione un sacco di strumenti per importare mesh, creare interfacce utente, è persino gestita la fisica, insomma non c'è proprio paragone, con tutto rispetto del team Ogre che sta facendo comunque un ottimo lavoro.

Ad ogni modo: ho voluto ricominciare dall'aspetto procedurale dell'universo, cosa che ho sempre tralasciato troppo distratto com'ero dal 3D.
E son voluto partire dalla creazione della galassia.
Grazie a java è stata un'impresa abbastanza semplice ed ho qualcosa da farvi vedere subito.


Questa è la galassia, in tutto il suo splendore. Proviamo ad ingrandire del doppio


Raddoppiamo ancora lo zoom


La cosa interessante a sto punto è se ingrandisco ancora del doppio:


Notate?Iniziano a vedersi le singole stelle. Ancora un ingrandimento:


Morale: la galassia è formata da un numero immenso di stelle: agli ingrandimenti più bassi non è possibile distinguere le singole stelle, ma ingrandendo sempre di più siamo in grado di scorgerle.
Quante sono le stelle di questa galassia? Attualmente 508 milioni di stelle. Per l'esattezza: 508523328.
Se dovessi realmente salvare ogni singola posizione di quelle stelle mi occorrerebbero almeno 4 gigabytes. 
Invece, usando una tecnica procedurale son riuscito a fare tutto con soli  532 kilobytes. Ovvero 75 mila volte di meno di memoria occupata.
Non male. 







4 comments:

Anonymous said...

Fico!
Ora devi solo rendere unico e interessante ciascuno dei milioni di sistemi stellari...

Anonymous said...

Adesso s'inventa un engine che crea mondi random. Un po' come ha fatto dio...

elJeppo said...

Java è un linguaggio omosessuale, per fare un lavoro veramente maschio avresti dovuto rifare tutto in assembly

Marco said...

Bentornato!
Sono veramente contento di rivederti su questi lidi!! E curioso di vedere che codice hai usato per creare una galassia?
Perché non condividi tutto su github con un readme molto semplice per compilare il tutto?