Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Hasta que punto es importante saber hacer un videojueo desde cero?

Iniciado por Sr_Rodilla, 16 de Noviembre de 2013, 06:17:25 PM

« anterior - próximo »

Sr_Rodilla

Buenas tardes (o mañanas, o noches, o lo que sea), creo este hilo como consecuencia de una conversación que tuve con un compañero de 4to de mi carrera (ingeniería multimedia).

La conversación se baso en un debate que tuvimos sobre el proyecto ABP de mi carrera (en cuarto, todas las asignaturas tienen un proyecto común, que normalmente se hace en grupos de 4 personas, esto es el ABP), pues resulta que en el itinerario de videojuegos, lo normal es hacer un videojuego, pero al parecer te obligan ha hacerlo en C++ prácticamente de 0, creo que usan una librería que ahora no recuerdo, pero hay que implementarlo prácticamente todo (motor gráfico, de físicas, colisiones, controlador de objetos...).

A mi en principio esto me disgusto bastante, porque no entendía por que no podemos usar un motor como unity, y así centrarnos en hacer un juego de calidad, en vez de "perder el tiempo" en hacer cosas que cualquier motor gráfico ya las trae implementadas de casa, pero según el, usando unity no aprendes ha hacer videojuegos, ya que te acostumbras a que lo tenga todo hecho, y si luego necesitas modificar algo del motor, o implementar uno tuyo, te encuentras con un muro infranqueable, creándote ademas, una dependencia hacia los motores comerciales al no poder hacer nada sin ellos.

Después de esto pienso que tiene mucha razón, y que puede ser muy interesante/importante aprender ha hacerlo todo de 0, antes de meterte a usar motores comerciales, pero en cierta forma, cada vez que veo la cantidad de ofertas de trabajo para unity, o los juegos que se pueden hacer con el, sin necesidad de tener que hacerlo todo de 0, creo que no es tan necesario saber programar un motor para poder ser bueno haciendo juegos, como nos quieren vender, y que en realidad conseguir un buen acabado es más importante, y con buen acabado, no me refiero solo a los gráficos, me refiero también al control, a que sea divertido, que el usuario no se frustre...  y eso no nos lo enseñan en la carrera....

¿Que pensáis vosotros?, ¿Creéis que es importante que los futuros desarrolladores de juegos sean capaces de hacer un motor desde 0?, ¿O crees que es más importante centrarse en hacer juegos "profesionales"?

YaW

En proyectos grandes normalmente hay varios tipos de programadores, unos que trabajan en hacer el motor en si y otros que trabajan en el gameplay sobre este motor ya creado.

En proyectos pequeños, en el 99% de los casos es mucho mejor y más óptimo usar algún motor ya existente y centrarte en lo que quieres hacer en el juego. A no ser que tu juego requiera algo muy muy especial que no exista en ningún motor no lo veo rentable la verdad.

Sr_Rodilla

Lo que suponía, el problema es que parece que la carrera la quieran enfocar para trabajar en el típico estudio de triple A, con varios cientos de personas trabajando en el, lo que a mi personalmente, no me interesa para nada, por eso preferiría hacer en el proyecto un juego sobre unity, de todas formas aún tengo que hablar con el encargado de los proyectos ABP para ver que me cuenta, pero es de los que piensan que para hacer juegos hay que usar C++...

Manu343726

Yo también estoy estudiando, en mi caso el proyecto lo tengo el año que viene.

Que te obliguen a hacer el proyecto en C++ es bastante absurdo (Te lo dice uno que le encanta C++ y trabaja con él siempre que puede), ya que no es lo que vas a hacer en trabajos reales (Seamos realistas, salvo que tengas muchíiiiiiiiiiiiiiiiiiiiiiiisima suerte no vas a acabar en Valve programando un engine). Hoy en día como bien dices lo suyo es trabajar con herramientas tipo Unity, ya que la gran mayoría no tenemos ni tiempo ni dinero para implementar un motor propio, además de que el hecho de reinventar la rueda no tiene mucho sentido.

Sinceramente pienso que la gente de la universidad debería salir de vez en cuando de su despacho para conocer como funciona el mundo real. Créeme, no digo esto a la ligera, he tenido (Y sigo teniendo) bastantes problemas con profesores respecto a este tema. Son gente que, para nuestra desgracia, en la mayoría de los casos hicieron un doctorado y según salieron acabaron en una facultad dando clase, vamos que nunca han trabajado en el mundo real.

Sr_Rodilla

Cita de: Manu343726 en 17 de Noviembre de 2013, 12:55:14 AM
Sinceramente pienso que la gente de la universidad debería salir de vez en cuando de su despacho para conocer como funciona el mundo real. Créeme, no digo esto a la ligera, he tenido (Y sigo teniendo) bastantes problemas con profesores respecto a este tema. Son gente que, para nuestra desgracia, en la mayoría de los casos hicieron un doctorado y según salieron acabaron en una facultad dando clase, vamos que nunca han trabajado en el mundo real.

Toda la razón del mundo, los mejores profesores que he tenido, precisamente, son profesores asociados que ademas de dar clases, tienen un trabajo, y se nota muchísimo el nivel a la hora de explicar (que lo hacen mil veces mejor), como a la hora de resolverte dudas.

En cambio luego están los que se dedican a enseñarte cosas tan útiles, como los algoritmos de movimiento del brazo mecánico de un disco duro...    y por desgracia, esto último ni es coña, ni es una exageración...

Hechelion

A ver, te voy a dar mi opinión como ex-profesor (en otra área, pero creo que la experiencia es igual de valida).
Un curso siempre va a tener objetivos, en algunos casos, los cursos son prácticos y te van a enseñar sobre X herramientas o sobre x técnicas. En otros casos los cursos son generales y deben enseñarte conceptos y bases, son indirectos y es similar a reclamara por que te enseñan matemática.

¿De que te sirve saber si un grupo de vectores generadores es lineal o no? Mucha gente no lo ve utilidad práctica directa, pero es una base que te permite entender o construir otras cosas.

Primero, revisa cual es el objetivo del curso. ¿El objetivo es que hagas videojuegos? si es ese, entonces te encuentro razón, no tiene sentido que te midan si sabes hacer constructores, clases o paradigmas de programación.
¿Te están enseñando a programar?. Si es to es último, entonces no les interesa que hagas un juego de calidad, si no que entiendas otras cosas que si haces un juego con unity no vas a poder demostrar o practicar (claro que depende del nivel).

Lo anterior es desde una perspectiva pedagógica, donde el trabajo final debe medir si alcanzaste o no los objetivos del curso y esto es completamente diferente a crear un juego comercial, al cliente no le interesa si el juego está optimizado de los mis cojones o si entendiste lo que era POO. Le interesa solo el producto final.


Sr_Rodilla

A ver, el objetivo de la carrera, es entre otros, aprender a programar, aunque eso te lo enseñan en otras asignaturas, de tal forma que el objetivo de esas es enseñarte a programar videojuegos, aunque para ello ya existe la asignatura de Fundamentos de las videojuegos, en tercero.

En cuarto te enseñan cosas como crear el motor físico, el motor de gráficos, la IA, el online, y a programar en entornos limitados (lo que en la practica se traduce en hacer un videojuego para Amstrad....).

Obviamente su objetivo es enseñarte las cosas más básicas de los videojuegos, pero ¿para que?, se supone que es porque un ingeniero tiene que saber de todo, pero esta premisa a veces llega a niveles absurdos, como ya he dicho, si luego te vas a dedicar a crear videojuegos con unity o cualquier otro motor, porque es una perdida de tiempo y dinero crearte tu propio motor, ¿no sería más útil ir directamente a unity?, ¿no sería mejor enseñarte ha hacer juegos con acabados más pulidos?, al final te obligan a aprender a hacerlo todo desde 0, y tienes que aprender tu por tu cuenta a manejar otras tecnologías como unity, y ha hacer que los juegos tengan buenos acabados, y total, para que a lo mejor no vuelvas a programar un motor gráfico en la vida...

Hechelion

Cita de: cronic en 17 de Noviembre de 2013, 04:17:26 PM
¿no sería más útil ir directamente a unity?, ¿no sería mejor enseñarte ha hacer juegos con acabados más pulidos?, al final te obligan a aprender a hacerlo todo desde 0, y tienes que aprender tu por tu cuenta a manejar otras tecnologías como unity, y ha hacer que los juegos tengan buenos acabados, y total, para que a lo mejor no vuelvas a programar un motor gráfico en la vida...

Más útil no, más productivo si, estás cambiando especialización por generalidad. Ten en cuenta que es probable que tú en tu vida no programes un motor gráfico, ¿Pero puedes jurar que nadie de tu carrera lo hará jamas?.
Como te comentaban más arriba, hay montones de perfiles diferentes dentro de la industria y nadie te puede asegurar que será de cada uno de los estudiantes, tal vez tengas compañeros (o hasta tu mismo, créeme que la vida puede dar muchas vueltas) que termine programando motores y en ese momento, tener esas bases te va a ser útil y así un sin fin de opciones varias que van mucho más allá de conocer a la perfección una única herramienta.

Respecto a tener juegos con acabados más pulidos, pues si, me parece excelente, pero eso también implica que deberían enseñarte, composición, arte, diseño y hasta psicología, pues un juego pulido es una suma de muchos detalles en varias áreas, no solo en programación.

TrOnTxU

Hay bastante motores que no necesitan de conocimientos de C. Luego por supuesto tienes juegos con ActionScript, HTML5, etc.

Pero de ahi a hacer un curso/carrera de programación de videojuegos y no saber C ...

C te vale para todo, desde la tecnologia del motor, pasando por partes importantes del gameplay, plug-ins de DDC (Maya, MODO, Max, etc.), herramientas de procesado offline, etc.

Yo soy de la opinión de que no te puedes "abstraer" completamente de la arquitectura de la plataforma para la que desarrollas, si vas a trabajar solamente en PC o juegos web, etc. no hay problema (en teoria).

Pero a poco que toques alguna consola, o quieras hacer algo que tenga buen rendimiento necesitas saber como trabajar a bajo-medio nivel.

Por ejemplo, mi experiencia con Unity en la Wii es que si lo programas todo en lenguaje de script, hay muchas estructuras de gameplay que pierden "performance" por un tubo, y uno de los peores enemigos de un "frame rate constante" son los metodos de recoleccion de basura de los lenguajes de script.

Asi que aunque vayas a trabajar el gameplay (o la mayor parte de él) con Lua, JS, C#, o cualquier otro lenguaje de más alto nivel, deberias tener claro como trabajar con C, como eliminar los problemas de reserva/manejo de memoria, como aprovechar la coherencia de la cache, etc.

Además, en una empresa mediana/grande el código de script de gameplay es cosa de los diseñadores de niveles, por norma general. El programador/ingeniero elabora sistemas de más bajo nivel que luego utilizan los diseñadores para "crear" la jugabilidad.

Un saludo.
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!

kanc

Yo creo que siempre es bueno conocer las entrañas de como funciona el asunto, aunque no tengas que usarlo. Aunque el Unity te lo den todo mascado, el internamente utirilizara las tecnicas y paradigmas que te enseñen a bajo nivel con C++

De hecho, no lo se con certeza pero casi seguro que Unity esta programado en C++... Digamos que si lo que te enseñan de programacion de videojuegos en una escala de 1 a 10 es 9 (por ejemplo) y requiriendo Unity unos conocimientos de 6, andaras sobrado, sin embargo al reves estaras "cojo".

Me refiero a que si te enseñan lo basico siempre puedes usar Unity o CryEngine o Proyect Anarchy con minimo esfuerzo, pero si solo sabes Unity cuando tengas que enfrentarte con otro motor te costara mucho mas.

Y luego estan las inquietudes de cada uno claro, a mi personalmente me gusta saber como funcionan las cosas.

saludos

Sr_Rodilla

Bueno, si que es cierto que siempre es más fácil aprender unity quehacer un motor con C, que lo contrario, yo lo que me preguntaba, es si realmente es necesario hacer el "sobreesfuerzo" de aprender algo más complicado, cuando luego no lo vas a usar, y dejar de lado el centrarse en hacer buenos juegos.

Pero si que es verdad que siempre viene bien tener unos buenos cimientos en cuanto a que el conocimiento se refiere, y saber el funcionamiento interno de los motores, aunque sigo pensando, que en el plan de estudios, se da mucha importancia a la parte más técnica, enfocada a la programación, y muy poca a los acabados (jugabilidad, historia, curva de dificultad...), que por mucho que se justifique con que vas a ser programador, a la hora de la verdad, si te poner ha hacer juegos por tu cuenta, en vez de en una empresa, te toca aprenderlo por tu cuenta.

alejandrobecerra

Opino igual que el resto, saber como hacer un motor desde cero es importante para tener una buena base. No hace falta que sepas hacerlo todo al milímetro, pero si debes saber que componentes tiene y que se debe hacer y que no.

Cuando uses un motor como Cocos2d o Unity3D, por ejemplo, sabrás como funciona por debajo a nivel genérico, y si te encuentras con algo que no sabes porque no funciona como debe, te va a ser más fácil solucionar el problema.
Una persona que no sabe como funciona un motor, también puede que resuelva lo que pasa, pero te aseguro que tardará muchísimo más tiempo. Y el tiempo lo es casi todo en un proyecto.

cyberon

Cita de: Manu343726 en 17 de Noviembre de 2013, 12:55:14 AM
Que te obliguen a hacer el proyecto en C++ es bastante absurdo (Te lo dice uno que le encanta C++ y trabaja con él siempre que puede), ya que no es lo que vas a hacer en trabajos reales (Seamos realistas, salvo que tengas muchíiiiiiiiiiiiiiiiiiiiiiiisima suerte no vas a acabar en Valve programando un engine).

No hace falta cruzar el charco para que te exijan experiencia en C++. Donde yo trabajo sólo trabajamos en C++ y no he tocado nada de motor, sólo código de gameplay y herramientas, y hay muchas más empresas en este país que, sobre todo para máquinas pequeñas, sólo utilizan C++.

Saludos.

Manu343726

Cita de: cyberon en 02 de Diciembre de 2013, 10:46:13 PM
No hace falta cruzar el charco para que te exijan experiencia en C++. Donde yo trabajo sólo trabajamos en C++ y no he tocado nada de motor, sólo código de gameplay y herramientas, y hay muchas más empresas en este país que, sobre todo para máquinas pequeñas, sólo utilizan C++.

Saludos.

Me alegro, de verdad. Me encantaría acabar trabajando con C++. A lo que me refería es que, comparado con otros lenguajes, está muy poco "solicitado".






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.