Difoosion

Me llena de orgullo y satisfacción que me hayan acogido en Difoosion como editor en su blog sobre noticias de Windows Phone: Winphone metro.

Logo de Winphone Metro

Tienen una red de blogs bastante interesante sobre el mundo móvil, no sólo de Windows Phone:

Logo Andro4all

Andro4All: Noticias sobre la plataforma Android.

Logo Applesencia

Applesencia: Noticias sobre Apple.

Logo Xombit

Xombit: Noticias sobre ciencia, tecnología, cultura, gadgets, series y juegos.

Logo XombitGamesXombit Games: Noticias sobre videojuegos de todas las plataformas

Uyuyuy, una sorpresa de última hora y es que ayer se lanzó:

Logo SportAdictosUn blog sobre deporte, salud y nutrición.

La verdad es que es una red de blogs muy recomendable para estar al tanto de lo que se cuece sobre estos temas y es que se actualizan bastante a menudo y creo que a los que me leéis os puede interesar.

Espero que os gusten.

Windows Azure Media Services

Hace un mes que se anunció la salida de Windows Azure Media Services.

Es el servicio en la nube que nos permite construir y publicar soluciones multi-media a nuestros clientes. Ofrece un montón de servicios listos para codificar, almacenar, proteger y lanzar por streaming (tanto live como bajo demanda) de video. También integra y expone servicios de nuestros partners – permitiendo una pila de funcionalidad increíble.

Podéis usar Windows Azure Media Services para entregar soluciones a cualquier dispositivo o cliente – como HTML5, Silverlight, Flash, Windows 8, iPads, iPhones, Android, Xbox, y Windows Phone. Windows Azure Services soporta una gran variedad de formatos de streaming – como Smooth Streaming, HTTP Live Streaming (HLS), y Flash Media Streaming.

Uno de los aspectos que hacen único a Windows Azure Media Services es que todas sus características están expuestas usando una API REST HTTP. Esto es así tanto para los servicios multimedia, como para los servicios de nuestros partners. Esto hace que sea muy fácil automatizar workflows multimedia e integrar los servicios en nuestras aplicaciones. Como el resto de Windows Azure, sólo hay que pagar por los servicios de Windows Azure Media Services que usemos – haciendo que el coste sea muy interesante.

Windows Azure Media Services

Windows Azure Media Services usa el mismo backend que se usa para ofrecer eventos de deportes en vivo – como los juegos Olímpicos de Invierno de 2010, el Mundial de Fútbol 2010, los Campeonatos de Wimbledon 2011 y la SuperBowl 2012. Con Windows Azure Media Services podremos montar y automatizar soluciones en la nube que sean capaces de ofrecer soluciones a una gran audiencia.

Aprende más

Hemos usado Windows Azure Media Services en el 2012 National Association of Broadcasters (NAB) Show, los asistentes pudieron hablar con el equipo y ver demos en directo.

También podéis visitar windowsazure.com media para ver las características que ofrece, y pasaros por los recursos para desarrolladores de windowsazure.com para a ver cómo podemos usarlo. También podéis registraros para una cuenta de prueba enviando un email a mediaservices@microsoft.com (junto con los detalles del escenario para el que lo queréis usar).

Estamos deseando ver las cosas que sois capaces de hacer.

Scott.

Traducido por: Juan María Laó Ramos.

Artículo original.

Primer camino para alcanzar el Nirvana del Garbage Colector

En este post vamos a ver una de las técnicas usadas para evitar que el recolector de basura se ejecute en mitad de la partida de un juego, teniendo como consecuencia una pérdida de rendimiento.

Para ponernos en contexto y verlo más claro debemos saber que lo que vamos a ver es realmente importante en el mundo de los videojuegos ya que en este mundo el consumo de memoria y de recursos es algo crucial y hay que optimizarlos al máximo. En este sentido el proceso de recolección de basura es algo importantísimo ya que consume recursos del sistema y si se ejecuta en mitad del juego se puede producir una bajada de rendimiento importante.

En este primer post de la serie vamos a ver una de las formas de evitarlo.

Este es el post original de Shawn Hargreaves:

En este post vimos cómo saber si el recolector de basura de nuestra Xbox está tardando mucho. Vimos que el tiempo que tarda el recolector de basura es el resultado del producto del número de veces que se recolecta por la latencia misma de la recolección.

Esto nos hace pensar en dos formas de mejorar el rendimiento del proceso de recolección de basura. Podemos reducir el número de recolecciones, o podemos reducir la latencia del proceso de recolección. Con que consigamos reducir uno de esos valores se notará una mejora bastante notable en el rendimiento total.

En este post vamos a ver el primer caso:

Elegir una frecuencia de recolección adecuada

La frecuencia con la que se produce la recolección de basura es directamente proporcional al número de veces que reservamos memoria. Si nunca reservamos memoria, el proceso nunca se lanzará.

Para reducir el número de recolecciones, debemos reservar memoria para aquello que vamos a necesitar mientras cargamos los niveles, y evitar reservas de memoria en el tiempo de juego, evitando así que el recolector de basura entre en acción en mitad del juego.

Hay varias formas para evitar la reserva de memoria:

No reserves memoria (jah!)

Es simple, no hagas news de tipos por referencia. Está bien cuando lo hacemos con tipos por valor como Matrix, Vector3, Color y demás.

Cada vez que queramos hacer un new de un tipo por referencia, debemos usar un pool de objetos para reusar sus referencias. Los ejemplos de Particle y Audio 3D de creators.xna.com usan esta técnica, y SwampThingTom escribió sobre un pool genérico y reusable.

No uses clases que reserven memoria por sí mismas.

Cuando añadimos datos a una colección como un List<T> o un Dictionary<K,V>, se reserva memoria cuando se quieren ampliar. Podemos evitarlo usando el constructor existente en el que se indica el tamaño específico de la colección. Usando este constructor hacemos que se reserve la memoria necesaria para toda la colección haciendo que esta no tenga que ampliar ni disminuir la memoria que necesita.

Ten cuidado cuando formatees cadenas. Es difícil manipular cadenas en .NET sin causar reservas de memoria.

Evita que el CLR reserve memoria.

El CLR reserva memoria cuando ocurre el boxing. ¡Evítalos como si de una plaga se tratase! El boxing puede ocurrir por muchas razones, algunas son obvias, otras no tanto, veamos cuándo ocurre el boxing.:

  • Si asignamos un tipo por valor a una variable Object.
  • Si guardamos tipos por valor en una colección no genérica.
  • Si accedemos a tipos por valor a través de una interfaz.
  • Si usamos un enumerado como clave de un diccionario, las operaciones internas del diccionario generan boxings. Podemos evitarlo usando claves enteras (de tipo int), y hacer casting a los valores de nuestro enumerado antes de añadirlas al diccionario.

No dejes que el compilador de C# reserve memoria.

Puedes ser realmente tricky usar delegados (especialmente los que están definidos “inline”) sin hacer que el compilador reserve memoria. Esto es todo un mundo por sí solo, pero en caso de duda evita el uso de delegados o eventos

Los yield hacen que el compilador reserve siempre memoria.

Los foreach pueden reservar memoria sin cuidado. Pero ojo, esto no significa que tengamos que evitarlos. Suele ser la forma más rápida de recorrer una colección.  Aprended las reglas para usarlos de manera adecuada

Todo lo que no reserve memoria está bien.

A los discípulos del camino de la frecuencia se les permite tener estructuras de datos complejos. Pueden reservar cientos de miles de objetos mientras su juego carga, llenar el heap con una malla de objetos referenciados entre si. Siempre que no reserven nada después de que termine de cargar, el recolector de basura nunca se ejecutará, así que no hay problema ninguno en mantener en memoria objetos complejos.

Resumen

Hemos visto una forma de hacer que el recolector de basura no se ejecute mientras se está jugando al juego: evitando hacer reservas de memoria durante el juego, en vez de eso las hacemos en el proceso de carga y se mantiene todo en memoria.

En el próximo post veremos la segunda opción: Elegir la latencia adecuada.

Juan María Laó Ramos.

Post original.

La “locura” de las optimizaciones en los juegos.

¿A quien no le preocupa que su código no sea óptimo? Eso de “funcionar funciona … pero tarda mucho” no es escusa para no preocuparse por optimizar las partes optimizables. Una de las mejores formas de evitarse problemas desagradables cuando el sistema está “terminado” es interiorizar los conceptos y aplicarlos en la práctica de manera casi automática.

Para ponernos en contexto y verlo más claro debemos saber que lo que vamos a ver es realmente importante en el mundo de los videojuegos ya que en este mundo el consumo de memoria y de recursos es algo crucial y hay que optimizarlos al máximo. En este sentido el proceso de recolección de basura es algo importantísimo ya que consume recursos del sistema y si se ejecuta en mitad del juego se puede producir una bajada de rendimiento importante.

Estos conceptos no son sencillos, ya que involucran “gran cantidad” de detalles que se suelen pasar por alto.

En un afán de mejorar y compartir lo aprendido vamos a ver en detalle un par de posts de  Shawn Hargreaves que he encontrado y que publicaré en varios posts para no saturar y podamos interiorizarlos mejor.

Espero que os sirva.

Juan María Laó Ramos

¿Veremos en The Windows Phone Developer Conference a WP Apollo?

Dentro de unos meses se cumplen dos años de la salida de Windows Phone 7 y un año de la de  Mango. Como no deja de ser una ciencia, la estadística nos dice que en Octubre estará disponible Windows Phone 8 Apollo.

Entre los días 22 y 24 de Octubre de 2012 también está programado el evento “The Windows Phone Developer Conference”   que en WPCentral  anuncian como el primer ciclo de conferencias de Windows Phone que no está patrocinado por Microsoft.

WPDevcon

En el programa del evento podemos ver la gran cantidad de sesiones sobre WP7. Sin embargo, en la noticia de WPCentral destacan que el gran artista invitado será Apollo, nombre en clave que los de Redmon han dado a Windows Phone 8. En WPCentral destacan que habrá una sesión específica para aprender todo lo que traerá Apollo, como resoluciones de pantalla, los cambios que habrá en el Marketplace,  las características que tendrá el nuevo emulador y se verá cómo migrar las aplicaciones de Mango a Apollo.

Todo un caramelo para desarrolladores, sin embargo si nos vamos a la web del evento y vemos el pdf con el programa no se hace referencia a Apollo en ninguna parte.  Lo que me ha llamado la atención es que en los comentarios de la noticia se han fijado en la fecha de creación y modificación del pdf. Así que parece que han eliminado las referencias a Apollo del documento.

¿Una estrategia de marketing para conseguir más asistentes? Es posible, pero sin duda que por esas fechas ya se tendrán más detalles sobre la nueva versión de Windows Phone y seguramente ese evento sea un lugar privilegiado para enterarnos de cómo adaptar las aplicaciones existentes a la nueva versión del sistema operativo.

Más tiempo para Cell·APP Awards

Las plegarias han sido oídas y  hemos ampliado el plazo para presentar juegos y aplicaciones a Cell·APP Awards:

Cell·App Awards

Desarrolla tu app usando CELL·SDK. Debes rellenar este formulario para participar y enviarnos el formulario de suscripción.

  • Fin de Inscripción: 31/05/2012
  • Último día para enviarnos tu app: 15/06/2012
  • Periodo de votaciones Online: Empezará una vez envíes tu app y nosotros la subamos. Este periodo acabará el 26 de Junio
  • El Jurado valorará las apps más votadas a partir del 28 de Junio.
  • La entrega de premios será el 29 de Junio.

Todavía no tienes Cell·SDK?! O_o

Pues descárgalo aquí.

Design a site like this with WordPress.com
Get started