miércoles, 19 de noviembre de 2014

Microsoft se mueve al Open Source

Esta noticia es algo vieja ya (de hace una semana), pero igual me parece interesante postear algo sobre el tema.

El miércoles pasado, en un evento realizado por Microsoft en NY, la empresa ha puesto finalmente, disponible para toda la comunidad de desarrolladores del mundo, una de sus mayores creaciones como software Open Source bajo licencias MIT y Apache 2 (dependiendo del proyecto, verificar la licencia).

En el marco del evento se publicaron varias noticias MUY importantes, acá listo algunos puntos:


  • .NET Core y .NET Framework publicados como Open Source, lo que mejorara el soporte de dichos sistemas y seguramente permitirá su utilización en Mac y Linux, permitiendo portar apps fácilmente.  Un caso particular es el IDE para AS3 llamado FlashDevelop.  Su desarrollo esta soportado sobre .NET y solo es posible utilizarlo en Windows, ahora seguramente podremos usarlo en otros OS's.  Así como implica una mejora impresionante para el proyecto Mono, que ya se usa en Unity desde hace tiempo, y hace poco mas de un mes, también con el UE4.
  • Publicación de Visual Studio 2013 Community.  Esta versión del famoso IDE para (entre otros lenguajes) C++ y C# contara con TODAS, léanlo bien, TODAS las funcionalidades de la versión Professional, PERO sera de uso gratuito, ojo, NO es Open Source, pero si se podrá utilizar para proyectos profesionales de manera gratuita.  Su uso tiene un par de restricciones, pero básicamente es que no se puede usar en empresas grandes, de resto, para indies o para uso personal, esta totalmente habilitado. Y soporta todas las extensiones de la versión Professional, incluyendo la extensión para Unity3D.  Así que por favor, a olvidarse de las versiones Express.
  • Publicación del Visual Studio 2015 Preview, que incluirá herramientas para el desarrollo de apps multiplataforma (y ahora que .NET es Open Source, ya se puede uno imaginar como va la cosa) incluyendo iOS y Android.

Bueno, estas son definitivamente muy buenas noticias para todos, aunque personalmente sigo prefiriendo g++ o clang como compiladores de C++, creo que poder tener .NET Open Source y estas herramientas, ayudara bastante al desarrollo de herramientas para vídeo juegos, como Unity3D y el mismo Unreal Engine.

Ahora la parte importante, los links:

Link de github de Microsoft: https://github.com/Microsoft/dotnet
Link del .NET Framework y Core: https://github.com/Microsoft/referencesource
Link de UnityVS: http://unityvs.com/

Bueno, eso es todo por ahora, feliz descarga!!!

PD: Prueben a buscar digamos .... List.cs en el repo y vean su implementacion.  O LINQ.

miércoles, 12 de noviembre de 2014

C# para Unreal Engine 4

Hace unas 3 semanas me llego un mail hablando de este proyecto, es Mono For Unreal Engine 4.

Luego de verlo, converse con algunos amigos sobre esta herramienta, uno de ellos es Miguel Posada, y dentro de los comentarios que salieron a flote estaban cosas como:
  • No tiene mucho sentido tener este lenguaje, ya que si quieres una herramienta de scripting esta Blueprint y si quieres un lenguaje completo tienes C++, de esta manera es innecesario el uso de otro lenguaje de script como C#.
  • Uno de los principales problemas del uso de Blueprint es que si se quieren hacer cosas de alta demanda computacional, no es posible.  Así, toca usar C++, que por fortuna esta disponible.
  • Uno de los principales problemas de C++ es su nivel de complejidad y el manejo explicito de memoria, En este caso, si se quieren hacer cosas sencillas y de complejidad media se tiene Blueprint.  Por otro lado, si se necesita usar directamente C++ por algún motivo particular, se tienen Smart Pointers dentro del motor, lo que hace que el manejo de memoria sea mucho mas simple y en el caso de las propiedades que pasan directo al editor, aunque no se puede usar el SmartPtr, con la macro de Property el motor lo maneja automáticamente también y con la nueva especificación de C++11, ya hay muchas funcionalidades de lenguajes modernos dentro de C++ y reduce un poco el tiempo de aprendizaje y la complejidad del lenguaje y hace nuevamente, innecesario el uso de un lenguaje intermedio.
  • En este momento, el proyecto no funciona si se va a realizar un juego para consolas o móviles, ya que no están soportadas estas plataformas.
  • No puedes modificar el motor ni construir plugins o libs.

Luego, hablaba con otro amigo y resultaron los siguientes puntos:
  • C# es un lenguaje mucho mas popular que C++, hay mayor cantidad de desarrolladores que conocen bien este lenguaje, mientras que muy pocos saben usar correctamente C++ (o al menos usarlo, así no sea correctamente).
  • Al tener mas personas que puedan trabajar con este lenguaje sobre dicho motor, se incrementan las posibilidades de desarrollos y se reducen costos de los mismos (tiempos, curvas de aprendizaje ya que solo implica aprender la herramienta, no el lenguaje, etc.).
  • Permite competir mas tu-a-tu con Unity3D y lograr mayor popularidad.
  • Permite desarrollar prototipos y trabajos que no requieran extreme performance y esto agiliza el desarrollo de prototipos.

Luego de estas dos charlas sobre esta herramienta, y aprovechando que hoy Microsoft ha publicado .NET como OpenSource (ver mi siguiente post sobre esta noticia), decidí compartir con todos esta herramienta y las conclusiones a las que llegaba en conversas anteriores y dar mis conclusiones finales.

Personalmente creo que es una iniciativa interesante, si bien no permite desarrollar un juego completo con ella, si que acerca mas el motor a los desarrolladores y, al evitar la curva de aprendizaje de C++, hace que distintas personas puedan interesarse un poco mas y explorar.

Finalmente, creo que su máximo provecho depende del panorama en el que se encuentre cada cual al momento de interactuar con el motor, y aquí solo tengo en cuenta dos escenarios:
  • Si eres un developer que esta en una empresa y desean construir un prototipo o juego para PC y los tiempos de desarrollo son críticos, ademas, si la masa de programadores del proyecto la compone en su mayoría desarrolladores con conocimientos en C#, entonces este puede ser tu punto de partida ideal y no dar mas vueltas.
  • Si eres un developer amateur que esta explorando el motor directamente por gusto y no tienes la presión del tiempo de entrega de algo, de entrada te recomiendo entrar con C++, incluso si te toca hacer la curva de aprendizaje del lenguaje, igual ganaras un conocimiento muy importante de un lenguaje que es el que manda la parada en el desarrollo de video juegos y encima, aprendes a usar el motor, modificarlo y trabajar con el a fondo y sin limites.

De nuevo, acá dejo en link del proyecto http://mono-ue.github.io/ y los invito a que compartan sus experiencias.


martes, 21 de octubre de 2014

Un rato tranquilo con mi hija y una ilustracion

Ilustración que hice en un rato estando con mi hija descansando. Subiré mas según vayan resultando, a tener en cuenta no soy ilustrador, soy ingeniero. 

:D


lunes, 22 de septiembre de 2014

Private en C++

Hace poco hablaba con unos amigos sobre programación y espacios de memoria.  En la conversación salieron a flote temas como "espacios de memoria de un programa" y zonas "privadas" de C++ y posiciones de memoria.  Debido a eso me decidí a hacer una prueba donde mostraba un poco mejor lo que hablaba con ellos aquel día y tomar dicha prueba como el primer post de un nuevo blog.

Bueno y acá va: