miércoles, 25 de abril de 2012

SkyDrive para Windows Disponible!

 

Ya se puede bajar la preview del programa cliente para Windows de SkyDrive!

25GB + Software Cliente = Chau DropBox!!

Microsoft SkyDrive

 

https://apps.live.com/skydrive

martes, 24 de abril de 2012

5 Noticias sobre Windows Phone

A continuación, la edición número 5 de 5 noticias sobre Windows Phone, cortesía de NN.

1- Más Cambios en el Marketplace

El Marketplace desde Zune Software no estará disponible para los usuarios, y en cambio solo se podrá comprar via Web o a través del teléfono. Esto afectará los links del tipo “zune://” en la PC ya que no podrán ser abiertos con el software.

The web Marketplace makes it easy to browse and buy apps from any internet-connected PC (or Mac). That convenience makes it very popular with customers.

Fuente: http://bit.ly/IaQpR2


2- Se viene la Programathon!

El evento más grande del año, de la década…de la historia! está por comenzar. Pocas veces tenemos oportunidad de participar en algo de esta magnitud a nivel latinoamérica.

Actualmente estamos en plena etapa de Brainstorming a través de Twitter, usando el Hashtag #ProgramathonWP7 para sumar recursos, ideas, comentarios, videos, etc. Aquí mismo iremos comentando las novedades del evento para Argentina y el resto de LatAm.

Fuente: http://www.microsoft.com/latam/programathon/

martes, 17 de abril de 2012

5 Noticias sobre Windows Phone

Una nueva entrega del resumen semanal que da que hablar en toda LatAm.

Luego del Especial sobre Lumia 900 y la galería del Samsung Focus Desarmado volvemos a publicar nuestro Newsletter con las noticias más candentes de la semana.


1- Mercado Libre hace eco a nivel Mundial

La aplicación oficial y gratuita para Windows Phone del portal más grande de compras de Latinoamérica, ha hecho eco en grandes Blogs a nivel mundial. Si bien está disponible para Brasil por el momento, nos da una idea de lo que vendrá para el resto del continente dentro de poco.

1 de 7 3 de 7 5 de 7

Fuente: http://bit.ly/IWY94H


2- Windows Phone 8 esta muy cerca…

La historia comienza así: La aplicación “I’m a WP7” es una aplicación social, que tiene como agregado “guardar” el modelo y SO del teléfono y mostrar de forma estadísticas las cantidades de personas usando cada uno.

image

Al parecer pudieron comprobar que un handset con Windows Phone 8 utilizó y se registró a la plataforma, dejando al descubierto hasta el numero de Build de la versión.

Si a esto, le sumamos la aparición en las estadísticas de varios sitios relacionados con Windows Phone del Sistema Operativo Windows Phone 8 (ver imagen arriba), podemos concluir que estamos muy prontos a tener novedades oficiales sobre el mismo.

Bajar I’m a WP7: http://bit.ly/HUoWin


3 – La campaña “The Amazing Everyday” en Rusia, es FUROR

Siempre lo dije, si hay un país en donde me gustaría vivir, sería Rusia (algunos saben los motivos y otros tal vez no) y este tipo de campañas hechas 100% con creatividad local no hacen más que hacerme sentir en el camino correcto!

Gente completamente sorprendida, en medio de centros comerciales por Bailarinas, Angry Birds, “Policias”… en fin miren y disfruten!





Angry Birds




Policia (equipo SWAT)




Bailarinas!

El spot, llamado Amazing Nokia Lift fue furor en la web, con millones de reproducciones en Youtube.


4 – Wordament para XBOX Live llega al Marketplace

La nueva versión llegará la semana próxima, el 25 de Abril para ser exactos. Entre las mejoras, podemos contar con el uso de nuestro XBOX Live Gamertag y nuestro Avatar para el Wordament.

Para celebrar, el equipo completo de Wordament va a estar en un Microsoft Store al día siguiente, en una competencia presencial, con comida y bebida gratis en Washington, Estados Unidos.

Fuente: http://bit.ly/IDvob2


5 – Las Versiones de Windows 8

Bueno, no es algo relacionado directamente  con Windows Phone por el momento, pero justamente AYER publicaron los detalles de cada versión, que explicamos a continuación.

En resumen, serán 3 las principales:

  • Windows 8: Para el grueso de los usuarios
  • Windows 8 Pro: Para los usuarios avanzados
  • Windows 8 RT: Para dispositivos ARM

Tabla Comparativa Completa

Característica Windows 8 Windows 8 Pro Windows  RT
Actualización desde W7 Starter, Home Basic y Home Premium x x  
Actualización desde W7 Professional y Ultimate   x  
Pantalla de Inicio, Semantic Zoom y Live Tiles x x x
Windows Store x x x
Aplicaciones Metro x x x
Office Incluído     x
Internet Explorer 10 x x x
Encriptación de Dispositivo     x
Cuenta Microsoft x x x
Vista Escritorio x x x
Instalación de aplicaciones x86/x64 x x  
Nuevo Windows Explorer x x  
Windows Defender x x x
Packs de Idiomas x x x
Storage Spaces x x  
Nuevo Soporte para Multi Monitor x x x
Nuevo Task Manager x x x
Windows Update x x x
SmartScreen x x x
Windows Media Player x x  
Exchange Active Sync x x x
Historial de Archivos x x x
Montar ISO/VHD x x x
Banda Ancha Móvil x x x
Contraseña e Imagen x x x
Reproducir En… x x x
Cliente de Escritorio Remoto x x x
Refresh de PC x x x
Snap View x x x
Teclado Tactil x x x
Booteo Seguro x x x
Cliente VPN   x  
BitLocker   x  
Boot dede VHD   x  
Cliente Hyper-V   x  
Politicas de Grupo   x  
Anfitrión de Remote Desktop   x  

Fuente: http://bit.ly/HPPZMp

domingo, 15 de abril de 2012

Desarmando un Samsung Focus

El increible Rodrigo Menendez, a quien tuvimos el gusto de conocer en Microsoft Argentina la semana pasada, nos comentó sobre su pasión por la electrónica y hablando por supuesto de Windows Phone, explicó todo el proceso para desensamblar un Samsung Focus.

Vista Exterior


Para quienes aún no conozcan el teléfono, algunas imágenes del “exterior” en distintas posiciones (click en las imágenes para verlas en tamaño completo).










Ahora si, el interior!


En la siguiente galería de Windows Live podrán observar el proceso de desensamblado del teléfono.

View albumView albumView albumView albumView albumView albumView album




Todos los créditos al señor Rodrigo Menendez le agradecemos por el Material!

Saludos!

sábado, 7 de abril de 2012

Lumia 900–Informe Completo

Bueno, por fin hemos decidido hacer honor al mejor teléfono de la familia Lumia y tenemos un mix de todo lo que sucedió la semana última con Lumia 900.

 Nokia Lumia 900

Especificaciones Técnicas

Características de hardware y software de Lumia 900.

Procesador 1.4 GHz – Single Core
RAM 512MB
Memoria 16Gb interna
Cámara Posterior 8MP, 720p
Cámara Frontal 1MP
Pantalla 4,3” ClearBlack
Resolución 480 x 800
Colores de Carcaza Cyan, Negro, Blanco
Peso 160g
Batería Hasta 7h en uso - 1830mAh
SO Windows Phone 7.5 “Mango”
Software Nokia Maps, Drive, Music, Photo y en un futuro… Nokia TV y Reading

 

Reviews

A continuación, los sitios más prestigiosos de reviews a nivel mundial con el rating en la misma tabla (así no tienen que ir a verla si no quieren) y el link para los interesados.

El común denominador en todos los sitios es: “El mejor Windows Phone hecho hasta el momento”.

GDGT – Score 90/100 http://gdg.to/uGAjfq
Gizmodo – Score 4/5 http://gizmo.do/HeOE5d
CNet – Score 8/9 http://cnet.co/H1u1ao
The Verge 7/10 http://www.theverge.com/products/lumia-900/4624

Un video de Review aquí mismo.





En inglés, pero vale la pena

 

Ejemplos de Imágenes de la Cámara 8MP

Es el primer salto evolutivo en la familia Lumia, la lente Carl Zeiss otorga una claridad increíble en relación a la anterior de 5MP (Lumia 800 y otros). Al hacer clic en la foto podrán ver la imágen en tamaño completo.

 

Pantalla ClearBlack

Una de las características más relevantes del teléfono, la tecnología ClearBlack, diferencia de todos los otros dispositivos en el mercado al Lumia, con un brillo prácticamente nulo a la luz del sol.





ClearBlack Display–Al sol, no le tenemos miedo!

 

Lanzamiento en EEUU

La fiesta fue MASIVA, la gente copó Time Square (la esquina más famosa de NY) y bailando al ritmo de Nicki Minaj recibió el lanzamiento del nuevo hijo pródigo.

A continuación el video oficial del lanzamiento, el último 7 de Abril. en una palabra: AMAZING.





Nicki Minaj y unos Live Tiles de fondo?

 

Comerciales de Lumia 900 – AT&T

Son dos comerciales con un grado de creatividad que asombra… Una manera única de promocionar Lumia, Windows Phones y hasta Live Tiles.





El “beta testing” de SmartPhones al fin terminó





Live Tiles–El motivo

 

24 Horas con el Lumia 900 – Otra campaña aparte de AT&T

En este caso, múltiples escenarios de uso para el teléfono, una vez mas promocionando a Nokia, AT&T y Windows Phone. www.att.com/lumia.





El video inicial de la campaña - www.att.com/lumia

 

El Desembarco en Europa

Según todos los pronósticos, Lumia 900 llegará a Europa a principios del mes de Mayo, y se espera una repercusión en mercados ya afianzados como Inglaterra y Finlandia, en donde el iPhone está teniendo durísima competencia con Windows Phone. http://bit.ly/HYIPnW

 

Lumia 900 Ganador del último SmartPhone Madness – Revista LAPTOP Review

Según los usuarios, desafío y venció al Huawei Ascend D, al Galaxy S II y al propio Lumia 710 (el hermanito menor de la familia) para llevarse el triunfo entre 8 SmartPhones de alta gama.

 

Como ganar un Lumia 900?

martes, 3 de abril de 2012

5 Libros sobre Diseño, Análisis y Programación Orientada A Objetos

Luego de un intercambio con  Matías Iacono (http://miacono.wordpress.com/) en Facebook, me puse a listar libros en inglés que tengo y pueden ser de utilidad para explicar este tema en varios ámbitos.

  1. Head First Object-Oriented Analysis and Design - http://amzn.to/HbjkTH

  2. Object Oriented Analysis - http://amzn.to/HbjiLt

  3. Object-Oriented Design - http://amzn.to/HbjkD5

  4. Object-Oriented Programming -  http://amzn.to/HbjieD

  5. Streamlined Object Modelling - http://amzn.to/Hbjk6b

El primero es bastante común para conseguirlo, del segundo al cuarto puede haber copias en algunas universidades, pero el quinto es bastante “poco usual” verlo aquí en Argentina.

De igual forma, si contamos con un lector Kindle o similar, podemos comprar estos libros por Amazon y disfrutar de la versión digital sin movernos de casa.

lunes, 2 de abril de 2012

5 Noticias sobre Windows Phone

El resumen semanal más popular de Latinoamérica! de la mano de NN.


1 – El Windows Phone Nokia hecho de …. Hielo?

Así, parece…. si bien el lector puede encontrar este punto un poco dificil de creer… Nokia estaría trabajando en un prototipo completamente fabricado sobre H2O congelado…

Nokia Ice

Como no podia ser de otra manera, la gente de Nokia también festeja el día de los inocentes en Abril, para lo cual se tomó la libertad de “divulgar” esta pequeña broma.


2 – Más rumores sobre Blackberry (el fin de una Era?)

Tras los fuertes rumores de que Microsoft y Nokia estarían pensando en hacer una oferta conjunta por la companía canadiense RIM , luego de que sus acciones bajaran de 140U$D en 2010 a 14U$D el viernes pasado.

Esto se suma al a posibilidad de que el próximo SO de Blackberry sea completamente reemplazado por Windows Phone y Windows 8, y el servidor empresarial de BlackBerry por Microsoft Exchange.

Fuentes: http://onforb.es/HeTGeV, http://bit.ly/HE8ZvR


3 – Lumia 900 se quedó sin Stock en una semana!

At&T en Estados Unidos, informó que la preventa del Lumia 900 está completamente colapsada de pedidos, y se quedaron sin Stock asegurado por el momento.

Esto puede tener varios motivos, pero sin dudar uno de ellos es la serie de videos en Youtube donde se compara al teléfono con otros SmartPhones.





Una de las publicidades del Lumia 900

Fuente: http://bit.ly/HOvGzc


4 – Windows Phone con PureView 99.99% confirmado!

Una solicitud de empleado en la casa matriz de Nokia abre las puertas al desarrollo de la nueva generación de telefonos, probablemente con Windows Phone 8 y capacidades asombrantes como PureView.

La solicitud es muy clara, diciendo cosas como:

“Has oído hablar de PureView? Participa en la nueva generación de teléfonos Nokia con Windows Phone. Puedes ser parte del cambio trabajando en tareas relacionadas con captura de imágenes y cámaras digitales para móviles.”

New job ad confirms Nokia's PureView Windows Phone plans

Fuente: http://bit.ly/HfLKpM


5 – Por que los desarrolladores deberían estar preocupados por Android?

A continuación los 5 motivos por los cuales los developers de plataformas Android deberían estar al menos preocupados, según un informe (nada mas ni nada menos) que de la revista Forbes.

  1. Demasiada Fragmentación: Uno de los problemas más grandes que tiene Android de toda la vida, mas de 7 versiones “mainstream” con distintos tamaños de pantalla que multiplican los costos de desarrollo o nos dejan con versiones “mediocres” para los dispositivos.
  2. El Retorno de la Inversión: A diferencia de dispositivos con planes mensuales (Windows Phone y los iPhone) la gente suele comprar dispositivos Android de bajo rendimiento y costo con tarjetas pre-pagas. Estos clientes son mucho menos propensos a comprar aplicaciones pagas.
  3. Aplicaciones Clonadas: Hay tal cantidad de desarrolladores con “pocas ideas” que es muy probable que copien tu aplicación, la vendan a menor precio y te roben el mercado que tanto costó conseguir.
  4. Fragmentación de Mercados también: Existen al menos 4 mercados de Android en la actualidad (mainstream) sin contar las innumerables tiendas virtuales no oficiales. Google Play, Amazon, MiKandi, y muchas otras logran distribuír el flujo de consumidores de manera tal que debemos preocuparnos por llegar a todos para poder vender mucho.
  5. Windows Phone está al acecho: El interes creciente por parte de los desarrolladores sobre la plataforma de Microsoft y las bondades que esta ofrece (ecosistema sin fragmentar, herramientas sencillas, estándard de hardware, etc.) hace que todo el mundo empiece a voltear su cabeza desde Android a Windows Phone lentamente.

Fuentes: http://onforb.es/HfMI5s


Hasta aquí el resumen semanal de Noticias de Windows Phone!

domingo, 1 de abril de 2012

Desplegando enemigos

Carrera de XNA – Capítulo 4 – Artículo 6

enemies_mineHasta ahora tenemos una nave volando a través de unas hermosas nubes, con la sensación de avance infinito. Hemos logrado utilizar animaciones para el jugador y el fondo, modificando sus posiciones, pero nos falta un desafío, algo que vuelva interesante a nuestro juego.

Y de esto se tratan los Enemigos. La idea es crear una clase que los represente para luego hacerlos aparecer de forma aleatoria en la pantalla.

Crearemos una nueva clase, llamada Enemy.cs en nuestro proyecto del juego.

En la clase Enemy.cs

Modificamos nuestra sección de usings, por lo siguiente:

using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

Ahora definiremos dentro de la clase los siguientes campos y métodos que iremos completando en este artículo, como es de costumbre sigue con la lógica de Initialize, Update y  Draw.

// Animation representing the enemy
public Animation EnemyAnimation;

// The position of the enemy ship relative to the top left corner of thescreen
public Vector2 Position;

// The state of the Enemy Ship
public bool Active;

// The hit points of the enemy, if this goes to zero the enemy dies
public int Health;

// The amount of damage the enemy inflicts on the player ship
public int Damage;

// The amount of score the enemy will give to the player
public int Value;

// Get the width of the enemy ship
public int Width
{
get { return EnemyAnimation.FrameWidth; }
}

// Get the height of the enemy ship
public int Height
{
get { return EnemyAnimation.FrameHeight; }
}

// The speed at which the enemy moves
float enemyMoveSpeed;

public void Initialize()
{
}

public void Update()
{
}

public void Draw()
{
}

Reemplazamos el método Initialize por lo siguiente.

public void Initialize(Animation animation,Vector2 position)
{
    // Load the enemy ship texture
    EnemyAnimation = animation;

    // Set the position of the enemy
    Position = position;

    // We initialize the enemy to be active so it will be update in the game
    Active = true;


    // Set the health of the enemy
    Health = 10;

    // Set the amount of damage the enemy can do
    Damage = 10;

    // Set how fast the enemy moves
    enemyMoveSpeed = 6f;


    // Set the score value of the enemy
    Value = 100;

}

Como verán, solo establecemos algunas variables (salud total, velocidad, animación y posición) que luego son necesarias para dibujar y serán modificadas en cada Update.

A continuación, reemplazamos el método Update()  por el siguiente código.

public void Update(GameTime gameTime)
{
    // The enemy always moves to the left so decrement it's xposition
    Position.X -= enemyMoveSpeed;

    // Update the position of the Animation
    EnemyAnimation.Position = Position;

    // Update Animation
    EnemyAnimation.Update(gameTime);

    // If the enemy is past the screen or its health reaches 0 then deactivateit
    if (Position.X < -Width || Health <= 0)
    {
        // By setting the Active flag to false, the game will remove this objet from the active game list
        Active = false;
    }
}

Simplemente, movemos el enemigo dependiendo la velocidad y actualizamos la posición. A su vez, si detectamos que está fuera de la pantalla, se pone en inactivo para que no sea dibujado.

El método Draw() lo reemplazaremos con el siguiente fragmento.

public void Draw(SpriteBatch spriteBatch)
{
    // Draw the animation
    EnemyAnimation.Draw(spriteBatch);
}

Con esto, reutilizando lo que teníamos hasta ahora, fue sencillo crear nuestra clase Enemigo. Ahora procederemos a utilizarla desde nuestro Game1.

animacionMina

En la clase Game1.cs

Será necesario instanciar nuestros Enemigos, para esto definiremos una List donde pondremos cada uno de ellos. Utilizaremos dos instancias de tipo TimeSpan (tiempo) para definir el tiempo de Respawn (es decir, cada cuanto reaparecen los enemigos). Por último, usaremos una instancia de la clase Random para generar números aleatorios.

Las variables son las siguientes.

// Enemies

Texture2D enemyTexture;
List<Enemy> enemies;

// The rate at which the enemies appear

TimeSpan enemySpawnTime;
TimeSpan previousSpawnTime;

// A random number generator

Random random;

Ahora dentro del Initialize()  de nuestro Game1, colocaremos el siguiente código para instanciar la lista de enemigos, los TimeSpan y el generador de aleatorios.

// Initialize the enemies list
enemies = new List<Enemy> ();

// Set the time keepers to zero
previousSpawnTime = TimeSpan.Zero;

// Used to determine how fast enemy respawns
enemySpawnTime = TimeSpan.FromSeconds(1.0f);

// Initialize our random number generator
random = new Random();

Dentro del LoadContent(), cargaremos nuestra animación del enemigo, de la siguiente forma:

enemyTexture = Content.Load<Texture2D>("Imagenes/animacionMina");

Para crear cada enemigo, será necesario instanciar una animación, inicializarla, definir la posición del enemigo de forma aleatoria, instanciar la clase Enemy y por último setear los valores en la misma. Todo esto lo encapsulamos en un nuevo método llamado AddEnemy.

private void AddEnemy()
{
    // Create the animation object
    Animation enemyAnimation = new Animation();

    // Initialize the animation with the correct animation information
    enemyAnimation.Initialize(enemyTexture, Vector2.Zero, 47, 61, 8, 30,Color.White, 1f, true);

    // Randomly generate the position of the enemy
    Vector2 position = new Vector2(GraphicsDevice.Viewport.Width +enemyTexture.Width / 2, random.Next(100, GraphicsDevice.Viewport.Height -100));

    // Create an enemy
    Enemy enemy = new Enemy();

    // Initialize the enemy
    enemy.Initialize(enemyAnimation, position);

    // Add the enemy to the active enemies list
    enemies.Add(enemy);
}

Lo más relevante del código anterior es la posición que elegimos para mostrar al enemigo, que debe ser lo suficientemente lejos de nuestro Jugador para darle tiempo a reaccionar.

De la misma manera, debemos definir nuestra lógica de actualización de enemigos, para lo cual escribimos un método UpdateEnemies.

private void UpdateEnemies(GameTime gameTime)
{
    // Spawn a new enemy enemy every 1.5 seconds
    if (gameTime.TotalGameTime - previousSpawnTime > enemySpawnTime)
    {
        previousSpawnTime = gameTime.TotalGameTime;

        // Add an Enemy
        AddEnemy();
    }

    // Update the Enemies
    for (int i = enemies.Count - 1; i >= 0; i--)
    {
        enemies[i].Update(gameTime);

        if (enemies[i].Active == false)
        {
            enemies.RemoveAt(i);
        }
    }
}

Esto verifica una serie de cosas significativas (como si es necesario agregar o quitar enemigos del juego) dependiendo la cantidad.

Dentro del método Update() llamamos a UpdateEnemies que acabamos de escribir. Justo después de actualizar nuestro background.

// Update the enemies
UpdateEnemies(gameTime);

Por último, nos queda dibujar los enemigos en pantalla. Esto es sencillo recorriendo la lista de enemigos que creamos y llenamos, llamando al método Draw de cada instancia de enemigo.

Entonces, en nuestro método Draw()  justo después de dibujar el fondo, agregamos el siguiente código:

// Draw the Enemies
for (int i = 0; i < enemies.Count; i++)
{
    enemies[i].Draw(spriteBatch);
}

 

Enemigos en pantalla

Así debería verse nuestro juego al correrlo, con enemigos aleatorios apareciendo uno detrás de otro.

image

Descarguen el juego en este estado, desde el siguiente link: http://sdrv.ms/JfxLqZ

Calculo de colisiones

Carrera de XNA – Capítulo 4 – Artículo 7

shooter_collision_optLas colisiones nos permiten detectar el “choque” entre dos elementos del juego.

El cálculo de colisiones es una de las tareas más comunes en todo tipo de juegos, desde plataformas, juegos de carreras, peleas, y hasta el más simple Pong utiliza este tipo de cálculo.

La colisión a detectar es entre la clase del jugador creada al principio y la clase Enemy que creamos recientemente.

 

Para esto dentro de nuestro Game1, crearemos el siguiente método UpdateCollision().

private void UpdateCollision()
{
    // Use the Rectangle's built-in intersect function to
    // determine if two objects are overlapping
    Rectangle rectangle1;
    Rectangle rectangle2;

    // Only create the rectangle once for the player
    rectangle1 = new Rectangle((int)player.Position.X,
    (int)player.Position.Y,
    player.Width,
    player.Height);

    // Do the collision between the player and the enemies
    for (int i = 0; i <enemies.Count; i++)
    {
        rectangle2 = new Rectangle((int)enemies[i].Position.X,
        (int)enemies[i].Position.Y,
        enemies[i].Width,
        enemies[i].Height);

        // Determine if the two objects collided with each
        // other
        if(rectangle1.Intersects(rectangle2))
        {
            // Subtract the health from the player based on
            // the enemy damage
            player.Health -= enemies[i].Damage;

            // Since the enemy collided with the player
            // destroy it
            enemies[i].Health = 0;

            // If the player health is less than zero we died
            if (player.Health <= 0)
            player.Active = false;
        }

    }
}

Analicemos un poco este método. Teniendo en cuenta que tanto nuestro jugador como nuestro enemigo son elementos gráficos, que se enmarcan dentro de rectángulos (mas allá de las partes curvas que no se dibujan) podemos detectar la colisión entre estos, sabiendo su posición, ancho y alto.

La clase Rectangle con su método Intersect nos resuelve esta lógica, pero debemos tener en cuenta que cuanto más “Redondeado” es nuestro objeto a dibujar, menos precisión tendremos en el cálculo.

Para finalizar con esta detección de colisiones, procederemos a llamar al método UpdateCollision() desde nuestro Update(), justo después de UpdateEnemies() que agregamos en el artículo pasado.

// Update the collision
UpdateCollision();

Al correr el juego, veremos como cada enemigo desaparece al colisionar con nuestro jugador. Pueden descargar el juego en este estado desde el siguiente link: http://sdrv.ms/JfxIeK

Dibujando texto en la pantalla

Carrera de XNA – Capítulo 2 - Artículo 4

 

Introducción

En este artículo veremos un punto clave para la creación de cualquier juego: Dibujar texto (cadenas de caracteres) en la pantalla, utilizando las fuentes disponibles. Veremos la clase principal involucrada en la creación de textos, así como la forma de configurarla mediante un archivo de contenido.

 

SpriteFont

Esta clase representa una Fuente o Tipografía a nivel de código. Será necesario crear una instancia de la misma a través de un archivo de tipo XML con la configuración del tipo de letra, tamaño y características (negrita, cursiva, etc.).

 

Creando un SpriteFont

image 

El Archivo SpriteFont

La estructura del archivo es bastante sencilla, como podremos ver a continuación tiene campos que son clave para la definición de la fuente:

  • Size: Tamaño de la fuente en puntos
  • Font Name: Nombre de la fuente (ver Fuentes Disponibles)
  • Spacing: Espaciado entre caracteres
  • Style: Bold (Negrita), Regular (Común) e Italic (cursiva)

Los campos restantes del archivo serán vistos en profundidad en el nivel Intermedio de la carrera.

 

Creando un archivo SpriteFont

Para añadir un archivo de tipo SpriteFont, debemos ir a nuestro Proyecto de contenido hacer click derecho en el mismo, para luego seleccionar la opción Agregar, Nuevo Elemento.

image

Luego debemos elegir de la lista de elementos disponibles el tipo Sprite Font y configurar un nombre para el mismo.

image

Se creará el archivo dentro del proyecto de contenido. Para finalizar podemos cambiar algunas propiedades como el Size y Style, a modo de ejemplo:

image

 

Fuentes Disponibles

Es importante contar con fuentes licenciadas o bien gratuitas. XNA Game Studio nos provee un pack de 15 fuentes para descarga inmediata (http://create.msdn.com/en-US/education/catalog/utility/font_pack). XNA se encarga de empaquetar la representación de cada carácter en un archivo de tipo XNB al momento de compilar, por lo cual no es necesario que la persona que instale nuestro juego tenga la fuente instalada en su sistema.

También podemos encontrar mas fuentes de Microsoft licenciadas de manera gratuita en: http://msdn.microsoft.com/en-us/library/ms746705.aspx.

image

Dibujando con el SpriteFont

Una vez definida nuestra fuente a través del archivo SpriteFont e inicializada en nuestro método LoadContent podemos hacer uso de la misma en el método Draw de la siguiente manera:

image

Analizando los parámetros del método DrawString podemos ver:

  • textoFont: Es nuestra instancia de SpriteFont, define la tipografía a utilizar como vimos previamente.
  • “Prueba”: Es el texto a dibujar en pantalla, en este caso es fijo pero puede ser una variable (como el puntaje).
  •  new Vector2(0,0) : Estamos indicando la posición en X,Y para colocar el inicio de nuestro texto.
  • Color.Orange: Color para dibujar el texto en pantalla. En este caso, naranja.

image

Fondo Desplazable en 2D

Carrera de XNA – Capítulo 2 - Artículo 5

 

Introducción

Los Fondos Desplazables permiten crear el efecto de “movimiento” en cualquier juego, sin necesidad de renderizar grandes cantidades de elementos en pantalla. La idea general consiste en utilizar una imagen de mayor tamaño que la pantalla para luego moverla de acuerdo a lo que suceda en el juego generando el efecto de traslación.

 

¿Que Necesitamos?

Una imagen de fondo para crear el efecto de movimiento. Debe ser lo suficientemente grande para no dejar bordes en nuestra pantalla definida de juego.

 

El Proceso

Podemos resumir el proceso en:

  1. Añadir el archivo de imagen de fondo a nuestro proyecto
  2. Definir variables en nuestro código para manejar la textura
  3. Cargar la textura en memoria
  4. Dibujar la posición inicial del fondo
  5. Actualizar la posición en el método Update

 

Video Demostrativo

A continuación, el video tutorial de como realizar un Fondo Desplazable en 2D con XNA, en este caso para Windows.





Fondo Desplazable

Herramientas de desarrollo

Carrera de XNA – Capítulo 1 - Artículo 4

 

Introducción

En este artículo analizaremos las herramientas principales para desarrollo de videojuegos sobre XNA.

A su vez analizaremos los pasos básicos de instalación de cada una de ellas sobre el sistema operativo Windows 7.

 

La Plataforma, la Herramienta y el SDK

Podemos separar en tres grandes grupos todo lo disponible para desarrollo en esta tecnología.

Por un lado contamos con XNA Framework como plataforma de desarrollo, es decir un conjunto de librerías que nos facilitan el trabajo a la hora de programar un videojuego en cualquiera de las 3 plataformas de Microsoft.

 

En segundo lugar tenemos el XNA Game Studio, un set de herramientas de desarrollo que se acoplan a nuestro IDE preferido (Visual Studio 2010) para poder desarrollar fácilmente sobre el XNA Framework.

 

Cabe destacar que debemos tener previamente instalado el Visual Studio 2010 para poder desarrollar con Game Studio, o bien utilizar la versión Express.

En ultima instancia, el Windows Phone SDK en su versión más reciente, es un conjunto de cosas que contiene el Game Studio, el Visual Studio 2010 Express (para Windows Phone) y el XNA Framework en un paquete unificado. Esto es una gran ventaja si no tenemos nada instalado en nuestra computadora y deseamos bajar un único archivo con todo lo necesario.

image

Figura 1 - Ecosistema de Videojuegos XNA

Requerimientos

Para el Windows Phone SDK tenemos requerimientos de instalación muy específicos que se pueden resumir en la siguiente tabla:

Sistemas Operativos Soportados

Windows Vista SP 2 x86 y x64

Windows 7 x86 y x64

Nota: Starter Edition no es soportado

Sistemas Operativos no Soportados

Windows Server

Windows XP

Máquinas Virtuales

Hardware

4GB de Espacio Libre en el Disco

3GB de Memoria RAM recomendada

Placa de Video con soporte para DirectX 10 en adelante.

Sporte para Windows Display Driver Mode (WDDM 1.1) Microsoft Direct3D

Nota: El Emulador de Windows Phone tiene requerimientos particulares para correr correctamente.

Software

Para hacer pruebas sobre dispositivos necesitaremos el Zune Software

No es obligatorio contar con Visual Studio 2010 professional, ya que la versión Express se incluye en la descarga.

 

Windows Phone SDK

¿Que contiene exactamente este SDK? Más allá del desarrollo de videojuegos con XNA, el paquete completo incluye los siguientes:

  • Visual Studio Express: Una versión limitada del IDE para el desarrollo sobre Windows Phone.
  • Windows Phone SDK: Herramientas de desarrollo para el teléfono.
  • Windows Phone Emulator: Emulador del teléfono, solo corre en máquinas físicas (no virtuales)
  • Silverlight 4 SDK and DRT: Herramientas para desarrollo de Aplicaciones sobre el teléfono.
  • Windows Phone SDK Extensions for XNA Game Studio: Si ya poseemos Game Studio nos instala los templates para Windows Phone.
  • Expression Blend 4: Herramienta de diseño para simplificar el armado de pantallas de Aplicaciones.
  • Microsoft Advertising SDK for Windows Phone 7: Ofrece controles para incluír propagandas dentro de nuestros juegos y aplicaciones.

Virtualización y Windows Phone Emulator

En el caso de querer crear un entorno virtualizado (con Virtual PC o similar) para la instalación de las herramientas, tenemos que recordar que el Windows Phone Emulator no va a funcionar sobre máquinas virtuales al tratarse de una plataforma virtual en si mismo. Por lo tanto recomendamos instalar el SDK sobre una máquina física con Windows Vista o Windows 7 directamente.

Nota: Windows Phone SDK viene localizado al idioma Español junto con Visual Studio Express para Windows Phone. A su vez existen otros 9 lenguajes oficiales que podemos encontrar (Portugués, Francés, Alemán, etc.) para descargar.

image

 

Otras Herramientas

Existen varios complementos que funcionan con XNA, para agilizar el desarrollo de tipos específicos de juegos (engines), manejo de contenidos e imágenes (sprites), probar nuestros juegos (test tolos), modificar juegos existentes (editors) y mucho más.

La mayoría son de tipo Open Source o Gratuitos y si bien existen Pagos (sobre todo Motores para tipos específicos de Juegos) hay muchas comunidades abiertas dispuestas a colaborar con cualquier desarrollador independiente.

Plataformas que soportan XNA

Carrera de XNA – Capítulo 1 - Artículo 3

Introducción

El presente artículo muestra las plataformas soportadas por XNA y los requerimientos básicos de desarrollo y ejecución. A su vez, detalla las opciones para la creación de juegos multi-plataforma y algunos consejos útiles a la hora de trabajar con los mismos.

 

Plataformas

Las 3 plataformas principales de Microsoft están soportadas por XNA para el desarrollo de videojuegos.

  • Windows Phone (Móvil)
  • Xbox 360 (Consola)
  • Microsoft Windows (PC)

    image image

    image

     

    Como crear juegos Multi-Plataforma

    Existen dos métodos principales para la creación de juegos en múltiples plataformas.

  • Crear una Solución completa en XNA Game Studio para cada plataforma
  • Crear una única Solución con partes comunes (lógica del juego) y un proyecto de Implementación para cada plataforma.

     

    Creando una solución Multi-Plataforma

    Conceptualmente es sencillo: Podemos mantener dentro de una misma Solución toda la lógica principal del juego y las diferentes versiones para cada plataforma, con el objetivo de reutilizar la mayor cantidad de código y contenidos posible.

     

    Asistentes de Conversión

    Una de las características más interesantes en XNA Game Studio es la capacidad de crear copias para plataformas específicas a partir de un juego base.

    A modo de ejemplo, podemos crear nuestro juego para Windows y luego crear una “Copia para Xbox 360” y otra “Copia para Windows Phone” (siempre que tengamos el SDK de Windows Phone instalado. Ver Carrera de Windows Phone en MVA)

    Nota: Cualquier proyecto de cualquier plataforma puede ser convertido a cualquier otra. Al hacerlo, todas las referencias de una plataforma específica se traducen al equivalente dentro del proyecto nuevo. A su vez, los proyectos creados con el Asistente de Conversión quedan asociados al original, y cada archivo agregado, renombrado o eliminado es también afectado en todas las otras plataformas.

     

    Contenido específico

    El Contenido de nuestro juego, es decir la colección de imágenes, sonidos, fuentes, texturas, etc. debe estar personalizado para cada plataforma. Si bien podemos crear un proyecto genérico de contenido con elementos “comunes”, las buenas prácticas indican que debemos crear un proyecto particular de contenido para cada plataforma.

    image

    Figura 1 - Contenido por Plataforma

    Como podemos ver en la Figura 1 podemos crear una Solución con proyectos para cada plataforma, en este caso MyFirstGame (para Windows), Windows Phone Copy of MyFirstGame (para Windows Phone) y por último Xbox 360 copy of MyFirstGame (para Xbox).

    Los 3 proyectos referencian al contenido común, ubicado en MyFirstGameContent pero solamente la versión para Windows Phone referencia al proyecto de contenido para dicha plataforma PhoneContent.

     

    Requerimientos para el Desarrollo

    XNA Game Studio está disponible para los siguientes sistemas operativos:

    • Windows XP Home, Professional, Media Center y Tablet PC (Sin soporte para   Windows Phone)
    • Windows Vista Home Basic, Home Premium, Business, Enterprise y Ultimate
    • Windows 7 Home Basic, Home Premium, Professional, Enterprise y Ultimate

     

    En cuanto al Hardware hay requerimientos específicos por plataforma que incluyen:

  • Placa de video con DirectX9.0c y Shader Model 1.1.
  • Placa de video con DirectX 10 y WDDM 1.1 para el emulador de Windows Phone.
  • Disco Rígido en la Xbox 360 para desarrollar sobre esta plataforma.

     

    Código Específico por Plataforma

    Si necesitamos escribir alguna parte de código que se ejecute, dependiendo de la plataforma en la que estamos, podemos utilizar los símbolos de compilación, es decir palabras clave que pueden ser “consultadas” a través de código.

    • WINDOWS
    • XBOX / XBOX360
    • WINDOWS_PHONE

    El siguiente fragmento de código en C# muestra como detectarlos con sentencias de pre-compilación (las líneas de código que comienzan con un carácter “#”).

    image

    Creacion de un proyecto de XNA

    Carrera de XNA – Capítulo 1 - Artículo 5

    Como crear un proyecto básico de XNA para Windows, y utilizar la herramienta automática para tener la versión Windows Phone / XBOX 360 sin esfuerzo.





    Primer Video

    Carrera de XNA en MVA

     

    Índice de la Carrera

    Capítulo 1

    • Articulo 1. Que es XNA? Versiones de XNA – Link
    • Articulo 2. El Mecanismo de XNA– Link
    • Articulo 3. Plataformas que soportan XNA– Link
    • Articulo 4. Herramientas de desarrollo fundamentales y opcionales– Link
    • Articulo 5. Creación de un proyecto de XNA– Link

    Capítulo 2

    • Articulo 1. Estructura de los proyectos– Link
    • Articulo 2. Despliegue de Sprites en 2D– Link
    • Articulo 3. Despliegue de Sprites con Animacion 2D– Link
    • Articulo 4. Dibujando texto en la pantalla– Link
    • Articulo 5. Un fondo desplazable 2D– Link
    • Articulo 6. Efectos de Sonido– Link

    Mecanismos Avanzados para Windows Phone

    Carrera de XNA – Capítulo 3 – Artículo 4

     

    Introducción

    Windows Phone nos ofrece una serie de controles únicos para utilizar dentro de nuestros juegos en XNA. Entre las herramientas que podemos contar se encuentran:

    • Brújula: detección de dirección en base a un campo magnético
    • Acelerómetro: detección de rotación sobre los ejes del teléfono
    • Voz: detección de comandos hablados al teléfono

    En esta ocasión veremos un video que nos enseña a manejar el input de nuestro juego a través del Acelerómetro, modificando la posición de un elemento en pantalla. Utilizaremos solo uno de los ejes disponibles para simplificar el control.

    image


    En el siguiente video podremos aprender cosas como:

    1. Creación del proyecto en XNA
    2. Definición de un cuadrado y su textura
    3. Inicialización de las variables necesarias y el acelerómetro
    4. Dibujo de la posición inicial
    5. Detección del giro sobre un eje a través del acelerómetro
    6. Modificación de la posición del cuadrado




    Ver en Pantalla Completa

    Mecanismos de Interacción en PC

    Carrera de XNA – Capítulo 3 – Artículo 1

    Introducción

    Los Mecanismos de Interacción (comúnmente llamados Controles) permiten al usuario interactuar con nuestro Juego. En este primer artículo, veremos los Controles básicos disponibles para plataforma Windows como el Teclado y el Mouse. En próximas entregas veremos uso de controles avanzados como Kinect for Windows.

     

    Usando el Teclado

    El método tradicional para cualquier juego es utilizando al menos una o dos teclas en el Teclado. Cabe destacar que XNA tiene soporte para múltiples jugadores en una misma computadora, ya que podemos detectar múltiples teclas presionadas en un mismo instante.

    El lugar correcto para poner nuestra lógica de input es en el método Update. Al detectar una o más teclas presionadas podremos modificar valores en nuestro juego para ver reflejado en acciones el input del usuario.

    Para esto:

    1. Declaramos las variables necesarias
      image
    2. Creamos una textura2d de color Rojo y un rectángulo para posicionar
      image
    3. Dibujamos en la pantalla el rectángulo
      image
    4. Modificamos la posición si detectamos input del teclado con alguna de las flechas.
      image

    Posición Original

    image

    Luego de tocar la flecha hacia arriba

    image


    Utilizando el Mouse

    El segundo método de entrada tradicional es el Mouse (o Ratón). Para detectarlo es necesario hacer uso de la clase Mouse y, al igual que hicimos con el teclado, obtener el estado actual. Cabe destacar que para que el mouse sea visible en un juego XNA debemos correr sobre plataforma PC e indicar al momento de inicializar el juego que queremos tener el cursor visible. En esta ocasión utilizaremos la posición del cursor y el click. En futuros niveles de la carrera aprenderemos a utilizar comandos avanzados como la Rueda de Scroll, el botón Derecho, etc.

     

    El ejemplo a continuación dibuja un cuadrado en pantalla y lo mueve a la posición exacta en donde hacemos clic con el Mouse.

    Para esto:

    1. Declararemos nuestras variables para el cuadrado y su textura
      image
    2. Habilitaremos el Cursor en el juego
      image
    3. Inicializaremos nuestro elemento de cuadrado y la textura
      image
    4. Dibujaremos el cuadrado en la posición inicial
      image
    5. Al detectar un Clic cambiaremos la posición del cuadrado
      image


    Posición Incial
    image

    Al hacer Clic en algún lado

    image