Post

Visualizzazione dei post con l'etichetta Sviluppo

Configurare Progetto SDL 2.0 per Windows (Visual Studio)

 Download su  https://www.libsdl.org/ Development Libraries: SDL2-devel-2.0.12-VC.zip (Visual C++ 32/64-bit) Estrarre contenuto in cartella di sviluppo (es. c:\DEV) rinominandola (es. c:\DEV\SDL2)

Post n. 376243dgfdy_x

Poche righe per dirvi che esistiamo ancora. E anche il nostro progetto più ambizioso non è sparito. Emblemata continua ad esistere... e forse un giorno vedrà la luce. Buona estate a tutti voi da Polpetta Games

Hello world - Unity - Asset import settings best practies

Models Import Settings Negli import settings dei modelli ci sono diverse flag, ovviamente le opzioni variano da modello a modello. L’idea di massima e’ selezionare solo quelle che ci interessano ed evitare di importare qualsiasi cosa non necessaria. Di seguito alcuni esempi: Qui la doc: http://docs.unity3d.com/Manual/FBXImporter-Model.html Read/Write enable : NO a meno che non serva modificare la mesh a runtime.. Import blendshapes: NO Import Materials: NO unity importa i materiali nella stessa cartella dei modelli e genera disordine. Inoltre spesso non e’ in grado di scegliere shader e texture correttamente. Tanto vale farseli a mano cosi siamo sicuri di non sbagliare. Generate Colliders: NO Generate LM UVS: DIPENDE SE STATICI CON LIGHTMAP Optimize Mesh: SI Normals: meglio importarle se il modello le ha, altrimenti farle generare.. di norma servono sempre. Tangents: se le ha importarle altrimenti generarle SOLO SE si usano Bumpmap o simili Rig->...

Hello world - Elenco Software & Tools

Ecco un piccolo elenco degli strumenti che utilizzo di solito: CMake Gimp Git Inkscape LibreOffice LyX Notepad++ Skype TortoiseGit WinMerge Visual Studio E voi cosa usate?

Hello world - Formule Utili

//Distanza tra due punti -------------------------------------------------------------- double Distance(Vect2d p1, Vect2d p2) {   double dx = p2.x - p1.x;   double dy = p2.y - p1.y;   return sqrt((double)dx*dx + dy*dy); }; //Distanza tra un punto e un segmento -------------------------------------------------------------- double DistanceToLine(Vect2d lineP1, Vect2d lineP2, Vect2d point) {   double normalLength = _hypot(lineP2.x - lineP1.x, lineP2.y - lineP1.y);    double distance = (double)((point.x - lineP1.x) * (lineP2.y - lineP1.y) - (point.y - lineP1.y) * (lineP2.x - lineP1.x)) / normalLength;   return abs(distance); }

Hello world - Distanza tra 2 punti

double   Distance ( Vect2d   p1 ,  Vect2d   p2 ) {    double   dx  =  p2 . x  -  p1 . x ;    double   dy  =  p2 . y  -  p1 . y ;    return   sqrt (( double )  dx * dx  +  dy * dy ); }

Hello world - Estendere un segmento

Immagine
   Vect2d   LineP1 ,  LineP2 ;    double   m_MarginLeft = -1000 ,   double   m_MarginRight = 1000 ;    Vect2d   newLineP1 ,  newLineP2 ,  delta ;    delta . x  =   LineP2 . x  -  LineP1 . x ;    delta . y  =   LineP2 . y  -  LineP1 . y ;    double   ratio  =  delta . y  /  delta . x ;    newLineP1 . x  =  m_MarginLeft ;    newLineP1 . y  =  LineP1 . y  - (( LineP1 . x  -  m_MarginLeft ) *  ratio );    newLineP2 . x  =  m_MarginRight ;    newLineP2 . y  =  LineP2 . y  + (( m_MarginRight  -  LineP2 . x ) *  ratio );

Hello world - GameState GameData

Immagine
L’organizzazione dei dati di gioco può essere rappresentata innanzitutto distinguendo i dati statici, solitamente di sola lettura, e i dati dinamici che rappresentato le informazioni dell’utente e la sua evoluzione nel gioco. I dati statici ( Game Data ) sono l’insieme di tutte le informazioni e le definizioni degli elementi presenti in gioco. Essi contengono ad esempio la descrizione dei livelli e di tutti gli oggetti in essi contenuti, gli oggetti dello Store con relative descrizioni, prezzo e condizioni per essere sbloccati, gli elementi collezionabili. I Game Data vengono caricati all'avvio del gioco e sono accessibili da tutti i componenti che lo richiedono. NOTA Tutti gli elementi del gioco sono identificati da un Id univoco. I dati dinamici ( Game State ) costituiscono lo stato di gioco del player. Possono esistere uno o più Game State se il gioco prevede la possibilità di effettuare più salvataggi o la gestione di più utenti. Essi contengono le informazioni bas...

Hello world - Rogue - Prototipo1

Immagine
Ecco una prima schermata del prototipo. Si può vedere la struttura della mappa, l'eroe, 3 oggetti e un nemico.  In sovrimpressione l'interfaccia dell’Input, info HP e messaggi di gioco.

Hello world - La struttura classica di un videogame

Senza addentrasi nello specifico di singoli progetti, per i quali potrebbero essere necessarie strutture alternative se non completamente personalizzate, vorrei descrivere in breve quelle che sono le componenti frequenti che si possono trovare in un videogame. Nota. I post successivi che tratteranno questo argomento avranno come parola chiave “Struttura”, detto ciò: Benvenuti in struttura! Supponiamo di avere una classe principale che gestisca la logica del gioco, chiamiamola MainGame. Questa avrà i metodi: Initialize() {         Crea, Carica, Istanzia e Configura tutti gli elementi del gioco (Personaggi, Grafica, Audio, Stato di Gioco)         Può essere strutturato come un insieme di chiamate a metodi Initialize() o Load() degli elementi detti sopra.         Quando tutto è pronto lo notifica o avvia direttamente il fase di gioco. } La fase di gioco si p...

Hello world - Rogue - Le Mappe

Immagine
Come descritto nella pagina di Wikipedia , in un roguelike: - Deve esserci una generazione casuale dei livelli,sebbene possano essere inclusi anche livelli predefiniti. In genere i livelli sono stanze interconnesse da corridoi, ma possono esserci anche zone all'aperto. La mia idea è proprio questa. Generare mappe casuali ad ogni livello, ma non escludo di realizzarne anche qualcuna predefinita, tipo la mappa introduttiva per un probabile tutorial ed una conclusiva un eventuale boss o altro, ancora da decidere. Come accennato nel post precedente , la piattaforma sarà inizialmente Windows Phone 7, tale scelta è dettata fondamentalmente da 2 motivi: - È  un sistema che conosco bene, dato che ho già sviluppato e pubblicato applicazioni per tale piattaforma. - Silverlight se pur limitato e dal punto di vista di prestazioni discutibile, è indubbiamente uno strumento che permette di sviluppare velocemente applicazioni ed inoltre con poche modifiche è possibile farle girare anche ...

Hello world - Rogue - Nuovo Approccio

Immagine
Poiché mi sono reso conto della mia difficoltà a spiegare in maniera chiara ed esaustiva le tecniche e gli algoritmi volendo evitare tecnicismi e codici chilometrici, mi accingo a raccontarvi, in maniera molto discorsiva ed in pillole, la nascita, lo sviluppo  e spero la riuscita di un nuovo progetto. In questo primo post vi accenno solamente il genere, la piattaforma e qualche altro piccolo indizio  per darvi l’idea: Roguelike, Silverlight per Windows Phone 7, ambientazione fantasy ma in chiave ironica con battute, parodie e nemici improbabili. Nome in codice: Rogue Se vi ho incuriosito, rimanete sintonizzati. Cercherò di aggiornare frequentemente il blog con gli sviluppi di questo ambizioso progetto. Saluti   

Hello world - Angolazioni

Immagine
Paddle.Curve = 0.005; Ball.Speed.X = (Ball.Position.X - (Paddle.Position.X + (Paddle.Width / 2)) * Paddle.Curve;

Hello world - Palla pallina

Immagine
  Cominciamo con un giochino facile facile, Lo conoscete? Non vi sto a spiegare il funzionamento ne tantomeno descriverò la realizzazione per intero di tale programma. Mi soffermerò invece sui principali aspetti ovvero, movimento della barretta, della palla e rimbalzo di quest’ultima sulla barretta Prima di cominciare un po’ di notazioni e riferimenti Questa è la barretta comandata dal giocatore (Paddle) si muove orizzontalmente in base allo spostamento del Mouse e la pallina vi rimbalza sopra, Tre muri (destro, sinistro e sopra) contornano lo schermo e la pallina vi rimbalza I mattoncini vengono distrutti non appena la pallina entra in contatto con essi Questa è la nostra pallina (Ball) e le sue proprietà sono: Ball.Position  // Posizione (X,Y)  del centro della pallina Ball.OldPosition  // PosizionePrecedente (X,Y) Ball.Radius    // Raggio Ball.Speed     // Velocità (X,Y) La barrettà è da considerarsi come un ...