Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Nuevo en el desarrollo de videojuegos

Iniciado por Wealk, 20 de Febrero de 2013, 08:41:34 PM

« anterior - próximo »

Wealk

Buenas, supongo que los que llevéis un tiempo en el foro estaréis cansados de ver mensajes como el que estoy apunto de escribir.
Pero bueno, espero que seáis pacientes con ello y me ayudéis un poco a recibir un nuevo enfoque al tema. Os describo brevemente mi historia.

El caso es que hace casi medio año me puse a mirar el tema de desarrollo de videojuegos, de forma general. Empecé como todos supongo, fui probando engines y viendo más o menos que se podía hacer con unos y con otros y intentando meterme en proyectos ya empezado para sacar algo en claro del tema. No me gustó mucho la verdad (cabe decir que empecé en el mundillo como modelador), mi manera de pensar me estaba advirtiendo... Utilizar un engine para desarrollar un juego era como intentar aprender matemáticas usando una calculadora, así que rápidamente lo dejé y fui buscando información alternativa por la red. Buscando y buscando solo veía un lenguaje predominante C++, así que sin pensarlo mucho me puse a estudiar C++ en mi tiempo libre. Ahora, medio año después me defiendo bastante bien con C++  y decidí dar un paso más. Como soy muy fan de los libros, me compré un libro de DirectX 11 para novatos en el desarrollo de videojuegos y la verdad es que me he dado cuenta que todo lo de C++ que he aprendido (no todo obviamente, pero la mayoría) apenas sirve de nada ya que utiliza mucho la librería de windows (del mismo lenguaje claro esta) de la cual no había oído ni hablar y ahora estoy en la etapa de volver a empezar de 1 con la librería de windows.

Pero algunas dudas me surgen en este momento...(y por eso escribo este mensaje para los experimentados):
-¿Al desarrollar un juego, tienes que desarrollar "a bajo nivel" un engine? No entiendo muy bien la diferencia entre el motor necesario para correr el juego y el programa para desarrollarlo.
-¿En el caso de juegos en 3D, como se implementa la física a los gráficos?¿Usando DirectX o tienes que acudir a otro lenguaje?
-(Esta va para los que sepan algo de DirectX)¿La curva de aprendizaje es muy extraña o es que me falta algo por aprender?...Es porque me resulta bastante complicado entender cada apartado del código.

Por si alguien se lo pregunta, no, no estoy buscando hacer un juego solo, ya me han dicho y repetido que eso es totalmente imposible. Quiero limitar mis conocimientos por ahora (que yo creo que ya es) a poder desarrollar un escenario con un modelo que se mueva por el partiendo totalmente de 0 (pero utilizando las librerías básicas).
Y yo creo que eso es todo por ahora... Seguro que me salen más dudas... Cuanto más miro sobre el tema, más dudas tengo.
Pero bueno, gracias con antelación.

EDITADO:
Se me ha olvidado comentar hasta donde he llegado.
Actualmente, aunque suene triste, pero es así,  he conseguido desarrollar el típico pong (un poco mas colorido claro esta). Más bien seria una especie de hockey de aire (típico de los recreativos). Pero a lo referente a la física, se basa en una única formula matemática para calcular hacia donde saldrá el disco y el proceso de detención o aceleración (más básico imposible) dependiendo de la pala.
Saludos.

[EX3]

Buenas, Wealk.

Cita de: Wealk en 20 de Febrero de 2013, 08:41:34 PM
-¿Al desarrollar un juego, tienes que desarrollar "a bajo nivel" un engine? No entiendo muy bien la diferencia entre el motor necesario para correr el juego y el programa para desarrollarlo.
Todo depende de que quieras hacer y si los motores existentes te permite hacerlo. No tiene sentido ponerte a hacerte tecnologia propia desde cero si la que ya existe te permite desarrollar tu proyecto.

Sobre diferencias entre motor y "programa para desarrollarlo", un motor es simplemente un sistema que te permite ejecutar cierta logica mediante componentes ya definidos (modelos, escenas, efectos, etc...) para desarrollar el juego. Un "programa para desarrollarlo" serian las herramientas para crear contenidos como son los editores de niveles, los entornos de programacion (IDEs) y herramientas similares que trabajan sobre el motor.

Cita de: Wealk en 20 de Febrero de 2013, 08:41:34 PM
-¿En el caso de juegos en 3D, como se implementa la física a los gráficos?¿Usando DirectX o tienes que acudir a otro lenguaje?
DirectX u OpenGL da igual en la implementacion de fisicas. Las fisicas no son graficos, son simplemente calculos y logica. Tu simplemente realizas los calculos necesarios y despues proyectas los graficos en las coordenadas del espacio que calculas en el sistema de fisicas/colisiones. Sobre si tienes que usar otro lenguaje o herramienta para ello, programarte fisicas es complicado pero no imposible y es como programar cualquier otro codigo del juego, quiero decir, que C++ te sirve. Otra cosa es como lo de los motores que te decia antes. Como ya existen varios motores de fisicas desarrollados no te merece la pena invertir tiempo en hacerte el tuyo propio, utiliza los que ya existen y te ahorraras tiempo, esfuerzo y trabajo.

Cita de: Wealk en 20 de Febrero de 2013, 08:41:34 PM
-(Esta va para los que sepan algo de DirectX)¿La curva de aprendizaje es muy extraña o es que me falta algo por aprender?...Es porque me resulta bastante complicado entender cada apartado del código.
DirectX, OpenGL y cualquier API a bajo nivel siempre es complicado y más si se es novato. No es como usar XNA o frameworks de más alto nivel que te dan más mascadas las cosas. Vamos, que es normal que te resulte tan complicado.

Cita de: Wealk en 20 de Febrero de 2013, 08:41:34 PM
Se me ha olvidado comentar hasta donde he llegado.
Actualmente, aunque suene triste, pero es así,  he conseguido desarrollar el típico pong (un poco mas colorido claro esta). Más bien seria una especie de hockey de aire (típico de los recreativos). Pero a lo referente a la física, se basa en una única formula matemática para calcular hacia donde saldrá el disco y el proceso de detención o aceleración (más básico imposible) dependiendo de la pala.
Pues ya has empezado mejor que la media de novatos, que la mayoria se lanzan a intentar desarrollarse sus propios World of Warcraft o Call of Duty sin saber si quiera hacer un triste Pong o un Tetris, asi que de sonar triste nada, has empezado bien :)

Cita de: Wealk en 20 de Febrero de 2013, 08:41:34 PM
El caso es que hace casi medio año me puse a mirar el tema de desarrollo de videojuegos, de forma general. Empecé como todos supongo, fui probando engines y viendo más o menos que se podía hacer con unos y con otros y intentando meterme en proyectos ya empezado para sacar algo en claro del tema. No me gustó mucho la verdad (cabe decir que empecé en el mundillo como modelador), mi manera de pensar me estaba advirtiendo... Utilizar un engine para desarrollar un juego era como intentar aprender matemáticas usando una calculadora
Aqui no entiendo el por que llegas a esa conclusion. ¿Utilizar un motor para desarrollar el juego es como intentar aprender matematicas usando una calculadora? Es tan absurdo como pensar que para aprender a usar un coche has de fabricartelo desde cero pieza a pieza. Es absurdo si lo que buscas es conducir y no fabricar coches :)

En mi opinion personal, no me parece mal que hayas empezado con C++ como primer lenguaje, pero si que lo veo complicado y más si te lanzas de lleno con DirectX y temas a tan bajo nivel sobre todo si buscas simplemente hacer juegos y no hacer tecnologia. No se, salvo que quieras aprender las tripas a bajo nivel de como se desarrollan los juegos por que te llama la curiosidad y demas yo optaria por cosas más accesibles para empezar como GameMaker, Construct2 o Unity3D, que tienen lenguajes más sencillos y muchas herramientas preparadas para diseñar los juegos y su contenido, mil veces más cómodo que hacértelo todo desde cero. Estas herramientas te permitiran ver resultados en poco tiempo, prototipar ideas rapidamente y sobre todo aprender a desarrollar juegos desde el primer momento. Te van a evitar el tener que pelearte con DirectX, fisicas y un monton de cosas que te puedes tirar meses o años en entender o aprender a desarrollar por ti mismo. Es un poco a lo de los motores que decia antes, tienes que plantearte si quieres hacer tecnologia o hacer juegos, pero hacer las dos cosas no suele ser el mejor camino sobre todo si lo que buscas es lo segundo.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Wealk

Buenas de nuevo y gracias por la respuesta. A sido más rápido de lo que esperaba xD.
Quizás no he sido muy especifico en el primer post, mi finalidad, más que desarrollar juegos, es trabajar como desarrollador de juegos, creo que es un matiz importante, una cosa es querer hacer juegos y otra es trabajar de ello. Lo que hizo que me pusiera a estudiar C++, fue que al ir al apartado de recruiting de las grandes empresas como Blizzard o NCSoft (para tener una base o una motivación... lo llamaremos trabajo deseado, por llamarlo de alguna manera) lo único que veía en la parte de especificaciones deseadas para programador era que necesitabas una experiencia mínima de 5 años con C++ ademas de un par de títulos lanzados al mercado. Y simplemente me dije... "Pues vamos a ello, si alguien ha conseguido entrar, porque no lo voy a hacer yo." Y empecé con C++.

Ahora viene el apartado de C++ y el Hockey de mesa que dije antes, más un pequeño MUD (juego de texto) para dejar correr un poco la imaginación y ver el avance, la verdad es que me gustó mas desarrollar el MUD que el juego de Hockey sin ninguna duda... Las posibilidades que me ofrecía eran ilimitadas, pues nada más y nada menos ya había creado mi primer mundo virtual. De texto pero virtual, ahí fue donde empecé a pensar que era hora de meterse con los gráficos y me decanté por DirectX porque es el más usado en la industria... Aunque cabe decir que también me interesé por OpenGL, pero bueno la decisión entre ambas era irrelevante, lo único que quería era poder implementar gráficos. Y aquí viene la teoría del engine.

CitarAqui no entiendo el por que llegas a esa conclusion. ¿Utilizar un motor para desarrollar el juego es como intentar aprender matematicas usando una calculadora? Es tan absurdo como pensar que para aprender a usar un coche has de fabricartelo desde cero pieza a pieza. Es absurdo si lo que buscas es conducir y no fabricar coches
Con el mensaje anterior no lo especifiqué demasiado, pero si que quiero aprender a realizar un juego desde 0. Mi planteamiento era... ¿Como voy a trabajar desarrollando juegos, si no se como se hace un juego? Siguiendo con la metáfora de los coches, lo veía como meterte a mecánico sin saber como funciona un coche. Y ahí deje el UDK (con el que había trabajado hasta entonces, que por cierto no usa nada de C++ sino su propio código, UnrealScript, aunque con el kimset creo que se llamaba ya ni hace falta apenas xD).

CitarPues ya has empezado mejor que la media de novatos, que la mayoria se lanzan a intentar desarrollarse sus propios World of Warcraft o Call of Duty sin saber si quiera hacer un triste Pong o un Tetris, asi que de sonar triste nada, has empezado bien  :)
También yo tuve esa época. Yo creo que todos hemos sido inocentes antes de entrar en este mundillo... Hasta que nos chocamos contra la realidad pura y física xD.

Yo creo que ya he comprendido la física... El tema me tenía un poco liado.
En cuanto al tema de los engines, el Game Maker y el Unity3D los he probado, la verdad pero como he dicho antes, no me convencieron mucho.

Gracias de nuevo por la ayuda.
Saludos.

[EX3]

Cita de: Wealk en 21 de Febrero de 2013, 08:01:37 AM
Quizás no he sido muy especifico en el primer post, mi finalidad, más que desarrollar juegos, es trabajar como desarrollador de juegos, creo que es un matiz importante, una cosa es querer hacer juegos y otra es trabajar de ello. Lo que hizo que me pusiera a estudiar C++, fue que al ir al apartado de recruiting de las grandes empresas como Blizzard o NCSoft (para tener una base o una motivación... lo llamaremos trabajo deseado, por llamarlo de alguna manera) lo único que veía en la parte de especificaciones deseadas para programador era que necesitabas una experiencia mínima de 5 años con C++ ademas de un par de títulos lanzados al mercado. Y simplemente me dije... "Pues vamos a ello, si alguien ha conseguido entrar, porque no lo voy a hacer yo." Y empecé con C++.
Fijate bien aqui lo que comentas. Hablas sobre las ofertas vacantes que viste en un estudio y no paraste a pensar que pedian exactamente, solo te paraste en el lenguaje que piden y la experiencia. ¿No has pensado que quizas, por lo que has mencionado, esos puestos podrian ser exactamente de desarrolladores para tecnologia? (motor, herramientas del juego, etc...). Tienes que pensar que desarrollar un juego no es solo programarlo, hay muchas disciplinas que implican desarrollar un juego: diseño, programacion, grafismo y un largo etc... Si te estas enfocando a ofertas como las que mencionas lo que buscas entonces no es desarrollar juegos, es aprender a desarrollar tecnologia, no es lo mismo.

Cita de: Wealk en 21 de Febrero de 2013, 08:01:37 AM
Ahora viene el apartado de C++ y el Hockey de mesa que dije antes, más un pequeño MUD (juego de texto) para dejar correr un poco la imaginación y ver el avance, la verdad es que me gustó mas desarrollar el MUD que el juego de Hockey sin ninguna duda... Las posibilidades que me ofrecía eran ilimitadas, pues nada más y nada menos ya había creado mi primer mundo virtual. De texto pero virtual, ahí fue donde empecé a pensar que era hora de meterse con los gráficos y me decanté por DirectX porque es el más usado en la industria... Aunque cabe decir que también me interesé por OpenGL, pero bueno la decisión entre ambas era irrelevante, lo único que quería era poder implementar gráficos. Y aquí viene la teoría del engine.
Ya que te refiers a lo que más se usa en la industria, si vas a meterte a aprender programacion a bajo nivel y con ideas de trabajar en el futuro de ello te aconsejo entonces que pases de DirectX y te metas con OpenGL. iOS, Android, PS3, Wii, Mac, Linux y algun juego todavia en Windows funcionan con OpenGL. Con DirectX solo alcanzaras Windows y XBox360, lo que a mi parecer es cerrarse demasiadas puertas en ese campo, sobre todo teniendo en cuenta la cantidad de desarrollos que se mueve solo en iOS por ejemplo.

Cita de: Wealk en 21 de Febrero de 2013, 08:01:37 AM
Con el mensaje anterior no lo especifiqué demasiado, pero si que quiero aprender a realizar un juego desde 0. Mi planteamiento era... ¿Como voy a trabajar desarrollando juegos, si no se como se hace un juego? Siguiendo con la metáfora de los coches, lo veía como meterte a mecánico sin saber como funciona un coche. Y ahí deje el UDK (con el que había trabajado hasta entonces, que por cierto no usa nada de C++ sino su propio código, UnrealScript, aunque con el kimset creo que se llamaba ya ni hace falta apenas xD).
Vuelves a mezclar cosas. ¿Por que te hace pensar que usar un motor no te va a permitir aprender a desarrollar un juego? Precisamente un motor es la herramienta para poder desarrollarlo, sea Unity3D o un motor que te hagas tu desde cero. El motor no es el juego, es solo la herramienta. Desarrollar un juego no es aprender a gestionar los vertices de un modelo, transformarlos y enviarlos a la memoria de la tarjeta grafica ni muchas otras cosas que seguramente estaras pensando a nivel tecnico. Desarrollar un juego es diseñar una jugabilidad, definir la logica de los elementos del juego (la IA de los enemigos por ejemplo), el diseño de niveles (no dejarlos bonitos si no diseñar el nivel y sus elementos acorde a lo que se busca en el juego, con un sentido definido y justificado), el apartado de arte grafico, de audio, etc... En serio, estas enfocando el concepto de desarrollo de juegos como si solo fuera programacion y la programacion no lo es todo si no solo una parte más.

Cita de: Wealk en 21 de Febrero de 2013, 08:01:37 AM
En cuanto al tema de los engines, el Game Maker y el Unity3D los he probado, la verdad pero como he dicho antes, no me convencieron mucho.
Esto seria interesante que explicaras el por que motivos no te convencieron, aunque imagino que tiene que ver con lo que decia antes, de que entiendes por desarrollo de juegos la programacion en si. Hablabas antes de lo que se usa en la industria, UDK/Unreal Engine 3 y Unity3D por ejemplo, son motores profesionales que se estan usando masivamente en incontables desarrollos para distintas plataformas (Unreal Engine 3 en consola es practicamente omnipresente en cualquier titulo desde hace años).

Lo primero que deberias tener claro es a que quieres enfocarte exactamente, por que por lo que veo hablas más de programacion en si que de desarrollo de juegos como tal, y esto deberias tenerlo claro para saber en que materias deberias centrarte y saber que te merece la pena aprender o no. Incluso dentro de la programacion tienes varias areas donde elegir: graficos, audio, IA, arquitectura de motores, herramientas de creacion de contenidos, fisicas, scripting... generalmente te sueles enfocar a una rama concreta donde especializarte, graficos por ejemplo.

No se, mientras no te aclares un poco estas dudas va a ser dificil saber orientarte.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Wealk

#4
El caso es que precisamente no se donde centrarme... ¿Como voy a saber en que sitio centrarme si no conozco cada uno de los sitios disponibles ni sus procedimientos?
Pensé que sería una buena idea desarrollar un "juego" desde 0 precisamente para ver que trabajos hay disponibles, además de adquirir conocimientos generales sobre la programación y después enfocarme y centrarme en un área en concreto.
Otro tema es DirectX o OpenGL, se que OpenGL tiene portabilidad para ser multiplataforma, pero según entendí, para empezar es más "fácil" con DirectX, cosa que no se hasta que punto es cierta o no.
También se que unreal engine 3 es una de las bases más conocidas en los videojuegos. Pero aun así me interesa adquirir los conocimientos más básicos sobre el desarrollo, ya sea realizar el código desde 0 o adquirir nuevos conocimientos sobre programación gráfica.
Supongo que son dudas de novatos, pero por eso estoy aquí preguntado xD.
Saludos.

EDITADO:
La verdad es que lo que mas me llama la atención es la programación gráfica. Pero esta claro que aun no tengo conocimientos necesarios.

Wealk

No hombre, ya comenté que lo de Blizzard o NCSoft lo tomé como referencia.
Digamos que más que mi meta, era un punto de salida. Que mejor comienzo que lo que recomiendan las grandes empresas.
Por otro lado, ya se que piden 5 años de experiencia laboral, ademas de ciertos títulos lanzados de manera oficial digamos, creo, lo que es un juego AAA (creo).
Lo de OpenGL la verdad es que quizá la respuesta era de manera subjetiva dado que pregunté directamente en un foro de DirectX, lo que lleva a pensar que realmente, si me contestaran que OpenGL es mas fácil de aprender se estarían contrariando un poco.
La verdad es que me llama mucho la programación gráfica, pero aun no tengo los conocimientos suficientes como para decir si es el campo que más me atrae del sector.
Mientras tanto seguiré avanzando con DirectX, porque sea lo similar que sea con OpenGL, no se hasta que punto en un momento dado se puede pasar de un lenguaje a otro sin excesivos esfuerzos para notar el cambio de lenguaje. Digo yo que todos los conocimientos aprendidos servirán para algo.

Saludos y gracias por la respuesta.






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.