[OT] Giro profesional… de bastantes grados…

 Hay un momento en la vida en el que buscas algo más… al final llega el día en que crees que tu puesto de trabajo se te ha quedado pequeño, y que la oferta de empleo que buscas no existe en infojobs. Ese día yo decidí unirme a unos socios para crear nuestra empresa: Plunge Interactive (http://www.plungeinteractive.com).

Y parece mentira como cambian las cosas a partir del día en que tomas esa decisión. Se acabó la tranquilidad de saber que tienes un jefe que, mejor o peor, al final el es tu responsable y tus errores son los suyos. Cuando eres empresario eso pasa a ser distinto. Tus errores son únicamente tuyos, y las repercusiones pueden ser mucho más grandes que lo que habías vivido hasta el momento… existe un riesgo muy grande de que las cosas vayan muy mal, pero también existe la posibilidad de que vayan muy bien. En definitiva, me encanta esto! 😀

La mala noticia es que mi tiempo para blogear va a reducirse todavía más… es lo único que no me gusta. Bueno, también se reducirá mi vida social, para que negarlo xD Pero ese es mi reto, y lo asumo con todas las ganas del mundo.

Ah, por cierto, tenemos varias ofertas de empleo en nuestra web. Si no encuentras exactamente la tuya, pero te dedicas al desarrollo de aplicaciones o juegos para smartphones, envíanos tu CV de todos modos, ya que en un breve período de tiempo esperamos necesitar más perfiles. El puesto de trabajo es en Lleida ciudad, más concretamente en el Parque Científico y Tecnológico.

Nos vemos!

Novedades desde el Mobile World Congress de Barcelona

Estos días estoy en el MWC de BCN (si estás dame un toque :-P), entre las cosas interesantes que he visto: móviles con pantalla 3D, el nuevo Galaxy de Samsung, cuya pantalla tiene un brillo y contraste excepcional… pero de lo que la gente habla, es de la reciente alianza entre Microsoft y Nokia. Mucha gente me ha comentado que daban por «muerto» el sistema operativo de Microsoft, que realmente lo tenía muy difícil para competir en un mercado ya «consolidado», dominado por Android y iOs, i el declibe de Symbian y BlackBerry… -y yo en cierto modo también, la verdad- pues bien, al parecer todo el mundo opina que las tornas podrían cambiar con esta alianza.

En la foto podéis ver a mi compañero y a mi, en el stand de Microsoft en el evento.

Otro tema digno de mención es, cómo no, el keynote de Steve Ballmer. Microsoft ha presentado la integración de Windows Phone 7 con Kinect. La verdad es que es algo que creo que muy pocos esperaban… -por lo menos yo-. Resulta que podremos interactuar con la Xbox desde nuestro móvil, algo curioso, y totalmente innovador, ya que, que yo sepa, ninguna otra compañía permite que una consola interactúe en tiempo real con otros dispositivos, permitiendo al usuario jugar de una forma nueva. El siguiente vídeo ilustra las posibilidades de esta interconexión:

[View:http://www.youtube.com/embed/ehS-AfM4b8I:550:0]

La verdad es que el keynote de Microsoft ha generado muchísima expectación… ved vosotros mismos esta foto, en donde podéis ver las masas luchando prácticamente a muerte para conseguir una plaza en el auditorio dónde hablaría Ballmer.

También es interesante ver los cientos de aplicaciones expuestas por sus desarrolladores, y la posibilidad de hablar con ellos. He podido ver muchas ideas refrescantes de empresas de todos los rincones del mundo.

Mañana más… hoy ha sido un día basante duro de congreso…

Ofuscación de código

En .Net es muy fácil decompilar una DLL y obtener el código fuente original (sin comentarios y toda la pesca, pero el código fuente, perfectamente funcional). El caso es que ejecutando una simple búsqueda en Bing se obtiene cómo resultado multitud de herramientas que permiten hacer esto.

¿Cómo evitarlo? Con las herramientas de ofuscación de código. Estas herramientas no impedirán la decompilación del código, pero sí que harán que sea prácticamente imposible entenderlo, y por tanto editarlo y utilizarlo para las malas artes de un programador mal intencionado. La “mala intención” podría consistir en sacar un juego o programa muy parecido al que hemos hecho nosotros.

Siempre es desagradable que copien tu trabajo… más ahún cuando has pasado muchas horas de desarrollo en él. Así que es necesario tener en cuenta el uso de las herramientas de ofuscación de código.

No me habría propuesto escribir este artículo sinó fuera porque en uno de los MSDN Flash de Windows Phone se recomendaba el uso de estas herramientas. No se si para evitar que los testers de Microsoft tubieran la tentación de decompilar alguna DLL, o bien simplemente para evitar que algún posible bug que causase la posibilidad de descargar un XAP a un usuario mal intencionado trajese consecuencias peores.

En cualquier caso, me parece un buen consejo ofuscar el código. ¿Cómo lo hacemos? La própia instalación de Visual Studio trae su herramienta de ofuscación (sólo las ediciones profesionales para arriba). Usar este ofuscador ya se ha escrito en mil sitios, por ejemplo este: http://forum.codecall.net/tutorials/6391-tutorial-visual-studio-2008-obfuscating-dotfuscator.html, así que no voy a repetirme.

Lo que sí me gustaría añadir es el “descubrimiento” de un ofuscador genialmente sencillo, y además gratuito, que encontré hace unos días buscando una de estas herramientas. Se llama EazFuscator.net, y a pesar de lo complicado de su nombre, no creo que exista otro más fácil de usar. Esto es así porque simplemente tenemos que arrastrar y soltar un proyecto sobre la aplicación para ofuscar la DLL resultante de la compilación en modo release del mismo Smile

captura

 

Aquí podéis leer más acerca de este ofuscador de código y también descargarlo:

http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx

[WP7] Algunos datos sobre el marketplace de Windows Phone 7

Parece mentira, pero a penas han pasado dos meses desde el lanzamiento de Windows Phone 7, y ya parece que haya transcurrido una eternidad! Pues resulta que tenemos ya más de 5.000 aplicaciones/juegos!

El caso es que durante este perído de tiempo la aplicación de MSDN Creators ha sufrido una actualización, en esta actualización, entre otras features, podemos ver ya las estadísticas de ventas/descargas de nuestros juegos.

Personalmetne no he visto todavía ningún blog que hable mucho sobre este tema, o que publique datos de ventas o descargas. Esto, sumado a la petición de un “cliente” de este blog, me ha llevado a compartir mis datos de descarga del juego Robot Strike Bowling.

Ya he hablado alguna vez de este juego en este blog: fué desarrollado con la beta del emulador, y migrado a la RTM después, sin tener el móvil a mano para desarrollar (Dios me tiene abandonado, es decir Microsoft Smile with tongue out). Estos factores, sumados a una inexcusable inexperiencia en el desarrollo de un videojuego completo llevaron la situación al punto siguiente: un juego aceptablemente bueno –más teniendo en cuenta que es gratis-, pero con graves problemas de rendimiento.

La mayoría de problemas de rendimiento los resolví, para que el juego por lo menos fuera jugable… en caso contrario era un desastre. Pues bien, el resultado es que a día de hoy tengo más de 10.000 descargas de este juego y el ranking global de jugadores acumula miles de puntos. El líder tiene ni más ni menos que 56023 en este momento, a un ratio de máximo 70 puntos por partida…. el chaval ha tenido que jugar unas cuantas veces para estar ahí Smile. Eso me satisface, porque significa que a álguien le gusta el juego. O eso o me han hakeado el webservice que gestiona el ranking.

En fin, sin más dilación, voy a compartir mis datos de descarga, de los que USA se lleba la palma, con un 40% del total de descargas, y el Reino Unido a mucha distancia, se presenta en segundo lugar.

El gráfico siguiente ilustra la evolución diaria de descargas:

chart_diario

Y el siguiente muestra las descargas acumuladas:

acumulativo

Y el gráfico de ventas no lo voy a mostrar, porque la aplicación es gratuita Smile

 

Espero ver más datos publicados acerca de las descargas de las aplicaciones de la gente en los próximos meses!

 

PD: De la aplicación “Chistes diarios” no muestro los datos, ya que hace muy pocos días que la subí al marketplace, y todavía no tengo acceso a sus estadísticas, imagino que tardan unos días en generarse.

[WP7] Aplicación “Chistes diarios” publicada en el marketplace

Buenas,

Hoy he recibido un e-mail del marketplace de Microsoft, anunciando que mi aplicación gratuita “Chistes diarios” ha sido certificada y publicada.

¿En qué consiste la aplicación? Es un software muy básico hecho en silverlight, que no XNA. Lo único que hace es bajar chistes de una fuente RSS, que se renueva cada pocas horas. La interfaz gráfica es tremendamente simple: sólo muestra unos pocos chistes en un listbox!

Aun así, creo que es una aplicación entretenida, porque siempre pueden ser prácticos unos chistes en caso de aburrimiento Smile.  En su sencillez, la aplicación cumple su cometido.

La aplicación está disponible 100% gratis en el marketplace de Windows Phone 7, en la sección de entretenimiento.

PD:

  • No puedo garantizar que todos los chistes sean buenos.
  • Si tus amigos no se ríen, es posible que sea porque no has contado bien el chiste Angry smile.
  • Algunos chistes pueden ser tan graciosos que pueden producir serios problemas en tu salud. Avisado estás Smile with tongue out.

Capturas de la aplicación:

800x600_1 captura2


Enlace de descarga:

wp7_278x92_green

http://social.zune.net/redirect?type=phoneApp&id=009aab5b-1b0a-e011-9264-00237de2db9e

[OT] Nos vemos en twitter!

Tengo que reconocerlo, hace un tiempo que tengo algo abandonadillo el blog. Los que me conocéis más o menos bien sabréis que si esto es así no será porque me esté rascando la panza precisamente.

Muy pronto tendré algunas novedades que contar… este año 2010 ha sido genial. Profesionalmente y personalmente uno de los mejores de mi vida, pero se que me espera un 2011 que espero que será todavía mejor, y será también movido, muy movido, por llamarlo de alguna manera. Y cómo no podía ser de otra forma, iré comentando también en Twitter.

Todavía no se muy bien como va la cosa… soy nuevo en esta red social, así que ya me perdonaréis si meto un poco la pata por ahí Smile with tongue out

Podéis encontrarme en  @jboschaiguade

Hasta pronto amigos!

[XNA] XBuilder, visor de contenido open source para VS2010

Abrid bien los ojos, porque esto es una pequeña gran maravilla. Con este content viewer podremos previsualizar nuestros modelos 3D que tenemos en el content pipeline de XNA sin siquiera salir de Visual Studio. Con este plugin gratuito puedes previsualizar, rotar, mover mediante arrastrar-soltar, en modo normal, wireframe… los modelos 3D.

Además, si por algún motivo no se ha podido previsualizar el modelo (sin duda por algún fallo que será culpa del artista gráfico), una ventana nos indica cuál ha sido el error que impide la previsualización.

Ya puedes descargar aquí esta joya.

xbuilder3

[OT] Curiosidades del Tech-Ed Europe 2010 en Berlín

Estos días estamos con algunos compañeros de los DotNetClubs por el TechEd. Es la primera vez que asisto a este evento y la verdad es que es bastante impresionante. No sólo por el contenido de las charlas sinó por la cantidad de la gente que hay, i el entusiasmo de esta por las distintas actividades. Para mi lo único malo de este evento es que hay demasiado IT, pero de todo tiene que haber en esta vida 😀

100_1894

Keynote al inicio del TechEd 2010: a rebosar de gente!

 

 

 

 

 

100_1900

Además de las charlas hay una feria de expositores, entre los que se encuentran empresas muy importantes y conocodias por todo desarrollador que se precie, como Intel, Nokia, Seagate, Infragistics, Telerik, DevExpress y muchas otras…

Alguna de estas exponen cosas curiosas, como en esta foto de Intel, en que se ve un servidor con mogollón de procesadores! (yo no los he contado pero son muchos!).

 

 

 

100_1907

Otra cosa interesante son los expositores de los distintos productos de la propia Microsoft, entre los que están Internet Explorer 9, SQL Server 2008, y cómo no, Windows Phone. Sin duda el de Phone es el stand más concurrido. Influye el hecho de que se puede toquetear los distintos modelos disponibles fabricados por HTC 😀

 

 

100_1909

Además de la parte técnica, otra cosa muy importante es la parte lúdica y de relación con otros ponentes. Para facilitar esto hay una zona cómo esta en la que se pueden trastear distintos juegos de Kinect. El caso es que he probado un par de juegos (bolos y ping pong) en primera persona y es una pasada!

[webcast] Movilízate con Windows Phone 7 & Silverlight

El próximo 10 de noviembre a las 19:00, Raul Mayo -experto en RIA y Movilidad- nos introducirá al mundo del desarrollo de la novedosa plataforma Windows Phone 7 y Silverligth. No dejes escapar esta oportunidad para adrentarte en esta nueva tecnología!

-Arquitectura WP7
-Herramientas para desarrollar WP7 a través de Silverlight
-Animaciones en WP7(ejemplo)
-WP7 & API de Twitter(ejemplo)
-Media y almacenamiento aislado(ejempo)
-implementación de una aplicación en un terminal con WP7

Apúntate en: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032467083&Culture=es-ES

wp7_cartel_plano

[XNA] La importancia de una buena arquitectura en nuestros videojuegos

Cómo muchos ya sabéis, hará poco más de un mes terminé la primera parte del desarrollo de Robot Strike Bowling. Programar un juego es una tarea enormemente compleja, mucho más de lo que parece a simple vista. Si no se utiliza una buena arquitectura, la tarea puede convertirse en un tremendo dolor de cabeza, o en un abandono del proyecto. Así pues, ahí van algunas recomendaciones.

Si eres programador profesional, provablemente tienes experiencia en el desarrollo de aplicaciones ASP.NET, Winforms, Silverlight… básicamente aplicaciones de gestión. Olvida lo aprendido (vale, no todo, tampoco nos pasemos). En un videojuego no valen cosas como registrar eventos (es muy lento), operaciones de acceso a datos síncronas (un juego se ejecuta a 60fps en windows/xbox y a 30 fps en Windows Phone 7), y no se puede parar la ejecución/interacción del juego durante más de un segundo.

La aplicación genera gráficos, animaciones y efectos en tiempo real, y en este sentido es esencial un buen conocimiento de programación orientada a objetos: y sí, quizá álguien se ofenda, pero en las aplicaciones de gestión se hacen muchas guarradas, y realmente he visto muy pocas aplicaciones de gestión (sinó ninguna) orientada totalmente a objetos –y puedo decirlo de primera mano, he trabajado en la empresa de IT más grande de España y la tercera de europa (no diremos nombres…)-. En definitiva, que en un juego el código bien hecho es lo más sagrado.

 

En Robot Strike Bowling intenté seguir estas premisas. Era mi primer juego completo y sí, como tal cometí muchos errores. Se podría decir que algo he aprendido de ello: Es imprescindible realizar un diseño detallado de la arquitectura de la aplicación, paralelamente a pruebas realizadas directamente sobre Visual Studio (los diagramas UML son muy bonitos y quedan muy vacilones –soy arquitecto de software! dicen algunos con el pecho rebosante de orgullo…-, pero tendemos a dibujar cosas que luego en un juego pueden no funcionar como esperamos). Así que hay que tragarse el orgullo de ingeniero y usar el visual studio…

Personalmente no trabajo directamente con el diagrama de clases de visual studio. Primero me hago un Visio, y luego voy pasando algunos trozos a Visual Studio, y voy probando… detecto que he hecho fallos en el diseño, los arreglo en VStudio, lo arreglo en el Visio… y hago unas cuantas iteraciones en este sentido. No se si es la mejor forma pero a mi me está funcionando.

GameLibraries En este diseño hay que plantear muy bien que es lo que queremos hacer. Muy especialmente: la gestión de estados, forma de renderizar los gráficos, sprites, animaciones, modelos 3D… Yo recomiendo poner todo lo que sea genérico en una librería de clases. En concreto en XNA les llamamos “Game Libraries”, como se muestra en la foto.

 

Usar una Game Librarie nos permitirá separar los objetos genéricos del juego de los objetos concretos. Por ejemplo la clase “Sprite” podría estar en la Game Library y la clase “NaveMala”, que hereda de Sprite, estaría en el proyecto de XNA Game. Esta decisión puede variar… dependiendo del proyecto podríamos decidir poner “NaveMala” en la GameLibrary, o incluso en una segunda GameLibrary (seguramente esta sería la mejor opción).

Usar esta opción se traduce en que tenemos un juego separado en capas. Que nos permitirá hacer cosas como esta:

 

En este caso estamos hablando de un generador de animaciones, pero podría ser perfectamente un editor de niveles. Estas herramientas, que integran XNA con Winforms, tienen una importancia crucial en el ciclo de vida del desarrollo de un juego. Nos permite tener una lógica separada del contenido.

En este ejemplo concreto, que corresponde al próximo juego que estoy preparando, cuyo codename es “Ultimatum to Earth”, he creado un editor de animaciones que puede utilizar cualquier usuario, no necesariamente un programador –lo cual se traduciría, en una reducción de costes y aumento de la productividad-. Esta animación se serializa como XML, posteriormente este XML puede ser deserializado por la GameLibrary y utilizado en nuestro juego, evitando lo que de otra forma sería un montón de código en nuestro juego! Provablemente hacer este tipo de animaciones directamente desde código sería mucho más lento (codificar, ejecutar el juego, probar, volver a empezar, lo cual vendría a ser prueba-error!). En cambio con una aplicación que lo genere, y que permita tener una vista previa en un entorno real de XNA visualmente, hace que el proceso sea más fácil para el usuario, y seguramente se terinará traduciendo en mejores animaciones (dudo que muchos programadores sean buenos animadores).

Todo esto sería imposible (o una monumental e inviable chapuza) sin un proyecto GameLibrary.

Una última ventaja del GameLibrary, es que puede terminar convirtiéndose en un Framework própio para el desarrollo de videojuegos, por lo que hacer una saga de “Ultimatum to Earth” sería mucho menos costoso.