Archive for febrero 2014

Indie Games FTW!

¡Hola! En esta ocasión escribiré sobre el documental titulado “Indie Game: The Movie” producido por BlinkWorks Media y dirigido por Lisanne Pajot y James Swirsky en el año 2012. Tocaré algunos temas de la película y comentaré un poco sobre el camino que está tomando la industria de los videojuegos en la actualidad.

En la película se le da seguimiento al desarrollo de tres videojuegos independientes: Super Meat Boy, FEZ y Braid. En el caso de Super Meat Boy, se enfrentaban a terminar el juego en un tiempo relativamente corto no solo porque querían ganar dinero, sino porque DEBÍAN ganar dinero, ya que sus fondos se estaban agotando. El caso de FEZ no es muy distinto. Se debía terminar el juego para estar en una convención de videojuegos (PAX) y tener ganancias para terminar con el desarrollo del videojuego y de igual manera obtener ganancias. Adicionalmente, FEZ enfrentaba problemas legales por la separación de los desarrolladores del juego, lo cual implicaba que si FEZ se presentaba en PAX, podría implicar una demanda. Por otro lado, Braid es un juego que rompió paradigmas en el modo de juego de plataforma tradicional, ya que podríamos considerarlo como un juego a prueba de errores, haciendo que además de ser un juego de plataformas, también pudiese ser considerado un puzzle.

La industria del desarrollo (de videojuegos y en general) es un poco hostil en el aspecto de que las personas involucradas tienen que sacrificar muchas cosas: dinero, tiempo para ellos mismos, horas de sueño e incluso el tipo de alimentación que llevan. Si bien la recompensa final en muchos casos vale la pena, hay que tener en cuenta lo que representan todos estos sacrificios. En este caso no hablamos simplemente de tener poca vida social, sino de repercusiones a la salud por la falta de sueño o alimentación hasta depresión por la falta de contacto con otras personas.

Ahora bien, la industria de los videojuegos está tomando un rumbo interesante. Hace algunos años, hablábamos de pocas empresas (grandes) dedicadas a los videojuegos. Actualmente tenemos empresas pequeñas, medianas, grandes y desarrolladores independientes, sin mencionar los distintos modelos de negocio que existen. Hoy en día, se puede adquirir un videojuego de distintas formas: Comprándolo físicamente, tenerlo en una biblioteca de videojuegos (Steam) o descargarlo de la página oficial del videojuego (League of Legends, Heartstone). Esto puede desencadenar que los videojuegos sean conocidos por más personas y obtengan más ganancias independientemente de ser un juego indie o no.

Esto es todo por ahora. Espero que haya sido de su agrado y les recomiendo jugar juegos independientes. Aunque a veces no lo parezca, pueden llegar a ser muy buenos a pesar de que algunos son cortos.



Welcome to the Jungle, We Got Fun 'n' Games

¡Hola! :)

En esta ocasión hablaré un poco sobre el arículo titulado "Welcome to the Jungle" escrito por Herb Sutter en diciembre del 2011.

El artículo habla acerca como en el “final” de la Ley de Moore, comenzamos a hablar de entregar a los usuarios equipos personales de cómputo paralelo. En tiempos actuales, tenemos que hablar de 3 formas esenciales de procesamiento en múltiples núcleos.

Primero vale la pena hablar acerca del procesamiento con varios núcleos en sus primeras fases. El hecho de que la velocidad de procesamiento de los procesadores no se haya visto mejorada (como en años anteriores), obligó a las empresas a implementar modelos con varios núcleos. Ya se ha hablado de este aspecto en entradas anteriores.

Ahora bien, con el modelo de procesamiento con varios preocesadores, tenemos que recordar la parte de núcleos heterogeneos. Con este modelo, podemos hablar del procesamiento dedicado en varios núcleos. El ejemplo más común es la parte de CPU y GPU, donde el CPU se utiliza para tareas comunes del sistema operativo y el GPU funge como procesamiento de gráficas, permitiendo un mejor uso de los recursos disponibles. Ahora, hablar de paralelismo en CPU y GPU permitiría llevar la optimización de recursos hasta su máxima expresión.

Posteriormente, estamos obligados a tocar el tema de núcleos elásticos para cómputo en nube. La parte de paralelismo y concurrencia es un tema común (sino es que indispensable) en cloud computing. Hay que recordar que una de las técnicas más usadas en la nube es el map-reduce. Con esta técnica, hablamos del crecimiento “scale-out” de los centros de datos. Esto quiere decir que en lugar de concentrarse en un solo dispositivo, el centro de datos tiene varios equipos pequeños siendo usados de manera distribuida. Así, el procesamiento lo hace cada equipo de manera concurrente y una computadora finalmente hace la operación de reduce. Este es uno de los modelos de procesamiento más importantes de la actualidad, ya que funciona con grandes volúmenes de información en tiempos razonables.

Eso es todo por ahora, espero haya sido de su agrado :)


¿Paralelismo? ¿Quieres saber qué significa?

¡Hola! En esta ocasión, discutiré un poco sobre el artículo "Parallel Computing on any desktop", escrito por Ami Marowka, el cual fue publicado en el Communications of the ACM.

El artículo habla acerca de paralelismo aplicado a distintos equipos de cómputo. Hace algunos años, hablar de paralelismo no era muy común. Solamente los equipos con un buen nivel de procesamiento eran los “indicados” para realizar este tipo de tareas. Actualmente, hablar de paralelismo es no solamente común, sino que se ha vuelto una necesidad.

El tema de paralelismo en computadoras que pueden ser adquiridas por personas “comunes” es algo que implícitamente nos hace ver a los programadores que tenemos que explotar todo el procesamiento disponible que existe. Es importante saber que cuando se habla de “explotar”, no se refiere a solamente hacer que el procesador trabaje al máximo de su capacidad, sino que todo lo que el procesador trabaje sea efectivo dentro del programa.

En el artículo se propone como una solución a OpenMP. Hay que recordar a OpenMP como una herramienta poderosa que permite configurar código y permitir la ejecución de ciertas tareas de manera paralela. Si bien existen herramientas tan buenas como OpenMP, hay que recordar que solo es eso: una herramienta. El programador es quien se tiene que hacer cargo de comprender la naturaleza del problema y posteriormente escribir código que sea thread-safe. La parte de comprender el problema es sumamente importante, ya que mientras más se conozca el problema, menor es la probabilidad de sufrir de alguna falla referente a datos que son accesados por varios threads.

Finalmente, hay que remarcar la parte de equipos de cómputo en ámbitos empresariales. Es cierto que a un buen equipo empresarial podría sacar provecho de herramientas como OpenMP. Sin embargo, cuando hablamos de empresas que empiezan a crecer en grandes dimensiones, es necesario explorar otras alternativas, como el cómputo distribuido. Esta solución puede ser vista como “factible”, debido a que el sistema puede estar construido con distintos equipos caseros y que, usando cómputo distribuido, puede ser capaz de procesar grandes volúmenes de información en un periodo de tiempo aceptable.

Eso es todo por ahora, espero haya sido de su agrado :)


- Copyright © Programación Multinúcleo - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -