viernes, 3 de octubre de 2014

¿Que software uso para desarrollar mi primer videojuego?

Un lector del blog me contactó para preguntarme sobre mi opinión al respecto sobre el framework de Monogame para empezar a desarrollar videojuegos, que si bien no es XNA, es cierto que portar del ya fallecido XNA a el es muy sencillo y además es opensource lo cual hace que este proyecto me haga verlo como un paso mas adelante, pero en definitiva, quiero llevar su pregunta a un nivel mas allá...
¿Que software o framework uso para mi primer videojuego?
Bien, empecemos por lo básico, ¿Debería usar un IDE? ¿Un framework? ¿Trabajar desde cero con un lenguaje de programación y crearme mis propias herramientas? ¿Trabajo en ensamblador y muero en el intento?
Como siempre, no todo es blanco o es negro, debemos de plantearnos las siguientes cuestiones para amoldarnos a una herramienta u otra.

¿Tengo conocmientos nulos, básicos o avanzados?
En caso de tener un conocimiento nulo o mas bien escaso sobre programación y desarrollo de software de manera general, lo ideal es buscar un IDE sencillo, que no me haga trastear mucho con cosas que desconozco, que poco a poco me haga tener conocimientos básicos y nociones de como hacer las cosas, un claro ejemplo para mi sería RPG Maker, antes de que cualquier desarrollador de videojuegos se eche las manos a la cabeza al leer esto, por favor, sería de agradecer ver primero el por qué de este IDE.
RPG Maker 2003, mi primer editor para videojuegos

Si bien este IDE es específico para hacer RPGs, es decir, videojuegos como Final Fantasy o Dragon Quest, etc... es cierto que especialmente en los primeros, jamás ibas a tener que tocar una sola línea de código y en cambio podías hacer de todo, tener variables, condiciones e incluso llegar a montarte tus propios bucles, al fín y al cabo, lo básico de la programación de manera visual, y por otro lado, ver como va quedando todo sobre la marcha, para mi, esto último es lo mas importante, que puedas ver como está todo montado de manera fácil y clara y siendo un desarrollador inexperto, poder tener claro y presente, que, como y por qué está cada cosa en su sitio, si, este editor tiene muchísimas limitaciones, pero como herramienta de aprendizaje la considero genial.

Aquí mi principal recomendación para una persona que jamás se haya adentrado en el mundo del desarrollo de videojuegos y quiera empezar sin tener ni idea, si eres un aventurero te aconsejo probar GameMaker, que dará mucha mas posibilidad a hacer un videojuego de cualquier tipo pero tiene una curva de aprendizaje un poco mas lenta y para hacer grandes cosas ya tienes que aprender a programar, o al menos en mi opinión.

Si tengo algún conocimiento porque bien he empezado ya a aprender a desarrollar aplicaciones o videojuegos anteriormente, conozco algo de código y me veo suficientemente capaz como para al menos trastear código ajeno aunque me cueste mucho mas crear mi propio código, recomiendo seguir usando entornos que al menos te muestren claramente lo que haces, entornos de desarrollo comunmente llamados WYSIWYG, que quiere decir "Lo que ves es lo que hay", para poder seguir teniendo muy claro que estás haciendo, donde lo estás posicionando, como se verá finalmente y poder trabajar sabiendo perfectamente como está todo montado a través de lo que ves en pantalla, entornos de desarrollo que me gustaría recomendar para esto son Unity3D o GameMaker, los cuales tienen un poco de complejidad si quieres hacer un videojuego avanzado, pero ofrecen una curva de aprendizaje muy rápida y si sabes programar un poco, puedes hacer mucho con muy pocas líneas de código y aveces con ninguna.

Por último, para los desarrolladores expertos, si recomiendo herramientas un poco mas complejas que pueden dar mejor rendimiento al videojuego siendo específicas para un dispositivo concreto, ya sea PC, videoconsola o smartphone, ya sea desde trabajar en el código nativo en caso de videoconsola o smartphone a través de los kits de desarrollo que ofrecen o un poco mas a bajo nivel SIEMPRE Y CUANDO, se disponga del tiempo y la paciencia necesarios, el videojuego puede quedar mucho mas pulido, pero estamos hablando de posiblemente el doble o el triple de tiempo, y en ese caso hay que valorar la relación tiempo que quiero invertir y la calidad final que quiero ofrecer, que si bien un videojuego hecho por ejemplo en Unity3D puede ofrecer una calidad igual e incluso me atrevo a decir que superior que a un código mas por debajo como podría ser hacer un videojuego en C++, es cierto que el videojuego pesará mucho mas por razones obvias y al fin y al cabo, cuanto menos pese el videojuego mejor, especialmente si lo quieres enfocar a un dispositivo móvil que tiene un espacio mas limitado o a una consola que si bien ahora suelen venir con mas espacio, cuanto menos pese el framework que uses, mas espacio dispones para añadir mas funcionalidades, diseño, música o mejor calidad de los mismos.
¿Cuanto tiempo quiero dedicarle? ¿Cuanta paciencia tengo para esto?
Para mi, esto es de los factores mas importantes, si tienes el tiempo y la paciencia necesarios, podrías hacer un videojuego trabajando desde cero, con mucho esfuerzo si, pero el resultado puede ser igual o mejor.

La verdadera cuestión aquí es ver el progreso lo suficientemente rápido como para poder mantener las ganas de seguir y el ánimo bien altos, que no decaiga porque en una tarde ya has conseguido mover tu muñeco por la pantalla y eso te causa una gran satisfacción personal, en el caso de trabajar desde cero totalmente, puede ser bastante tedioso, conseguir cargar una imagen en memoria, mostrarla en una ventana y que además alterne con otras imágenes para hacer una animación puede ser trabajo de una semana y en cambio, con un buen framework apenas unas horas y en el caso de un buen editor visual, algo tan simple como arrastrar y soltar, ¿La diferencia? el tiempo, y el tiempo es oro y para algunos no tienen el lujo de disponer las suficientes horas como para hacerse un buen framework o la paciencia para leer documentación como para poder hacer eso mediante líneas de código por pocas que sean.
¿Recomendarías alguno en especial generalmente?
Mi recomendación es simple, en primer lugar que puedas portar a los sistemas que quieras de manera facil y sencilla o al menos que si quieres programar para una sola plataforma, asegurarte que se puede sin problemas.

Después asegurarte de que te sientes cómodo con este lenguaje/framework/IDE y que haya suficiente documentación y desarrolladores en internet que pueda tanto resolver dudas como haber tenido los mismos problemas que tu, no es lo mismo ser tu el primero que hace la pregunta y todos miren a ver si alguien te responde, que al buscar una duda en internet, haya miles de respuestas a esa pregunta ya resuelta.

Por último y para mi mas importante, dedicarle el tiempo necesario como para adquirir experiencia, soltura con el mismo y al fin y al cabo, fluidez de trabajo, que finalmente acabe siendo algo automático para ti y que la curva de aprendizaje te haya sido simple.

Para mi, el que tiene la curva de aprendizaje mas rápida hoy día es Unity3D además de ser de los editores que mas fuertes están pegando, mas rápido se puede desarrollar y para una gran cantidad de plataformas, sin duda mi recomendación mas básica sería esta, como framework no me decanto por ninguno en especial ya que hay muchísimos y no podría englobarlo en una tecnología concreta, y como lenguaje recomiendo C# por lo simple que es y Java por lo sencillo que es de portar a casi cualquier otro sistema.

Finalmente decir que adoro C, y no solo he hecho en su día un juego muy básico con C, solo con C y un framework de gráficos llamado Allegro si no que lo volveré a hacer algún día, pero para ello lo mejor es tener soltura en el lenguaje que quieres usar si quieres trabajar desde 0 o con un pequeño framework antes de ponerte a ello, si no tardarás lo suficiente como para que, probablemente te desanimes y caiga en el olvido.

Monogame, como bien tenía la pregunta incial, no es un mal framework, al igual que muchos otros, PERO, veo mucho mas complejo para alguien que acaba de comenzar por un videojuego el cual, para mostrar la pantalla principal, la debes de programar (aunque apenas sean un par de líneas de código) y para ubicar las cosas en dicha pantalla tengas que ir editando y probando sobre la marcha en vez de un sencillo arrastrar y soltar, en cambio si tienes conocimientos de programación suficientes como para ser capaz de ver en tu cabeza como podría quedar aproximadamente con plasmarlo en el código, probablemente el resultado que te de el framework es mas que notable y por supuesto puede llegar a ser inlcuso mas rápido el desarrollo en por ejemplo en Unity3D.

Espero haber dejado mas o menos claro mi posición al respecto y aunque podría decir que un editor es mejor que otro o un lenguaje es mejor que otro, realmente creo que la respuesta correcta sería "Me siento mas cómodo con esta tecnología y con este lenguaje de programación".

No hay comentarios:

Publicar un comentario