Que duro es ser informático Los grandes artistas copian, los genios roban
  • Mar
    11

    [XNA] Anunciado XNA Game Studio 4.0

    Filed under: XNA; Tagged as:

    xnalogo  El conocido framework para la creación de videojuegos de Microsoft va a verse próximamente actualizado a una nueva versión.

    En la nueva versión 4.0, Microsoft da soporte para juegos en smartphones que funcionen con Windows Phone 7, ampliando así las plataformas soportadas por XNA (Windows Phone 7, PC, Xbox360). Sin embargo, parece que deja de ser compatible con el reproductor musical Zune HD, el cual seguirá soportando solo hasta la versión 3.1 de XNA.

    La característica más interesante de esta nueva plataforma es la posibilidad de continuar las partidas de nuestros juegos en cualquier plataforma. Por ejemplo, podríamos estar guardar una partida en PC y continuarla desde nuestro teléfono móvil mientras estamos en el autobús.

    Alguna de las otras novedades que trae consigo el XNA Game Studio 4.0 son: API’s con aceleración 3D por Hardware para Windows Phone 7 Series, Intregración con Visual Studio 2010,  y Soporte de “buffered audio” en API’s de audio.

    Más información: http://creators.xna.com/en-US/news/gdc2010

    No Comments
  • Mar
    1

    Ya hacia tiempo que no escribía nada sobre XNA. Así que voy a escribir un cortito (pero útil) tutorial de como hacer Parallax Scroll en XNA.

     

    image

     

    Es muy facilito, y además de dejaros el código fuente del proyecto, os dejare también las imágenes y una explicación del código para que lo hagáis vosotros.

     

    IMAGENES

    Pinchar sobre la imagen, se os abrirá una nueva ventana. Guardaros esa imagen.

    http://nosoyfriky.es/cosasxna/rocas.png

    image

    http://nosoyfriky.es/cosasxna/espacio.png

    image

    http://nosoyfriky.es/cosasxna/planeta.png

    image

     

    CLASE CapaParallax

    Como podemos ver, esta clase tan simple representa una capa del fondo, el cual tiene una velocidad determinada, así como una textura.

     

      1 class CapaParallax
      2     {
      3         private Texture2D textura = null;
      4         private Vector2 posicion = Vector2.Zero;
      5         private Vector2 desplazamiento = Vector2.Zero;
      6         private float velocidad = 10.0f;
      7
      8         private float viewportWidth = 0.0f;
      9
    10
    11         /// <summary>
    12         /// Constructor de la capa de parallax Scrolling
    13         /// </summary>
    14         /// <param name="graphics">Donde se dibujara la capa</param>
    15         /// <param name="texture">Textura de la capa</param>
    16         /// <param name="speed">Velocidad con la que se movera la capa</param>
    17         public CapaParallax(GraphicsDeviceManager graphics, Texture2D texture, float speed)
    18         {
    19             textura = texture;
    20
    21             viewportWidth = graphics.GraphicsDevice.Viewport.Width;
    22
    23             posicion = new Vector2(0.0f, 0.0f);
    24             desplazamiento = new Vector2(viewportWidth, 0.0f);
    25
    26             velocidad = speed;
    27         } 
     
    Para el funcionamiento del parallax, necesitamos que cada capa se mueva a una velocidad distinta. Cuanto más rápido sea el movimiento, nos parecerá que esta más próxima la capa.
     
     
     
     
    30         /// <summary>
    31         /// Actualiza la posicion de la capa
    32         /// </summary>
    33         /// <param name="gameTime">Tiempo transcurrido de juego</param>
    34         public void Update(GameTime gameTime)
    35         {
    36
    37              
    38             
    39             float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
    40
    41             posicion.X -= velocidad * delta;
    42             posicion.X = posicion.X % textura.Width;
    43             
    44         }
    45
    46
    47         /// <summary>
    48         /// Da la sensacion de que nos movemos a la derecha
    49         /// </summary>
    50         /// <param name="gameTime"></param>
    51         public void MoverDerecha(GameTime gameTime)
    52         {
    53             float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
    54
    55             posicion.X -= velocidad * delta;
    56             posicion.X = posicion.X % textura.Width;
    57         }
    58
    59         /// <summary>
    60         /// Da la sensacion de que nos movemos a la izquierda
    61         /// </summary>
    62         /// <param name="gameTime"></param>
    63         public void MoverIzquierda(GameTime gameTime)
    64         {
    65             float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
    66
    67             posicion.X += velocidad * delta;
    68             posicion.X = posicion.X % textura.Width;
    69         }
    70
    71
    72         /// <summary>
    73         /// Dibuja la capa
    74         /// </summary>
    75         /// <param name="spriteBatch"></param>
    76         public void Draw(SpriteBatch spriteBatch)
    77         {
    78             //Como es una capa "continua", tenemos que dibujarla
    79             // otra vez cuando se salga de la pantalla
    80             
    81             if (posicion.X < viewportWidth)
    82             {
    83                 spriteBatch.Draw(textura, posicion, Color.White);
    84             }
    85
    86             spriteBatch.Draw(textura, posicion + desplazamiento, Color.White);
    87         }
    88     }

     

     

    GAME1.CS

    Con esta clase ya implementada, tenemos que agregar en nuestro juegos las diferentes capas que queramos y almacenarlas todas en una lista.

      1         //Texturas de las capas
      2         private Texture2D planeta;
      3         private Texture2D espacio;
      4         private Texture2D rocas;
      5
      6         private List<CapaParallax> capasParallax;

     

    O bien en el constructor o  bien en en metodo “Initialize” tenemos que crear las capas:

      1         protected override void Initialize()
      2         {
      3             // TODO: Add your initialization logic here
      4             planeta = this.Content.Load<Texture2D>("planeta");
      5             rocas = this.Content.Load<Texture2D>("rocas");
      6             espacio = this.Content.Load<Texture2D>("espacio");
      7
      8
      9             //Cuidado con el orden de insercion.
    10             //1º lo mas alejado
    11             capasParallax = new List<CapaParallax>();
    12             capasParallax.Add(new CapaParallax(graphics, planeta, 0.0f)); //la velocidad es 0, no se mueve
    13             capasParallax.Add(new CapaParallax(graphics, espacio, 10.0f));
    14             //luego lo mas cercano
    15             capasParallax.Add(new CapaParallax(graphics, rocas, 50.0f));
    16
    17             base.Initialize();
    18         }

     

     

    En el update tan facil como:

      1                 foreach (CapaParallax capa in capasParallax)
      2                 {
      3                     capa.Update(gameTime);
      4                 }

     

    y lo mismo en el metodo Draw:

      1             foreach (CapaParallax capa in capasParallax)
      2             {
      3                 capa.Draw(spriteBatch);
      4             }

     

     

     

    Descargar Código Fuente del Proyecto

    No Comments
  • Ene
    10

    image

    Navegando por Codeplex me he encontrado un proyecto muy interesante. Se trata de un Engine de partículas para XNA. ¿Qué para qué sirve? Pues por ejemplo, para hacer el humo del barco de abajo

    image

     

    Para explosiones como esta:

    image

    O para simular nieve en nuestro juego:

    image

    No lo he podido probar mucho, pero parece que es simple de usar y se pueden conseguir resultados realmente buenos, además de contar con una documentación bastante amplia y con ejemplos.

    La web del proyecto en Codeplex es: http://mpe.codeplex.com/

    Os dejo con un video para que veáis lo que se puede hacer. Bastante curioso.

    No Comments
  • Dic
    31

    Llegados a este punto, tenemos nuestra nave frente a unas cuantas naves enemigas. Nuestra nave puede disparar y eliminar a los enemigos, pero los enemigos todavía no pueden dispara para intentar eliminarnos. Vamos a ver como podemos hacer esto después del salto.

     

    Como ya sabéis, si tenéis alguna duda, podéis plantearla en el foro: http://www.foro.xna-tutorial.com/viewtopic.php?f=4&p=8#p8

     

    No Comments
  • Dic
    28

    Primitivas Básicas 2D

    Filed under: XNA; Tagged as: , ,

    XNA facilita muchísimo la programación de videojuegos. proporciona librerías para cargar imágenes 2D, modelos 3D, sonidos, etc.…

    Sin embargo, algo tan simple como dibujar primitivas 2D, tales como círculos, líneas, cuadrados, elipses… se convertía en algo más complejo de lo deseable.

    Por ello me puse a buscar por internet como dibujar primitivas 2D y encontré en los foros de XNA la solución: una clase que facilita la creación de estos elementos.

    image

    Este es un ejemplo de lo que se puede hacer con esta clase: pintar círculos, cuadrados, elipses, líneas, modificar el color, el grosor, la posición, la rotación, etc.…. y todo ello de una forma rápida y sencilla. ¿Que más se puede pedir?

    Descárgate el proyecto de ejemplo desde http://nosoyfriky.es/cosasxna/Primitivas2D.rar. Si solo te interesa la clase, descárgate el código fuente de la clase desde:  http://nosoyfriky.es/cosasxna/BasicPrimitives.cs

    Un saludo

    Fuente: http://forums.xna.com/forums/t/7414.aspx

    No Comments
  • Dic
    21

    Mirando en los foros de XNA me he encontrado con este topic: http://forums.xna.com/forums/t/34901.aspx

    En el se ofrece el código fuente de un juego basado en el Starter Kit de plataformas que viene incluido con XNA a partir de la versión 3.0.

    platformer

    Contiene numerosas mejoras para partir de el para hacer un juego de plataformas en XNA.

    Características:

    • Game State Management (Menu)
    • Global Score
    • Scrolling levels (vertical and horizontal)
    • Custom level information from within the text file (Title, Time Limit, Description)
    • Level Select
    • Falling Apples
    • Options
    • Built in BSOD (incase any error happens you can see what it is)
    • In Game Level Editor (Beta, saving part under progress)
    • Ladders
    • option for 320×240 or 640×480 (in the ScreenManager.cs, "Game Configuration Fields" region near top, set the "useHighResolution" to true or false)
    • A Racing opponent (Turns directions by bumping into walls, Jumps on assigned "J" tiles)
    • Vanishing Tiles
    • Hidden Tiles (Both Solid and platform)
    • Death Tiles
    • Skin selections
    • Powerups

     

    El código fuente lo podéis descargar desde el enlace que proporciona el creador:  http://www.mediafire.com/?ydyzwtilmkc

    No Comments