Ir al contenido

publicidad

Foto

Miniguia: Quiero programar videojuegos. ¿Por dónde empiezo?


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
31 respuestas en este tema

  • axelst

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 19 abr 2001
  • Mensajes: 6.972
#1

Escrito 12 febrero 2006 - 21:03

Hola gentes:

Dado que es una pregunta muy recurrente creo conveniente hacer un pequeño resumen, aportando entre todos lo que sepamos, para orientar a los jóvenes intrépidos que desean aventurarse en la creacción de un videojuego. Vamos allá.

Lo primero que yo haría es definir los niveles de las herramientas diseñadas para hacer juegos. Una primera clasificación sería:


[NIVEL 1] : Click&Play, RPGMaker
En su momento las herramientas Click & Play gozaron de cierta popularidad, hoy día desconozco cómo andan. Como su nombre indica se trata de una herramienta diseñada para crear juegos simplemente pinchando y arrastrando. Obviamente permite un escaso margen de maniobra en tu creatividad.
El RPGMaker si está bien vivo, y exige mínimos conocimientos en nada que no sea pinchar y arrastrar. Los resultados obtenidos serán muy buenos. Una herramienta a tener en cuenta si piensas en hacer un RPG, aunque no te valdrá para otra cosa.
- Ventajas: como herramientas entry level pueden resultar interesantes. En el caso del RPG Maker los resultados son excelentes.
- Desventajas: no te puedes salir del tiesto, son herramientas poco versátiles.


[NIVEL 2] : Game Maker, Mugen
Estos lenguajes ya introducen en cierta medida el concepto de programación con los scripts. El Game Maker es un excelente entorno de desarrollo (que incluye editor de sprites, de objetos, etc) en el que se pueden crear juegos sin escribir una sola línea de código (pinchar y arrastrar), pero en cuyo caso sería un simple Click & Play. Para diferenciarse de éste, el GM soporta scripts, o lo que es lo mismo fragmentos de código. Usa un lenguaje muy sencillo y permite multiplicar la versatilidad del mismo. Con esto el Game Maker se muestra como una herramienta ideal para crear gran variedad de juegos y complicarlos tanto como tus conocimientos te permitan. El precio es provocativo: 15€.
Mugen por su parte solo permite crear juegos de lucha y se basa en scripts. Los resultados son excelentes en todo caso, pero su versatilidad obviamente es muy limitada.
- Ventajas: mayor versatilidad que las herramientas de Nivel 1 en el caso del GM e igual sencillez de uso si no queremos usar scripts.
- Desventajas: para sacarle rendimiento de verdad hay que aprender a programar aunque sea lo básico.


[NIVEL 3] : Blitz Basic, Dark Basic, Play Basic
A mi juicio el nivel REALMENTE INTERESANTE si quieres crear juegos de cualquier tipo. Se trata de herramientas en las que programar ya es obligatorio, y no hay nada que pueda hacerse sin escribir las correspondientes líneas de código. A cambio de este esfuerzo su versatilidad es absoluta, y podrás crear prácticamente cualquier juego en 2D que se te pase por la cabeza.
De ellos me decanto por Blitz Basic, potente y con una gran comunidad detrás, seguido por Play Basic, que es muy rápido, y dejando Dark Basic en último lugar, ya que es una herramienta inestable y que resulta un extraño híbrido entre 2D y 3D sin hacer realmente bien ninguna de las 2 cosas.
El precio no será obstáculo, rondando los 30€ todos ellos.
- Ventajas: si de verdad te atrae crear videojuegos, estas son tus herramientas. Aprende a dominarlas y disfrutarás con ellas.
- Desventajas: se acabó el pinchar y arrastrar. Aquí deberás programar desde la primera línea de código.


[NIVEL 4] : Blitz 3D, Dark Basic Pro
Añadimos la 3ª dimensión a las herramientas de nivel 3. Al igual que las anteriores todo aquí debe ser programado. Aunque no son lenguajes especialmente difíciles la verdadera dificultad llega al trabajar con el 3er eje del espacio. Por mi experiencia como desarrollador amateur los mejores productos amateur se dan en el campo de las 2D, ya que desarrollar en 3D requiere recursos y tiempo pocas veces al alcance del aficionado. Una alternativa es usar estas herramientas para crear juegos que en verdad no hagan uso intensivo de la 3ª dimensión, como pueden ser matamarcianos que se jueguen en 2D o shooters on the rails tipo Star Fox. El rendimiento de estas herramientas es bastante bueno y permite explotar muy bien las prestaciones 3D de nuestra gráfica y se apoyan en las populares DirectX.
El precio sube bastante, llegando a los 100€.
- Ventajas: la 3ª dimensión abre nuevos campos.
- Desventajas: los proyectos 3D suelen requerir demasiada carga de trabajo para un entorno amateur. Los buenos resultados vistos en proyectos amateur 2D lo confirman.


[NIVEL 5] : Blitz Max, SDL
El verdadero interés de estas herramientas es su carácter multiplataforma. Blitz Max cambia la filosofía de sus hermanos anteriores y se basa en programación orientada a objetos, apoyándose en las librerías OpenGL. Su código es compatible con Windows, Linux y Macintosh, y no aporta necesariamente más dificultad que el Blitz3D por ejemplo pero exige aprender la nueva forma en que se programa. El SDL por su parte es un conjunto de librerías standar de acceso a los recursos gráficos, sonoros y de interfaz de la máquina host y ha sido portado a infinidad de plataformas.
Ambas herramientas pueden ser usadas para proyectos tanto 2D como 3D, lo que unido a su carácter de multiplataforma las convierte en herramientas realmente versátiles.
El BlitzMax ronda los 80€ y el SDL es gratis.
- Ventajas: resultan realmente versátiles al permitir portar código entre plataformas. El SDL es gratis.
- Desventajas: si no tienes intención de sacar tu juego en múltiples plataformas quizás es complicarse la vida para nada.


[NIVEL 6] : DirectX, OpenGL
El último escalón: las mismas herramientas que usan los desarrolladores profesionales. Estamos ante 2 librerías de probada eficiencia en la creacción de videojuegos y que nos permiten tener control total el hardware. El rendimiento y la versatilidad de estas herramientas es superior a todas las anteriores, pero debes ser un programador experimentado para afrontarlas con éxito. En caso contrario desaconsejo su uso encarecidamente, pues te costará mucho obtener resultados.
Ambos son aptos para crear todo tipo de títulos, tanto 2D (simuladas) como 3D. Sin embargo olvídate de conseguir resultados profesionales salvo que tengas muchos recursos y tiempo disponibles.
DirectX se programa sobre C++ (el Visual Studio sale en 110€) y el OpenGL es gratuito.
- Ventajas: las herramientas de los profesionales.
- Desventajas: puede ser como matar moscas a cañonazos.


¿Y eso es todo? Pues no señores. Para crear videojuegos puedes usar prácticamente cualquier lenguaje, desde C de toda la vida hasta Visual Basic. Sin embargo, elijas el que elijas asegúrate de contar con un buen número de librerias de acceso a gráficos y sonidos que te ahorren mucho trabajo. Empezar desde cero es un trabajo innecesario. No hay necesidad de reinventar la rueda. Hay lenguajes excelentes, como el Div Games Studio para MS-DOS, pero que no pudo adaptarse a Windows y su sucesor Fenix resulta bastante lento en comparación con un Blitz Basic por ejemplo.

¿Qué me dices de otras plataformas? Sigue el mismo consejo: elije un lenguaje que cuente con las mejores librerías de acceso a gráficos y sonido, no intentes hacerlo todo por tu cuenta. Por ejemplo el MSX cuenta hoy día con excelentes lenguajes gracias al trabajo desinteresado de la comunidad. Yo programé un juego de estrategia en Turbo Pascal haciendo uso de unas librerías en ensamblador (del famoso Kari Lamassari). Otro ejemplo es la Dreamcast y su excelente entorno de desarrollo amateur 100% libre.

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

Para terminar es importante que cada persona elija la herramienta más acertada a sus características personales. En ello influirá completamente el hecho de tener alguna experiencia en programación y algorítmica, aunque sea básica. No es recomendable entrar de lleno con herramientas complejas si no tienes idea de programar, ya que puedes frustrate al ver que no avanzas.

Lo más importante es darte cuenta que haces avances, que cada día que pasas se nota la diferencia, ya que la motivación y la autoestima es imprescindible para continuar tu proyecto y no dejarlo en la estacada. Para saber qué herramienta se adapta mejor a tu perfil podemos establecer estos niveles:

Nivel C:
Jamás en tu vida has programado y tu formación académica es preuniversitaria. En este caso las herramientas de Nivel 1 y Nivel 2 son claramente tu target. Si no te asusta entrar un poco en programación el Game Maker resulta la más aventajada de todas. Tómalo con calma y antes de escribir líneas de código trata de aprender algorítimica básica y a resolver problemas de computación sobre un papel. Desarrollará mucho tu mente para escribir código.

Nivel B:
Tienes conocimientos básicos/medios de programación y algorítmica (FP / Cursos Formativos) o formación universitaria. Sin duda el nivel 3 es el tuyo, y además estas en disposición de aprender a manejar estas herramientas con cierta destreza. No te recomiendo entrar en el nivel 4 no por la dificultad de la herramienta, sino por no entrar en la 3ª dimensión.


Nivel A:
Tienes conocimientos avanzados de programación (formación universitaria de ramas tecnológicas, informática preferiblemente). No necesito aconsejarte nada: todos los niveles están a tu alcance. Aún con ello, salvo que cuentes con tiempo y recursos de sobra, el nivel 3 vuelve a ser mi recomendación, con incursiones en los niveles 4 y 5 a tu elección. Puedes marear la perdiz tanto como gustes y estás en disposición de abarcar cualquier género que te propongas. El uso de DirectX y/o OpenGL no creo que aporte mejoras por lo general, ya que estando solo o a lo más siendo un par de amigos no conseguireís extraer más jugo del que saqueís por ejemplo a un Blitz3D o Dark Basic Pro.


En los 3 niveles el desarrollo de vuestro primer videojuego os va a enseñar muchas cosas: cómo plantear una mecánica de juego, cómo represento las estructuras que interactuan, como planteo el desarrollo...

En ningún caso intentes abarcar más de lo que puedes, tanto con la herramienta usada como con el proyecto planteado. Insisto en que el Game Maker no por sencillo es malo, ya que puede dar frutos excelentes. Ni que decir tiene el RPG Maker si lo tuyo es el RPG. Vuelvo a repetir que lo importante es que notas que avanzas.

En lineas generales espero que os sirva para orientaros. Esperemos que alguien se anime con el tema y veamos una comunidad creciente de juegos amateur por aquí ;-).

#2

Escrito 12 febrero 2006 - 21:36

Excelente trabajo, este hilo se merece un post-it.

Ahora, personalmente, creo que todos esos blitz, basic, etc, no aportan nada. La versatilidad de ogl o dx es mayor y el esfuerzo de desarrollo similar. Además, utilizas un lenguaje más extendido.

En cualquier caso, a la hora de programar juegos, lo más importante es tener una idea. Sin una idea original y atractiva, tu proyecto no vale nada. Yo creo que un videojuego bueno se mide aproximadamente en un 75% arte y un 25% código.

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#3

Escrito 12 febrero 2006 - 21:44

Quizas sería también buena idea orientarlo en base al objetivo que se busca:

Diversión, enseñárselo a amigos, etc....

En este caso, cuanto mas simple mejor. Una herramienta que te permita hacer algo simple sin dedicar mucho tiempo. Niveles 1-4 (dependiendo de la calidad que se busque)

Otra alternativa muy de moda últimamente para juegos MUY simples es Flash. Si lo que te gusta es dibujar, animar, diseñar, etc... pero no quieres oir de programacion, es una buena opción.


Calidad profesional, entrar en la "industria", distribuir el juego compitiendo con otros, etc...:

C/C++, DirectX, OpenGL. Si el juego es 2D, puede ser util comenzar a aprender SDL antes de dar el salto.

Mucho tiempo. Aprendizaje muy largo (hablo de años). Solamente si te interesa dedicarte a ello de verdad.


Un saludo

  • Victek

  • Bang

  • vida restante: 100%
  • Registrado: 20 jul 2003
  • Mensajes: 698
#4

Escrito 12 febrero 2006 - 22:36

axelst, Muchas gracias por este punto objetivo y esclarecedor para los chavales que se flipan juagando y viendo los juegos. Les va a servir de motivación e información extraordinaria tal cmo lo has explicado. Voto por fijarlo como Post-it

Saludos

#5

Escrito 13 febrero 2006 - 00:24

Yo lo añadiría al post-it creado para marcar los hilos de información general de interés. Muy interesante.

  • axelst

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 19 abr 2001
  • Mensajes: 6.972
#6

Escrito 13 febrero 2006 - 00:41

Excelente trabajo, este hilo se merece un post-it.

Ahora, personalmente, creo que todos esos blitz, basic, etc, no aportan nada. La versatilidad de ogl o dx es mayor y el esfuerzo de desarrollo similar. Además, utilizas un lenguaje más extendido.

En cualquier caso, a la hora de programar juegos, lo más importante es tener una idea. Sin una idea original y atractiva, tu proyecto no vale nada. Yo creo que un videojuego bueno se mide aproximadamente en un 75% arte y un 25% código.


No creas, los lenguajes tipo Basic son más abordables que otros como DirectX que requiere aprender C, un lenguaje bastante más árido que el Basic. En este sentido eres injusto con aquellos que estan empezando y hay que tener algo claro: la mejor herramienta es SIEMPRE la más fácil de usar. En un entorno amateur insisto es muy difícil usar realmente esas prestaciones adicionales de DX y OGL, y con los otros lenguajes los resultados llegan antes (imprescindible para el que empieza). Si precisamente recomiendo Blitz Basic es por la impresionante comunidad que hay detrás de él, vamos que soporte no te faltará.

El reparto que haces de 75-25% está claro. Los juegos no se hacen por arte magia y hace falta tener una idea, plantar la semilla, no ponerse a escribir como un poseso. Un buen punto de partida suelen ser los remakes. Y vuelvo a insistir: meterse en 3D no es la mejor opción. El universo amateur produce juegos con una proporción 10-1 para los 2D.

A todos en general gracias por vuestras palabras, por mí no hay inconveniente en que le pongan la chincheta si lo consideran oportuno ;-). Más de uno descubrirá que crear juegos resulta más apasionante que jugarlos, y ver tu obra te llena de satisfacción.

Un saludete.

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#7

Escrito 13 febrero 2006 - 01:24

hay que tener algo claro: la mejor herramienta es SIEMPRE la más fácil de usar.


Pues en eso ya no estoy de acuerdo :D

En igualdad de resultados (es decir, ambas herramientas te dan lo mismo), la más sencilla es la mejor, claro.

El problema es que rara vez ocurre así. En la vida real, unas herramientas más simples te ahorran mucho trabajo, pero tienen menos prestaciones que otras más complejas.

En realidad, la mejor herramienta depende de qué es lo que quieres hacer. Así que dependiendo de cual sea tu proyecto, te convendrá mas usar una herramienta más compleja (pero con mejores prestaciones) que otra que podría ser más simple, pero te limita en ciertos aspectos.


En un entorno amateur insisto es muy difícil usar realmente esas prestaciones adicionales de DX y OGL


Eso depende, de nuevo, de cual sea el proyecto. Hay juegos amateurs que tienen la complejidad del "Pong", y otros que dejan cortos a muchos juegos comerciales.


Por otra parte, quiero dejar algo claro:

BASIC, C, C++, Java... son lenguajes

DirectX, OpenGL, SDL... no son lenguajes, sino librerías. Para usarlos, necesitas conocer C/C++


Lenguajes como BASIC, Pascal, etc... son útiles para aprender, pero tienen limitaciones considerables:

- Ofrecen poco "control". En la programación de juegos, la eficiencia es fundamental. Y la eficiencia se consigue con el control a bajo nivel.

- Generalmente, no son OOP

- (Y este es importante) No son considerados como lenguajes "importantes", al nivel de Java o C/C++.

Esto significa que la mayor parte de libros, documentación, tutoriales, artículos, etc... vendrán en C/C++ (por ejemplo), y no en BASIC. Lo que significa que antes o después llegarás a un punto donde si quieres seguir avanzando, vas a tener que aprender C/C++ por narices.

Desde luego, si lo único que quieres es hacer un juego simple, para divertirte un rato, y ya está, esto te da igual. Pero esto que cuento está orientado a aquellos que SI quieren aprender más, y tienen intención de dedicarse a ello en cierta medida.


En cualquier caso, a la hora de programar juegos, lo más importante es tener una idea. Sin una idea original y atractiva, tu proyecto no vale nada. Yo creo que un videojuego bueno se mide aproximadamente en un 75% arte y un 25% código.


El tema de la "idea" está muy sobrevalorado. En realidad, tener la idea es la parte fácil. Cualquiera que esté leyendo esto puede tener más de una idea para un videojuego que sería aceptable, incluso "bueno" xD

La dificultad está en "transformar" esa idea en un juego sólido, divertido, bien acabado, etc... Este proceso de desarrollo es el que distingue los juegos buenos de los malos, así de simple.
Se puede partir de una idea genial, y producir una bazofia. Pero normalmente, un juego bien desarrollado, aunque no sea original, puede ser un buen juego y divertido.

Por eso, uno de los errores más comunes en los grupos amateurs es decir lo de "como la idea es genial, el juego será genial". Pues lo siento, pero si no sabes desarrollar un juego, no importa lo buena que sea tu idea, el resultado será igual de malo.


Conclusión: Olvidaos de ideas originales y aprended a desarrollar juegos.

#8

Escrito 13 febrero 2006 - 01:40

Tengo a medias un proyecto en RPGMaker y creo q próximamente intentaré "subir al nivel 2", XDD. Gracias por esta guía para novatos!
Chincheta al post!

  • SHArQ

  • PRAESIDIUM VIGILO

  • vida restante: 100%
  • Registrado: 13 nov 2001
  • Mensajes: 6.720
#9

Escrito 13 febrero 2006 - 01:56

Añadido al post de tutoriales. ;)


Saludos

  • axelst

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 19 abr 2001
  • Mensajes: 6.972
#10

Escrito 13 febrero 2006 - 02:06

...


Me da la sensación que eres de los que mata moscas a cañonazos X-D.

Vamos a ver, no se por qué entornos te mueves, pero en mi caso jamás hemos sido más de 4 personas para hacer un juego y las prestaciones de las herramientas mencionadas no suelen quedarse cortas para un equipo amateur. Ahora mismo tengo un excelente dibujante colaborando conmigo y está saturado de trabajo con un proyecto en Blitz Basic que espero publicar pronto. Y todo por darle un aspecto mínimamente atractivo.

Puedes enseñarme los juegos en los que te hayas involucrado y se te quedaran cortas las herramientas menores, pero salvo que hayais sido un equipo grande (o con mucho tiempo) estoy seguro que no es nada que no pueda afrontarse con el mismo resultado en un Blitz por ejemplo.

Claro que son librerías, por eso procuro usar la palabra lenguaje poco y hablar mejor de "herramientas de desarrollo". De hecho Game Maker es un entorno, como lo era DiV.

En resumen, difiero profundamente de todo lo que dices y si el título del post es por donde empiezo creo que tus consejos van a complicar la vida a la gente más que ayudar. En fin, tenemos mentalidades diferentes y me mantengo en mi consejo: la mejor via es siempre la que permita hacer algo de la forma más sencilla.

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#11

Escrito 13 febrero 2006 - 02:51

....


Creo que no se me ha entendido, o que no me he explicado suficientemente bien.

No estoy diciendo que lo que tu propones (blitz basic, etc...) sea inadecuado. Lo que digo es que DEPENDE de lo que quieras hacer.

Y lo que digo es que una persona que entra a aprender, con el objetivo de hacer un juego para divertirse un rato, busca algo distinto que otra persona que quiera algún día llevar a cabo proyectos "grandes", o trabajar programando juegos.

Ambos están en la casilla cero, ambos quieren hacer juegos, pero el camino que deben seguir es distinto.

Asi que, basicamente, si quieres hacer juegos con amigos y pasar el rato, blitz basic es perfecto.

Si quieres hacer algo mas, y llegar algun dia a hacer juegos profesionalmente, lo mejor es aprender a usar las herramientas profesionales, y esas son C/C++/Java/C# + DX/OpenGL, etc...

Y lo son por una buena razon.


En cuanto a que en un juego amateur no surge la necesidad de usar características "avanzadas", eso depende del proyecto. Como digo, hay juegos amateurs que dan mil vueltas a ciertos juegos comerciales.

Ten en cuenta que un proyecto amateur puede ir desde esto:

Imagen Enviada

A cosas como estas:

Imagen Enviada

Imagen Enviada

Imagen Enviada


Todos ellos son proyectos "amateurs", precisamente porque los que los hacen no cobran nada (a diferencia de un proyecto profesional), y lo hacen por gusto y en sus ratos libres.

"Amateur" no tiene nada que ver con la calidad gráfica, o con la duración del desarrollo. Asi que distintos proyectos tendrán distintas necesidades, y por lo tanto, necesitan distintas herramientas.

Un saludo.

  • SHArQ

  • PRAESIDIUM VIGILO

  • vida restante: 100%
  • Registrado: 13 nov 2001
  • Mensajes: 6.720
#12

Escrito 13 febrero 2006 - 13:08

....


Vamos a ver Sante...

Este es un post idéntico a los que hay, preguntando "quiero empezar a programar" y vienen los Javeros y CePlusPluseros a decirle al chaval "Empieza directamente con Java/C++ que podras hacer todo lo que quieras y super rápido y super potente y serás el puto amo y el más chulo del barrio".

FALSO.

Es el típico planteamiento (el único que tienen, básicamente) de los que sólo han conocido la programación cuando han empezado a darla en la facultad. NO han "mamado" programación desde que tenian 12 años porque era lo que les apasionaba. Curiosamente (o no) dentro de este último grupo, entre los que me incluyo, SIEMPRE recomendamos empezar con un lenguaje imperativo/declarativo como Pascal, o BASIC tirando a muy muy principiante. Porque hemos sabido empezar "desde abajo" y subiendo poco a poco, aunque con las ideas más o menos claras.

Tu caso es muy parecido, es decir, estás dando por sentado de que alguien que quiere empezar a programar juegos, quizás lo primero que pretende hacer es el Doom IV. Así, sin despeinarse ni nada. Vamos yo no creo que alguien con un par de dedos de frente, pueda pretender semejante cosa. A lo mejor sí tiene esa "ilusión", que es algo totalmente distinto a "pretensión". Lo que no se puede es no ser realista; si quiero EMPEZAR, pues eso, tendré que EMPEZAR.

Vamos a recurrir a los típicos ejemplos de los coches: A alguien que quiere APRENDER a conducir, ¿que le dices? "Apuntate primero a una autoescuela y luego pillate un coche pequeñito de segunda mano, que no corra". Esto es lo que una persona sensata diria, no? No vas a decirle "Dejate de ostias, el Ibiza del 87 de tu cuñao que se lo meta por el culo. Pillate un BMW Z4". Tambien podemos extrapolarlo a las motos, y en vez de recomendarle un ciclomotor le dices que si no se pilla una 750 como mínimo, no es nadie. Lo que le estás deseando al chaval es que se mate, ni más ni menos.

No se puede empezar apuntando a lo más alto, hay que ir subiendo poco a poco. Ambición? Sí, por supuesto que sí, si no no existirían las obras maestras de la programación que vemos cada "x" tiempo. Pero sabiendo en qué sitio estamos, y averiguando, con la experiencia, a dónde queremos llegar. Una persona que quiere empezar el desarrollo de juegos, lo más probable es que eso del modelado de mallas, NURBs y todo lo demás no tenga ni idea de qué es. Si empieza a tocar esos conceptos desde el principio, se hará una empanada mental acojonante. Acabará pensando que esto de programar juegos es complicadísimo (que lo es ;)) y posiblemente lo deje. En cambio yo creo que currarse un jueguecillo "sencillito" como el de la primera captura que has puesto por ahi arriba, que básicamente debe funcionar con sprites (no lo sé) pues oye... es un pedazo de logro.
Y a partir de ahí cuando las 2D ya no tengan secretos para tí... pues oye lánzate a por las 3D, pero que sepas que toda la física y las mates que te han dado en tu vida, van a ser pocas. :D


Saludos

  • axelst

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 19 abr 2001
  • Mensajes: 6.972
#13

Escrito 13 febrero 2006 - 14:28

Sharq, eres de los míos ;-). No tengo nada que añadir, básicamente suscribo todo lo que dices y a veces la gente se olvida que hay que empezar desde abajo. Servidor también empezó con su Amstrad CPC pegándose cabezazos con el Basic hasta hacer una par de jueguecillos (Space Invaders y una aventurilla gráfica, muy simple), y he acabado con un Ingeniería Superior bajo el brazo. Y ahora cuando miro todo el camino recorrido veo claramente la parrilla de salida: mi Amstrad Basic :-). El ejemplo de la moto y el coche lo es un simil perfecto, y creo que cualquiera que quiera empezar lo entenderá.

De verdad Sante05, no se por qué entornos te mueves pero el mundo real es muy distinto y te lo digo por experiencia con compañeros como los que pueden leer nuestras líneas. Chavales que con un ciclo formativo de grado superior (total, saben programar) les he recomendado empezar por el Blitz Basic y oye, su código no era en absoluto ordenado y menos aún eficiente. Pero mire usted, funciona, ya es un comienzo. Y hablo de gente que como digo tiene formación en programación. ¿Crees que este hombre tiene idea de lo que es un buscador de caminos o cómo se programa una IA? Ni falta que le hace mire usted, ni me molesto en plantearle algo que solo conseguirá frustrarle.

Los juegos 3D que muestras me parecen realmente excesivos para planteárselos alguien que empieza, e incluso llevando tiempo en esto hace falta mucho tiempo y recursos para sacar algo así, que no está al alcance de todos.

Y para rematar y como dice Sharq, cuando quieras entrar más de lleno en materia y tengas que diseñar juegos complejos, ya exigimos conocimientos más allá de la programación básica y se exige una física y matemáticas que cualquiera que no tenga una ingeniería superior (y en muchos casos aún teniéndola) no va a poder afrontar.

Esa primera foto me parece perfecta para unos inicios, y vuelvo a recomendar encarecidamente fijarse en remakes de clásicos (tan clásicos como gustes). Vamos que hacer un Space Invaders es lo primero grande que conseguí en mi CPC y el subidón que me dio me gustaría que lo sintiera la gente.

Un saludete.

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#14

Escrito 13 febrero 2006 - 14:31

Es el típico planteamiento (el único que tienen, básicamente) de los que sólo han conocido la programación cuando han empezado a darla en la facultad. NO han "mamado" programación desde que tenian 12 años porque era lo que les apasionaba.


Ese no es mi caso. Empecé a programar desde pequeño y con GWBASIC, y desde entonces he tocado muchos lenguajes y herramientas (incluida alguna de "creacion rápida de juegos")

No digo que se empieze a programar directamente en C++ con OpenGL (y perdón si ha parecido eso), porque eso es una locura.

Lo ideal es comenzar con un lenguaje suave (Basic, Pascal, etc...), y cuando se conozca ese lenguaje, aprender un lenguaje duro (C/C++, Java, ...).

Cuando conozcas C/C++ (por ejemplo), ya puedes empezar a hacer juegos 2D con SDL, y despues, comenzar en las 3D con la tipica demo del cubo rotando.

Ese es el camino lógico, y en mi opinión, el mejor. Aunque hay quien apuesta por no tocar las 2D y saltar directamente a APIs 3D. La razón es que actualmente con OpenGL puedes hacer juegos 2D, con mucha más calidad que la que te puede dar SDL. Yo no comparto esa postura, pero ese es otro tema.


La cuestión es que, cuando recomiendo empezar por Basic o Pascal, no me estoy refiriendo a BlitzBasic o similares. Son cosas bien distintas.

Si empiezas con Basic, aprendes a programar en ese lenguaje, y a los pocos meses te pasas a C/C++. No aprendes a hacer juegos, sino simplemente los conceptos básicos de programación. Que es como debe ser.

El usar BlitzBasic (y cuando digo BlitzBasic me refiero a toda esa gama de herramientas) es peligroso. Precisamente porque BlitzBasic es muy buen método para hacer juegos simples sin complicarte la vida, pero no es un buen método para aprender a programar juegos.


Un ejemplo hipotético:

Fulanito quiere aprender a hacer juegos. Se compra GameMaker XL, que es una herramienta que permite hacer juegos 2D con un lenguaje al estilo BASIC.

Fulanito aprende BASIC en 2 meses, y de repente puede hacer juegos en 2D. "Genial", piensa Fulanito. Y se pone a hacer juegos simples.

El paso normal después de saber BASIC sería pasar a C/C++, pero Fulanito ve que para hacer el mismo juego que hace en 1 semana con GameMaker XL, tardaría bastante más en C/C++.
Y eso sin contar los meses que le llevaría aprender el nuevo lenguaje, usar las librerías, y demás.

En este punto Fulanito se desvía del "camino correcto", cede a la tentación de hacer juegos de forma simple y fácil. Y Fulanito se pasa 2 años (por ejemplo) usando GameMaker XL y haciendo juegos cada vez mejores.

¿Está aprendiendo Fulanito? Desde luego, aprende unos cuantos conceptos básicos, pero esos conceptos son los más fáciles de aprender. No tiene que preocuparse de los distintos tipos de memorias, de qué es un blitter, de los formatos de pixels, de algoritmos de optimización, etc...

En realidad, GameMaker XL está engañando a Fulanito. Está escondiendo toda la complejidad y le está haciendo creer que hacer juegos es simple y divertido; cuando la realidad es que hacer juegos es jodidamente complicado.

Pasados los dos años, Fulanito quiere meter efectos de luces en su nuevo juego. Y descubre que al hacerlo, el juego va increíblemente lento. No hay manera de solucionar el problema. Sencillamente, GameMaker XL no está diseñado para meter luces en el juego.

Fulanito ha tocado el techo, ha encontrado la limitación de esa herramienta. Ahora Fulanito, si quiere seguir avanzando, tendrá que abandonar GameMaker XL y empezar a aprender C/C++. Volver a cero, prácticamente.

Si Fulanito hubiese aprendido C/C++ después de BASIC, en lugar de perder 2 años con GameMaker XL, ahora sería capaz de hacer el juego que deseaba, con luces, partículas, y todo lo que quiera. Sin embargo ahora tiene otros 2 años por delante para "recuperar" el nivel que tenía (que realmente nunca tuvo, solo "creia" tener)


Ese es el riesgo de esas herramientas. Que al ofrecer resultados rápidos, es muy fácil ceder a la tentación y no seguir "aprendiendo". Si eso te da igual, porque sabes que NUNCA vas a querer hacer un juego más complejo, pues genial.

Pero si tienes la ilusión de llegar algún día a hacer juegos como los que he puesto en las capturas (y no digo mañana, sino dentro de 5 años, por ejemplo), entonces lo mejor es que empieces HOY por el camino correcto.

Un saludo.

  • axelst

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 19 abr 2001
  • Mensajes: 6.972
#15

Escrito 13 febrero 2006 - 14:54

Pero si tienes la ilusión de llegar algún día a hacer juegos como los que he puesto en las capturas (y no digo mañana, sino dentro de 5 años, por ejemplo), entonces lo mejor es que empieces HOY por el camino correcto.

Un saludo.


Es que en mi opinión el camino correcto es seguir usando una herramienta mientras te sirva. Vuelves a hablar de conceptos como luces dinámicas y entrar en la 3ª dimensión, diseñar IAs y físicas reales. Muy complejo lo veo para el 99% de los mortales.

Es que a la postre prácticamente cualquier juego que puedas afrontar como amateur podrás hacerlo con esas herramientas. Así de simple. No hay que crear necesidades artificiales y cambiar a C++ porque sí, puedes seguir con Blitz mientras responda a tus expectativas.

No veo que sean 2 años perdidos. Muy al contrario, seguro que aprenderás muchas cosas y de la forma más simple, sin que la dificultad del lenguaje sea un obstáculo para seguir aprendiendo. Lo que es seguro es que en 2 meses poco aprenderás, y saltar ya a C++ es tirarse contra un muro de hormigón.

En 2 años aprenderás mucho más que escribir en Basic: aprenderás lo que es un juego, cómo plantearlo, resolverás infinidad de problemas de algorítmica de distinta índole. Mire usted, igual diseñas incluso un buscador de caminos. Pero has aprendido algo útil, el lenguaje no ha sido obstáculo para aprender. No añadamos dificultades de computación a problemas que de por sí ya son complejos.

Pasados esos 2 años y con un dominio respetable en cómo hacer juegos y cómo traspasar tu idea al Blitz Basic te das cuenta que quieres escalar. AHORA es el momento de hacer el cambio, y NO antes, y tienes muchas herramientas que pueden suponer un nuevo reto (como el Blitz 3D, Blitz Max o el SDL). Pero quieres ir hasta el final y elijes DirectX. Llevas 2 años resolviendo problemas y el C++ te planteará otros nuevos que son problemas de computación, ya que de algorítmica ya has aprendido. Ahora con una buena base es el momento de afrontar esos nuevos problemas y ser capaz de resolverlos. Quizás ya si te planteas qué es un blitter, pero no antes donde tu interés se centra en hacer primero un Space Invaders y acabar en un R-Type.

En resumen, no consiste en aprender a programar, sino en aprender a resolver problemas, que eso es hacer un juego (y hacer cualquier cosa en la vida). Para diseñar un buscador de caminos lo importante no es hacerlo en C++ o en Blitz Basic: es saber que el algoritmo A* es la solución. Traspasarlo luego a un lenguaje u otro es irrelevante: utiliza el que tengas al uso en ese momento. Ni más, ni menos.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad