Comunidad orientada al desarrollo de videojuegos

Introducción a Wave Engine

Wave Engine es la solución definitiva para el desarrollo de videojuegos multiplataforma en C#. Proporciona todas las herramientas necesarias para crear juegos tanto en 3D como en 2D en diversas plataformas:

  • Por el acceso unificado a sensores del dispositivo y sus capacidades,
  • Integrando un motor de físicas 2D y 3D,
  • Proporcionando un potente editor de juego,
  • Se integra con Visual Studio,
  • Y está diseñado con una API fluida.

Con estos puntos clave en mente, puedes usar tus conocimientos en C# para crear fabulosos juegos para:

  • Android
  • iOS
  • Windows Phone
  • Windows 8
  • Windows 7

CIMIENTOS DE WAVE ENGINE

Hay tres conceptos básicos para entender cómo podemos crear juegos con Wave Engine. Estos son muy simples y necesitamos explicarlos solo para unificar el lenguaje que vamos a utilizar mientras desarrollamos con Wave Engine:

  • Escena (Scene): representa el mundo donde vamos a trabajar y proporciona mecanismos para interactuar con él, como añadiendo elementos o comportamientos, que nos permite gestionar el ciclo de vida del juego de una manera muy simple.
  • Componente (Component): representa el elemento más simple que podemos crear en nuestro mundo.
  • Entidad (Entity): representa una colección de componentes creados dinámicamente que nos permite crear elementos más complejos que viven en nuestro mundo.

Una buena analogía de estos tres conceptos básicos puede ser que la Escena (Scene) represente un planeta, por ejemplo el Planeta Tierra, los componentes (Components) son las primeras células que aparecieron hace millones de años, y una Entidad (Entity) puede ser desde el primer organismo unicelular que apareció hasta un ser humano.

HELLO, WAVE

Ahora conocemos los conceptos básicos sobre Wave Engine. Vamos a empezar creando nuestro primer proyecto con Visual Studio 2012. Vamos a “Archivo/Nuevo/Proyecto…” y seleccionamos el nodo de WaveEngine debajo del nodo Instalado/Plantillas/Visual C#:

NewProject

Renombra el proyecto como “HelloWave”, y pulsa el botón OK.

Visual Studio creará una solución con dos proyectos: “HelloWave” y “HelloWaveProject”

Solutions

HelloWave contiene el punto de entrada del juego y todos los recursos que vamos a necesitar para crear nuestros juegos.

HelloWaveProject contiene todas las clases, escenas, componentes y entidades que dan vida al juego.

Añadiendo Recursos

El archivo .zip que puedes encontrar aquí contiene algunos recursos que usaremos, añade el archivo crate.wpk en la carpeta Content que está dentro de HelloWave, si no aparece la carpeta content, créala.

AddingResources

Nota: Seleccionar cada archivo .wpk e ir a propiedades, dentro, en la opción “copiar en el directorio de resultados“ elegid “copiar siempre” o “copiar si es posterior”.

El Código

Vamos a escribir el código que necesitamos para nuestro primer juego con Wave Engine.

Vamos a MyScene.cs, esta solo contiene el método CreateScene(), y vamos a añadir el código que necesitamos para hacer un cubo giratorio. Primero necesitamos añadir los usings:

using WaveEngine.Common.Math;

using WaveEngine.Components.Graphics3D;

using WaveEngine.Materials;

using WaveEngine.Components.Cameras;

using WaveEngine.Framework.Graphics;

Ahora podemos reemplazar el método CreateScene por este otro:

protected override void CreateScene()

{

    RenderManager.BackgroundColor = Color.White;


    FreeCamera camera = new FreeCamera("Fixed Camera", Vector3.One * 2.5f, Vector3.Zero);

    EntityManager.Add(camera);


    var cube = new Entity("Cube")

       .AddComponent(Model.CreateCube())

      .AddComponent(new MaterialsMap(new BasicMaterial("Content/crate.wpk")))

      .AddComponent(new Transform3D())

      .AddComponent(new ModelRenderer())

      .AddComponent(new Spinner() { AxisTotalIncreases = Vector3.One / 2 });


   EntityManager.Add(cube);

}

La primera línea:

RenderManager.BackgroundColor = Color.White;

Pone el color del fondo del juego, en este caso en blanco

La segunda línea:

FreeCamera camera = new FreeCamera("Free Camera", Vector3.One * 2.5f, Vector3.Zero);

Crea una cámara llamada “Free Camera” con la posición en el espacio: (2.5, 2.5, 2.5), y está mirando al origen del mundo (0, 0, 0).

Después de la creación de la cámara, es creada una entidad que representará un cubo en nuestro mundo. Recordad que Wave Engine está diseñado por una fluida API por lo que la creación de nuestro cubo estará formada por:

  • Inicialización de la entidad
  • Añadir el modelo (CreateCube())
  • Añadir la textura con un MaterialMap
  • Añadir un componente Transform3D
  • Añadir un ModelRenderer
  • Añadir un comportamiento de giro con el componente Spinner

El código sería:

var cube = new Entity("Cube")

   .AddComponent(Model.CreateCube())

   .AddComponent(new MaterialsMap( new BasicMaterial("Content/crate.wpk") ))

   .AddComponent(new Transform3D())

   .AddComponent(new ModelRenderer())

   .AddComponent(new Spinner() { AxisTotalIncreases = Vector3.One / 2 });

Por último tenemos que añadir la cámara y el cubo con el objeto EntityManager a la escena:

EntityManager.Add(camera);

EntityManager.Add(cube);

Ahora, si pulsamos iniciar ya tenemos nuestro primer juego hecho en Wave Engine:

GameInAction

DESCARGAR EL CÓDIGO

Descarga el proyecto completo aquí.

FUENTES

Tutorial original en inglés: http://blog.waveengine.net

Para descargar Wave Engine: http://www.waveengine.net

Traducido por Carlos Sánchez López

, , ,

5 thoughts on “Introducción a Wave Engine

  • Jose says:

    Buenas noches.

    Buscando por internet he dado con esta post, y me gustaria que me hechaseis una mano si pudierais,

    He instalado visual Studio 2013 y Wave Engine para introducirme en el mundo de los videojuegos, pero tengo un problema, cuando inicio Visual Studio y voy a crear un proyecto, no me aparece por ningun lado el nodo de Wave Engine. ¿Que he hecho mal o que tengo que hacer para que aparezca?

    Un saludo.

    • Jaeger says:

      Hola instala primero el Visual Studio 2012 luego bajate los contenidos que estan en la página y te aparecerá.

  • Jaeger says:

    Hay que tener cuidado con lo de “Debug” que da Error es mejor que lo cambiéis a “Release”

  • Hansem94 says:

    Me salta este error en program.cs :

    A first chance exception of type ‘SharpDX.SharpDXException’ occurred in SharpDX.dll

    Additional information: HRESULT: [0x80040154], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: Clase no registrada

    Alguna idea?

    PD: Concretamente aqui, me subraya el “;” :

    using (App game = new App())
    {
    game.Run();
    }

  • waveengine says:

    Buenas

    Hemos lanzado un concurso para los desarrolladores de video juegos con Wave engine, hay varios premios de hasta 15.000$ https://waveengine.net/Contests

Leave a Reply