Stratos => Industria y mercado => Mensaje iniciado por: Hans en 02 de Febrero de 2013, 07:32:20 pm

Título: ¿Cómo seguir?
Publicado por: Hans en 02 de Febrero de 2013, 07:32:20 pm
Después de pasarme años programando para Windows y Linux vía Ogre3D+C++ y para Xbox360/WP7 vía XNa+C# pienso que es hora de expandirme.

Unity 3D ya lo he usado y es muy cómodo, se consiguen resultados muy buenos en poco tiempo. Pero no me satisface, veo muy poca programación real en ellos (que es lo que me gusta). UDK por lo que he visto es más de lo mismo.

También he hecho cosillas en Java, a efectos prácticos como si las hubiera hecho para C#.

Había pensando en cambiar hacia algo muy orientado a el juego en la web (cosa que en realidad con esos dos también se puede) como HTML5 (creo que tiene api 2D y 3D) pero no me termina de llamar la atención. Tampoco ayuda no conocer ni una herramienta relacionada con ello.

Por otro lado los chicos de Valve tienen claro su apoyo a Linux, algo que me puede venir bien dada mi experiencia pero no sé hasta qué punto llegará a tener éxito. Además tengo clarísimo que el futuro pasa por algo estilo Onlive o Gaikai, con lo cual al final importará 3 pepinos lo que usemos mientras corra en un PC (de aquí a 1-10 años - amplio espectro porque las nuevas consolas están por salir y aún no se sabe por qué apostarán - eso de tener un target para cada plataforma pasará al olvido)

Para mi lo ideal sería seguir con C++ y con Ogre3D o con algún motor similar. Teniendo en cuenta el tipo de proyectos que manejo difícilmente voy a necesitar más.

No sé, ¿cómo veís vuestro futuro? ¿Hacia dónde iréis?
Título: Re:¿Cómo seguir?
Publicado por: FANatiko en 03 de Febrero de 2013, 12:10:04 pm
Hombre si quieres aprender algo nuevo este año, yo creo que tu mismo has dado las dos opciones claras: Unity3D y HTML5. Quizás la tecnología más barata para sacar algo al mercado sea HTML5. No se hasta que punto son rentables los juegos web, pero p.ej con la relevancia que tuvo Mega Up en prensa, igual hubierais tenido más visibilidad en web.

A mi lo que me tira un poco para atrás de Unity3D, más que la falta de "programación real" (que en los proyectos, no tutoriales, que he visto había mucho codigo C# por ahi debajo) es que quizás se necesita una mayor producción de arte para conseguir el acabado que te puede dar. Y usarlo para 2D me parece un despilfarro (si se es "legal" y se pagan todas las licencias), teniendo en cuenta que un motor 2D es mucho más barato de programar que una licencia de Unity.
Título: Re:¿Cómo seguir?
Publicado por: Sergi Lázaro en 03 de Febrero de 2013, 01:26:07 pm
A mi lo que me tira un poco para atrás de Unity3D, más que la falta de "programación real" (que en los proyectos, no tutoriales, que he visto había mucho codigo C# por ahi debajo) es que quizás se necesita una mayor producción de arte para conseguir el acabado que te puede dar. Y usarlo para 2D me parece un despilfarro (si se es "legal" y se pagan todas las licencias), teniendo en cuenta que un motor 2D es mucho más barato de programar que una licencia de Unity.

Sobre la "programación real": En Unity, tienes que programar igual que con cualquier otro motor. No hay sistema de cajitas que se conectan para hacer cosas, lo que tienes de forma gráfica es colocar objetos, asignar propiedades a ellos, y qué scripts se asocian a cada objeto. A partir de ahí, si quieres que sea un juego, que las cosas se muevan, etc., tienes que programar. Si no, lo único que tienes es una escena pasiva que como mucho responde a la física, nada más. El trabajo de programación viene a ser básicamente el mismo que en otros motores, dejando de lado que las abstracciones de gráficos, física, y tal te lo hacen  un poco mas fácil, pero eso también lo tienen otros motores.

Sobre el 2D: Hacer cosas en 2D en un motor 3D es tan fácil como ignorar un eje, o usarlo de forma diferente. Mucha gente dice que usar 2D en Unity es malgastar el motor, pero sinceramente, si hace lo que quieres, qué importa que también haga otras cosas que no uses?

Sobre las licencias: Gratis, puedes hacer casi todo lo que quieras para Win, Mac, Linux, tanto standalone como webplayer. Se tiene que pagar para otras plataformas, ahí ya depende de lo que se quiera hacer y si crees que vale la pena pagar unos euros para la magia negra de apretar un botón y que funcione en los otros sitos también sin tener que hacer casi nada :P
Título: Re:¿Cómo seguir?
Publicado por: Sergi Lázaro en 03 de Febrero de 2013, 05:27:24 pm
O puedes usar algún paquete de los múltiples que hay que hacen que 2D en Unity no sea un problema.
Título: Re:¿Cómo seguir?
Publicado por: Hans en 03 de Febrero de 2013, 07:29:32 pm
Cuando hablo de "programación real" me refiero a programación tipo C++. En Unity puedes programar scripts en Javascript o en C# y obviamente sigue siendo programar, pero siempre me ha parecido todo demasiado mascado (lo cual no es malo) y se me hace poco "divertido". Aunque tb creo que en Unity se puede añadir funcionalidad directa al motor, no sé hasta qué punto. Por ejemplo en Ogre3D directamente te dan el código y tú te lo compilas (para Windows hay versiones precompiladas). No sé, por alguna razón me gusta romperme la cabeza con todas las putadas y limitaciones de C++ a pelo.

En Unity he hecho cosas (por ejemplo http://www.youtube.com/watch?v=wQbBgAqtimI&list=PLvF7iO4pRwAgyJ1O6CtkVc4cOe4-rqW5W en apenas un par de días mientras aprendía usarlo) y la verdad es que el resultado es brutal para el tiempo dedicado. Hacer algo jugable me llevó muy poco tiempo (y alternando con otras cosas) y es la caña que venga con mil cosas ya hechas (pathfinding, sombras, materiales, física, etc - aunque tb tiene algunas de pena, como los terrenos, al menos en el 3.5 -). Sin duda lo mejor es su multiplataformidad, para mi eso no tiene precio: cambias de target y añades un par de flags y tu juego está disponible para cualquier plataforma actual.

En fin, de momento HTML5 lo voy a dejar aparcado, no me termina de llamar la atención. Por trabajo Ogre3D y C++ lo voy a tener que seguir usando sí o sí, C# ya lo dudo más (a menos que M$ haga algo para la sucesora de Xbox 360 que lo permita, cosa que dudo mucho teniendo en cuenta su tendencia actual con Windows 8 - y es una pena, C# bajo Visual Studio Express es de lo más cómodo que he visto -). Acabo de bajar Unity 4.0, a ver qué novedades trae. Al final seguramente pase por ahí, o por UDK (aunque UDK se me hace mucho menos intuitivo para un programador, la verdad).
Título: Re:¿Cómo seguir?
Publicado por: Gallo en 04 de Febrero de 2013, 11:53:49 pm
Mira Hans yo estoy trabajando en un proyecto de framework para juegos 2D en HTML5, ya existen cosas así la verdad pero me interesó montar algo por mi mismo, los resultados en relativo poco tiempo para mi son espectaculares:

http://virtualcraft.net/mmoballs/

Es un escenario online, todos los usuarios ven los mismos objetos y puedes ver como los demás interactuan con ellos, no hay trampa, la lógica del comportamiento de las bolas (código que se puede ver en la screenshot del link inferior) solo está en el servidor y solo se ejecuta en el servidor, el jugador solo envia el input (posición de su ratón, shift pulsado) y recibe los objetos y sus transformaciones en un JSON compacto.

Otra demo, esta es de hace tiempo cuando el framework no estaba muy avanzado, no contiene interacción online:

http://virtualcraft.net/m3/

El diseño de clases está basado un poco en diferentes frameworks que he ido utilizando estos últimos dos años, cogiendo un poco lo que mas me ha gustado de cada uno y descartando aquello que o bien no me gusta o bien no soy capaz o no me permite javascript implementar. Las únicas dependencias aquí son el ineludible Google Closure Compiler para conseguir un codigo compacto, optimizado y ofuscado, y node.js que es el interprete de javascript que ejecuta la aplicación servidora y proporciona un modulo de comunicación para websockets. Una ventaja de utilizar el closure para organizarse es poder tener un solo proyecto con todo el código y una única clase para cada entidad pero teniendo la facilidad de deployar dos .js para cliente y servidor y que cada uno contenga solo la lógica que le atañe.

Por ahora no utilizo WebGL, intenté empezar un proyecto similar empezando con esa API y conseguí buenos resultados pero me atasque bastante con el diseño de las clases y decidí hacer un reset, este es un ejemplo de un motor similar al anterior pero con WebGL y Box2D para las físicas:

http://www.virtualcraft.net/wgl/

Este a diferencia del anterior no es compatible con iOS o Android directamente, lo es con iOS si haces el truquito de activar WebGL con Objective-C en una UIWebView, que en el último iOS no se si sigue funcionando.

Por que te cuento todo esto? bueno primero pq me sirve un poco de excusa para hablar de este proyecto que no veia el momento de mencionarlo y así de paso ves un poco mas las virtudes de HTML5 contadas de primera mano, por otro lado, yo soy programador de UDK, con todas las de la lei, he desarrollado un juego completo con UDK en un grupo multidisciplinar y la verdad es que motores como ese no son para que un programador pruebe a hacer algo por su cuenta, a mi el motor me parece genial y lo volveria a utilizar si tengo la ocasión (rara en españa), pero lo de hacer algo por mi cuenta con el lo he intentado, y no acabo de arrancar, es algo pensado para un equipo de gente, de diferentes roles, que generan contenido que alimenta a los demás, tiene poco sentido intentar hacer algo en UDK con lo que ya te viene en el contenido de demostración, es muy poco gratificante.

Con Unity me pasa algo similar pero no tanto, ocurre que le tengo un poco de tirria por que parece el nuevo flash y que está super de moda y que todo el mundo lo usa, pero para mi es un producto demasiado comercial, mas aún después de haber liberado a una bestia como UDK, si empezara a experimentar con la versión gratuita de Unity llegaría un punto en que muchas cosas no podría hacerlas, podría mencionar nimiedades, pero las mas cantosas para mi son el no poder usar DLLs (C/C++), el acceso capado al "render to texture" que con esto ya se cargan infinitas cosas y tener que pagar a parte para el deploy a iOS y Android, y que incluso pagando sigas sin tener esa feature en iOS y Android salvo que sea la versión Pro, es demasiado comercial, demasiado capado para experimentar a mi gusto.

Este es mi testimonio sobre mas o menos las mismas tecnologias que has mencionado, para mi C++ es el camino a seguir y retomar en algún momento eso si, soy fanboy de C++, pero no quiero dejar escapar esta oportunidad que javascript nos está dando de tener con un lenguaje de scripting (con las ventajas que conlleva) acceso a crear juegos y tenerlos disponibles instantaneamente para cualquiera que entre en tu web, y te digo una cosa que quizá mucha gente no perciba pero que es verdad, lo mas tocho que te puedas encontrar de WebGL casi seguro que lo ha hecho algún super crack de OpenGL purista de C++ que está experimentando con ello por el mismo motivo: codificar, subir y mostrar cualquier experimento de rendering con una facilidad nunca antes vista.
Título: Re:¿Cómo seguir?
Publicado por: raysan en 04 de Marzo de 2013, 03:29:54 pm

Yo actualmente estoy desarrollando para PSVita con el PSM SDK. Se programa en C# con unas librerias similares a XNA pero con OpenGL ES. Puedes programar a relativamente bajo nivel, rellenando tus Vertex Buffer, programando tus Shaders... y necesitaras optimizar bastante para conseguir un rendimiento decente. Es todo un reto. Además, la última versión del SDK añade soporte para el mando de PS3, lo que puede dejar entrever hacia donde va este framework...

La barrera de entrada para alguien que empieza puede ser algo elevada pero si tienes un poco de experiencia con OpenGL, es una opción interesante.