miércoles, 20 de octubre de 2010

VIDEO PUBLICITARIO OFICIAL DE WP7: “REALLY?”

Como ya deben saber, el grupo de dispositivos Windows Phone 7 ha sido recientemente presentado al mundo durante un evento en la ciudad de New York.

Ahora, el primer comercial oficial –llamado “Really?"- ya salió:

Que lo disfruten!
~Pete

> Vínculo a la versión en inglés.

jueves, 14 de octubre de 2010

REEMPLAZANDO EL API DE GESTION DE CONTENIDO: PRELUDIO

Como mencioné brevemente en una publicación anterior, por un período de tiempo (ya cercano a 2 años) he estado desarrollando mi propio API de gestión de contenido como reemplazo del liberado como parte del Framework de XNA.

¿Por qué? Al comienzo estaba tratando de sortear las limitaciones de este último respecto a su incapacidad de gestionar con propiedad la operación Dispose. Y al hacerlo, noté -cuando miré el código fuente del original con “Reflector”- que había espacio para mejoras (con un rediseño).

Luego de casi dos años de desarrollarlo como parte de mi propio motor de videojuegos basado en XNA (estando este último aún en desarrollo), decidí rediseñar mi gestor de contenido como un módulo independiente para que pueda ser utilizado con XNA sin tener que enchufar mi motor (ni completamente ni en parte).

No voy a liberar el código fuente de mi API, así que en las próximas entregas de esta serie de artículos voy a discutir públicamente lo que mi API tiene para ofrecer, de forma que cualquiera pueda leerlo, enfocándome en “El Qué” y no en “El Cómo”; así que estaré presentando principalmente características y resultados (si … ya se, ya se, … “que plomazo!”).

Entonces, qué sigue? En la parte 1 (y muy posiblemente además en la parte 2) voy a presentar mi API, explicando las diferencias con la que se encuentra por defecto, y luego de ello empezaré a hablar de los resultados obtenidos (sí! con cifras, capturas de pantalla y demás) para las diferentes plataformas donde corrí las pruebas.

Hasta la próxima,
~Pete

> Vínculo a la versión en inglés.

viernes, 17 de septiembre de 2010

XNA GS 4.0 FINAL YA ESTA DISPONIBLE

Hoy es un gran día para nosotros, XNAers, puesto que la versión final de XNA Game Studio 4.0 ya está al alcance de todos!

Por favor lean el blog de Aaron Stebner por detalles de instalación.

A disfrutar!
~Pete

> Vínculo a la versión en inglés.

viernes, 10 de septiembre de 2010

OBTENIENDO UNA REFERENCIA AL OBJETO QUE INVOCA A UN METODO EN C#

Ok, luego de tomarme un mes de asueto de cualquier actividad de blogueo, supongo que es tiempo de ponerme al día y publicar de nuevo. Y creo que no hay mejor forma de hacerlo que escribir un artículo explicando una forma de obtener una referencia a un objeto que llama a un método específico.

Durante los últimos dos años he estado trabajando duro en un API de reemplazo al Content Manager del Framework de XNA para usarla en mi propio motor de videojuegos “que nunca finaliza” (voy a escribir sobre esto más adelante). En etapas tempranas de su desarrollo encontré una forma de solucionar esta traba referencial que ha estado creando dolores de cabeza a muchos desarrolladores, globalmente (siendo yo, uno de ellos, por mucho tiempo).

Aunque debo admitir que en algún punto del ciclo de desarrollo de mi API decidí abandonar esta solución “parche”, luego de leer uno de los artículos mencionados por Shawn aquí (adivinen cuál), entiendo que es una gran oportunidad para hablar de ello.

Un poco de historia … previo a encontrar esta solución lo intenté todo: desde probar usar, sin suerte, la información contenida en instancias del StackFrame e incluso delegados hasta finalmente “desistir” y utilizar un enfoque ingenuo como ser el pasar al invocador como parámetro en la firma de la operación. Pero, luego vino el Framework .NET 3 y los métodos de extensión al rescate!

Por favor coincidan conmigo que el ejemplo presentado en este artículo es uno simple para mostrar su uso, pero créanme cuando digo que puede extenderse a escenarios complejos.

Dicho eso … si desean saber cuál objeto está invocando a un cierto método de una clase como (que puede esta sellada o nó):

  public sealed class MyCalledClass
  {
    internal bool JustReturnTrue(int myParameter)
    {
      return true;
    }
  }

Siendo el invocador, digamos, una especificación de la siguiente clase:

  public abstract class MyCallingClass
  {
    public void Print()
    {
      Console.WriteLine("I am the object which is just about to call
         the monitored operation named 'JustReturnTrue' …"
);
    }
  }

Entonces todo lo que tienen que hacer es implementar el método de extensión que sigue para los tipos que deseen (en mi ejemplo, “MyCallingClass”):

  public static class MyExtensionMethod
  {
    public static bool ExecuteOperation<T>
      (this T mycallingClass, int myParameter)
      where T: MyCallingClass
    {
      mycallingClass.Print(); // Cámbienlo con sus propias cosas.
 
      return new MyCalledClass().JustReturnTrue(myParameter);
    }
  }

El truco aquí es diseñar y separar ensamblados y espacios de nombre de forma tal que todas las instancias de “MyCallingClass” no puedan ejecutar directamente la operación “JustReturnTrue” (dejo esa tarea como un ejercicio para el lector).

Pero hay un tema a seguir de cerca, sin embargo. Al hacer esto están de hecho agregando una llamada más (cosa que ya saben), lo cual no es en general un problema en Windows, pero para la XBox 360 y todos los dispositivos que utilicen el Compact Framework, podría resultar caro si se utiliza muchas veces en tarea o bucles intensivos o pesados.

Pero si Uds. realmente lo necesitan cuando la velocidad no es un inconveniente o para operaciones donde, por ejemplo, precisen establecer dueños de algo “automágicamente” tras bambalinas y luego evaluar si un dueño llama a una operación restringida antes de ejecutarla, entonces ahí lo tienen!

Sólo úsenlo sabiamente …
~Pete

> Vínculo a la versión en inglés.

martes, 20 de julio de 2010

ES OFICIAL: PRECIO DE KINECT CONFIRMADO

Todos Uds. ya saben esto: últimamente, ha habido mucha especulación en torno al precio del nuevo dispositivo que se viene para la consola XBox 360, originalmente conocido como “Project Natal” y recientemente rebautizado como Kinect.

Bueno, el tiempo de especulación finalizó puesto que MSFT ha confirmado los precios para las opciones de compra individuales y combinadas.

Interesados? Entonces averigüen más aquí.

No puedo esperar para “kinectarme” :)
~Pete

> Vínculo a la versión en inglés.

lunes, 14 de junio de 2010

PROYECTO NATAL TIENE UN NUEVO NOMBRE

En las últimas semanas, rumores se apoderaron de los blogs de noticias con articulos mencionando la posibilidad que el Proyecto Natal tuviera un cambio de nombre a algo más pegadizo.

Hoy, durante la presentación de MSFT en la E3, se ha confirmado que el nuevo nombre es “Kinect”.

Ni precios ni fechas estimadas de lanzamiento han sido anunciadas, así que mientras tanto vean este video para tener un pantallazo de lo que se viene este otoño:

Kinect

Que lo disfruten!
~Pete

> Vínculo a la versión en inglés.

viernes, 7 de mayo de 2010

¡SE ANUNCIARON LOS GANADORES!

Los 6 finalistas y los ganadores de los premios en efectivo de la competencia “Sueña.Crea.Juega” de este año han sido recientemente anunciados.

Como deben saber, la competencia había sido dividida en dos sabores: la estándar y el desafío Old-Spice.

Bien, también se ha publicado el nombre del videojuego y del equipo de desarrolladores que ganaron este último.

¡Felicitaciones a los ganadores y a los finalistas!
~Pete

> Vínculo a la versión en inglés.

viernes, 30 de abril de 2010

STEVE BALLMER EN ARGENTINA

Algunas semanas atrás fui invitado a la charla de Steve Ballmer sobre Cloud Computing en Buenos Aires, Argentina.

La charla se dio el pasado Martes en la Universidad Argentina de la Empresa (UADE) y duró alrededor de una hora.

Puesto que “crucé el charco” y asistí al evento puedo contarles que la presentación y todos los temas tratados fueron muy interesantes, así que para aquellos de Uds. que no estuvieron presentes en el evento les recomiendo mirar el video grabado, el cual ya está disponible en:

http://www.microsoft.com/argentina/cloud/ballmer.aspx (subtitulado al español).

Que lo disfruten!
~Pete

> Vínculo a la versión en inglés.

viernes, 16 de abril de 2010

PAGINA DE OFUSCADORES ACTUALIZADA

Simplemente una nota rápida: he actualizado la página que contiene la lista de ofuscadores de código IL de .NET, agregando dos que vale la pena chequear:

Pueden econtrar la lista completa aqui.

Salúd!
~Pete

> Vínculo a la versión en inglés.

miércoles, 24 de febrero de 2010

MICROSOFT ACTIVE PROFESSIONAL 2010

Ayer recibí, por parte del equipo de MSFT Technet y MSDN para Argentina y Uruguay, la distinción de “Microsoft Active Professional 2010”.

Este reconocimiento se otorga a los profesionales ubicados dentro del 5% de los contribuyentes más activos en la comunidad.

Muchas gracias a Microsoft por honrarme con este reconocimiento, nuevamente!

Salúd!
~Pete

> Vínculo a la versión en inglés.

viernes, 29 de enero de 2010

OBSERVANDO AL SOL ARDER - PARTE 3

Hace poco tiempo atrás escribí un par de notas de orientación técnica sobre el motor de renderizado, para XNA GS, conocido como “Sunburn”.

Esta vez, voy a obviar el lado técnico del tema para compartir grandes novedades sobre la más reciente versión de el mismo, la cual ha sido justo liberada: soporta iluminación y sombreado para Avatars, totalmente!!!

Es a caso un sombra suave lo que veo proyectada por ahí? Genial … tengo que descargar la v1.3.1 ya mismo!

Que la disfruten!
~Pete

> Vínculo a la versión en inglés.

sábado, 2 de enero de 2010

NUEVAMENTE MVP DE XNA/DIRECTX

El nuevo año 2010 ha comenzado con grandes novedades para mí: Microsoft me ha otorgado la distinción de MVP de XNA/DirectX MVP una vez más!

Es verdaderamente un honor ser un MVP. Gracias MSFT!

Salúd!
~Pete

> Vínculo a la versión en inglés.