title: MonoGame
text: # MonoGame
  
  MonoGame è un'implementazione open source del framework Microsoft XNA 4. Quest'ultimo permette di realizzare videogiochi per diverse piattaforme quali Xbox 360, PC e smartphone con sistemi operativi Windows Phone. MonoGame offre la possibilità di effettuare il porting dei videogiochi realizzati per tali dispositivi al fine di renderli disponibili anche su altre piattaforme quali Linux, iOS, Mac OS X, Android e Windows 8 Metro. È in fase di sviluppo anche il supporto per PlayStation Mobile. La versione attuale, pubblicata il 23 settembre 2018, è la 3.7.1.
  
  ## Panoramica
  
  La libreria MonoGame consente lo sviluppo di videogiochi in linguaggio C#, esponendo un insieme di classi pronte all'uso e offrendo lo strumento Content Pipeline con interfaccia grafica per la gestione facilitata dei contenuti.
  
  MonoGame è utilizzabile in tutti i principali sistemi operativi: Microsoft Windows, MacOS e Linux. È inoltre presente sotto forma di codice sorgente su GitHub, di pacchetto di codice condiviso NuGet e di libreria per l'ambiente di sviluppo Microsoft Visual Studio.
  
  Di seguito l'elenco delle classi fondamentali contenute nel namespace Microsoft.Xna.Framework e necessarie, ad esempio, allo sviluppo di un videogioco con grafica bidimensionale:
  
  * Game: è il core dell'applicazione, gestisce internamente il game loop (input, update, render) ed espone le proprietà e i metodi da utilizzare.
  * Content.ContentManager: consente la gestione delle risorse fisiche del gioco.
  * Graphics.Texture2D: contiene la matrice di colori di uno sprite bidimensionale, caricati in memoria dall'oggetto ContentManager a partire da un file immagine, tipicamente di estensione PNG per la gestione della trasparenza.
  * Graphics.SpriteBatch: consente il rendering degli oggetti Texture2D.
  * Vector2: rappresenta una coppia di coordinate bidimensionali per il posizionamento degli oggetti Texture2D.
  * Rectangle: rappresenta un'area con quattro lati per identificare posizione, larghezza e altezza degli oggetti Texture2D.
  