Este tutorial es una guía rápida para poner en marcha MonoGame en el sistema operativo Windows. El proceso es increíblemente sencillo, con dos opciones sobre cómo proceder.
Primero necesitará un entorno de desarrollo, de los cuales hay dos opciones disponibles. Xamarin Studio de Xamarin o Visual Studio de Microsoft. Si desea seguir la ruta de Xamarin Studio, asegúrese de verificar la guía macos, ya que el proceso será prácticamente idéntico. El resto de este tutorial asume que eligió instalar Visual Studio, el IDE estándar de la industria para el desarrollo de Windows que, afortunadamente, ahora es disponible gratis.
Así que lo primero es lo primero, descargar e instalar Comunidad de Visual Studio 2013. Asegúrese de seleccionar Comunidad y no una de las 90 ediciones de prueba. La instalación de la comunidad es una versión completa y funcional de Visual Studio, pero con algunas limitaciones en el tamaño de su empresa.
En el momento de escribir este artículo, esta es la versión que desea.
Si quieres dar un paseo por el lado salvaje, la versión candidata de estudio visual 2015 también funcionará. Por supuesto, es un candidato de lanzamiento… así que el comprador debe tener cuidado.
Instalando ya sea con las recomendaciones mínimas o mejor obtendrá todo lo que necesita instalado.
Instalar usando el instalador
Con mucho, la opción más fácil, simplemente descargue y ejecute el instalador disponible aquí. Asegúrese de cerrar Visual Studio antes de instalar.
Haga clic en Siguiente, luego acepte el EULA… después de leerlo y enviarlo a su abogado para su aprobación, por supuesto…
A continuación, se le solicitarán las funciones que desea instalar. Los valores predeterminados son bastante sólidos, haga clic en Instalar:

Instalar usando NuGet
Visual Studio integra un administrador de paquetes llamado NuGet. Esto ofrece algunos beneficios (potenciales) sobre el uso del instalador independiente de la biblioteca.
- resolución de dependencia. Si depende de otras bibliotecas, NuGet puede manejar esas dependencias.
- capacidades de actualización de paquetes. Manténgase actualizado más fácilmente
En realidad, eso es todo. Básicamente, si desea mantenerse actualizado sobre las actualizaciones, esta es la ruta a seguir. Sin embargo, el proceso de instalación es ciertamente más complicado, al menos inicialmente.
Primero, por supuesto, necesitas el administrador de paquetes NuGet instalado. Su uso es cada vez más común, por lo que probablemente lo tendrá instalado o lo necesitará en breve. Está disponible como una extensión de Visual Studio o una utilidad de línea de comandos.
Para instalar con NuGet, inicie Visual Studio, en la primera ejecución es posible que deba realizar algunas elecciones de configuración, no se preocupe, la mayoría de estas se pueden revisar más adelante. Una vez configurado, seleccione el menú Herramientas->NuGet Package Manager->Package Manager Console:

Ahora simplemente instala los paquetes que desee. A diferencia del instalador, usted descarga los distintos paquetes de forma independiente. La lista de paquetes están disponibles aquí. Suponiendo que va a desarrollar inicialmente en Windows, probablemente desee comenzar con la versión DirectX de Windows. Para instalar eso en el tipo de Consola del administrador de paquetes:
Paquete de instalación MonoGame.Framework.WindowsDX
Esto descargará e instalará todos los archivos y dependencias necesarios. Para obtener más detalles sobre los paquetes MonoGame NuGet, lea esta publicación en StackOverflow por el mantenedor.
Tu primer proyecto
Ahora que tienes MonoGame instalado, creemos nuestro primer proyecto. Si aún no lo ha hecho, cargue Visual Studio.
Seleccione Archivo->Nuevo Proyecto

En el cuadro de diálogo resultante, en el lado izquierdo debajo de las plantillas instaladas, seleccione Visual C#->MonoGame, luego, en el lado derecho, seleccione MonoGame Windows Project, elija una ubicación, un nombre de proyecto, si desea control de fuente, luego haga clic en Aceptar.

Como puede ver, MonoGame viene listo para usar con plantillas para varios objetivos diferentes y algunos de los anteriores pueden requerir un poco de explicación. El proyecto MonoGame Windows apunta al escritorio de Windows usando Direct X para el backend. El proyecto OpenGL es otro objetivo de Windows, pero en su lugar usa OpenGL como backend. Como DirectX es solo para Windows, XBox y WinPhone, es posible que el uso del backend GL sea más consistente si se dirige a Mac, Linux, Android y/o iOS, ya que todos usan OpenGL en el backend. Un proyecto universal de Windows 8.1 es una aplicación que admite objetivos móviles y de escritorio Win 8 con una base de código y, si soy honesto, con el anuncio de Windows 10, es probablemente un callejón sin salida.
Idealmente, escribirá la mayor parte de su código como bibliotecas, con solo las partes específicas de la plataforma en su propio archivo de proyecto correspondiente. Veremos este proceso más adelante. Por ahora, KISS (Keep It Simple Stupid) y solo apuntaremos a la plataforma en la que estamos desarrollando.
Una vez que haga clic en Aceptar, se creará el siguiente proyecto simple:
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; namespace Game1 { /// <summary> /// This is the main type for your game. /// </summary> public class Game1 : Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } /// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { // TODO: Add your initialization logic here base.Initialize(); } /// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); // TODO: use this.Content to load your game content here } /// <summary> /// UnloadContent will be called once per game and is the place to unload /// game-specific content. /// </summary> protected override void UnloadContent() { // TODO: Unload any non ContentManager content here } /// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown( Keys.Escape)) Exit(); // TODO: Add your update logic here base.Update(gameTime); } /// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here base.Draw(gameTime); } } }
No se preocupe demasiado por el código, lo explicaremos todo en breve. Solo queremos asegurarnos de que su instalación de MonoGame esté en funcionamiento. Para ejecutar tu juego golpea F5 o presione:

Suponiendo que todo salió bien, debería ver una ventana dibujada en azul CornFlower:

¡Felicitaciones, acaba de crear su primera aplicación MonoGame!
Hablemos brevemente sobre el canal de contenido. Esta es la forma en que ingresa contenido a su aplicación MonoGame. Si busca en el Explorador de soluciones, verá un archivo llamado Content.mgcb.

Haga doble clic en él y se abrirá la herramienta Canalización de contenido de MonoGame:

Agreguemos rápidamente una textura a nuestro proyecto. Seleccione Editar->Agregar->Elemento existente, navegue a un archivo de imagen existente en algún lugar de su computadora.

A continuación, se le preguntará cómo desea que se agregue, copie o vincule el archivo. Elegí copiar para romper la conexión con la imagen de origen. Esto significa que las actualizaciones de la imagen original no se propagarán y su eliminación no tendrá ningún efecto.

La imagen se agregará a su paquete de contenido, como puede ver con ella seleccionada, hay una serie de propiedades expuestas sobre cómo se debe procesar la imagen al crear contenido:

Hay varios procesadores de importación disponibles para varios tipos de archivos diferentes:

Cada uno expone diferentes parámetros que puede modificar. Para las imágenes, algunas de las propiedades clave expuestas son la opción de cambiar automáticamente el tamaño de la imagen a una potencia de 2 dimensiones, cambiar la configuración de compresión de textura (TextureFormat) o establecer el valor clave de color utilizado para las transparencias.
Ahora seleccione el nodo raíz Contenido y verá que los detalles de la propiedad han cambiado:

La configuración clave aquí es Plataforma. Cada plataforma diferente puede tener requisitos ligeramente diferentes y Content Pipeline se encarga de eso por usted. En este caso, ya tenemos Windows configurado para la canalización, por lo que no es necesario cambiar nada.
Ahora construya su contenido usando la opción de menú Buld->Build, o presionando F6.

Ahora, de vuelta en Visual Studio, confirme que la acción de compilación en su archivo Content.mgcb esté configurada correctamente. Haga clic derecho en el archivo y seleccione Propiedades:

Asegúrese de que Build Action esté configurado en MonoGameContentReference.

Esto le permitirá usar el contenido como si estuviera instalado localmente, haciendo que el cambio entre versiones de plataforma sea trivial.
Ahora, usar contenido en el código es tan simple como:
protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); var myImage = this.Content.Load<Texture2D>("SBO6h0Gk"); }
No se preocupe, cubriremos este proceso con más detalle más adelante. Solo tenga en cuenta que la extensión del archivo no se utiliza.
Detrás de escena, puede notar que la herramienta Canalización de contenido creó el siguiente archivo xnb en el subdirectorio /bin/Windows de Contenido:
