[Videojuegos] ¿Con cual lenguaje de programación empezar?

En mi vida he programado nada, he visto algunos códigos fuentes pero no entiendo nada de nada, así que tengo varias preguntas:
he visto muy por encima que existen muchísimos lenguajes de programación, pero tomando en cuenta que lo único que me interesa es realizar videojuegos ¿cual seria el mejor para un novato?
¿Podría ser posible que aprenda de manera autodidacta a hacer un juego desde cero, o me conviene más inscribirme a un cursillo de los que dan en algunas escuelas?
¿Realmente cuanto tiempo tardaría para poder ver mi primer snake o "juego de la vivorita"?
¿Que es lo más que un novato puede lograr hablando de nivel gráfico ¿algo tipo Snes? o eso es mucho?
¿Necesitare grandes conocimientos de matemáticas?
lo único que tengo "claro" es que me gustaría aprender a manejarme con opengl más que nada por que es multiplataforma (aunque me interesa más que nada programarlo y correrlo bajo GNU/Linux)
lo más seguro es que haya dicho más de una chorrada así que pido perdón, iluminarme un poco por favor
p.d. espero que sea el lugar correcto para este hilo
Yo te recomendaria si quieres versatibilidad y no comerte mucho la olla y ya que dices 2D utilizaria java con la API JAVA2D , si con eso consigues algo iria subiendo de peldaño que por cierto hay bastante documentacion

http://www.gratisweb.com/bshjai/parte21/cap21-1.html Bastante útil

Si eso te es facil tocaria C/c++

Salu2.
Como programador, te puedo recomendar una cosa:

Empezar a hacer algunas cosas para aprender con C. Y me refiero, en consola, nada de ventanas ni nada de eso. Con esto, aprendes realmente "qué es" la programación, y empiezas por el principio, por la programación estructurada. No te permitirá hacer grandes cosas, pero aprenderás de forma adecuada.

Luego, una vez aprendida la sintáxis de C (que es la más utilizada), ya puedes irte a por "algo en serio" con C++. Con esto, aprenderás un nuevo escalón: programación Orientada a Objetos, aunque en esto, te recomiendo algun manual que encuentres por la red, para tener claros los principios.

Como tercer paso, ya te puedes tirar a por lo que sea:
- programación web (php)
- programacion C++ en el sentido que quieras
- programacion de videojuegos (con SDL, te recomiendo)

No vas a conseguir hacer nada del otro mundo, pues hacer un videojuego o un programa "decente" requiere de muuuuucho tiempo y varias personas trabajando, pero al menos podrás considerarte programador "profesional", y podrás participar en cualquier desarrollo importante.


Y por otro lado: podrás desenvolverte con soltura ya en Java, Visual Basic, .NET, etc... Es decir: sabrás PROGRAMAR, y no solo "programar con Java".
Claro que es posible aprender de forma autodidacta. Solo necesitas dedicacion y mucha documentacion. Lo segundo, teniendo internet, esta mas que cubierto XD

Yo tambien te recomiendo C, y que no apuntes a las estrellas.
Esto se empieza por abajo, y eso representa hacer programas en consola, que hacen bucles tontos, calculos tontos, pequeñas operaciones con archivos... mostrando simple texto en la consola... Y desde ahi, vas evolucionando.

Una vez que tengas el suficiente dominio, puedes documentarte de como usar una biblioteca como SDL, que te hara muy sencillas ciertas cosas en juegos, como poner el modo grafico adecuado, pintar sprites y demas.
El limite lo pones tu.
Pues yo empezaria por pseudocodigo. Para aprender la metodologia de programacion. Pienso que es algo basico para entender cualquier lenguaje. Posteriormente vas asimilando la sintaxis de cualquier otro tipo de lenguaje.
Primero deberías coger unos pequeños conceptos de programación.

Si quieres algo rápido, lo tuyo es python+pygame, aunque a mí sdl no me gusta mucho. Lua es un gran lenguaje para juegos, a mí me gusta mucho. El problema de la elección es que hay docenas de lenguajes, librerías y motores.

Un juego de la serpiente lo puedes hacer en 20min, si sabes programar un poco es muy sencillo.

De manera autodidacta se puede (yo estoy en ello en ratos libres :P). Un novato puede lograr cosas majicas, pero hay que meterle mucho tiempo. Yo estoy aprendiendo por lo que suelo meter para los personajes círculos de colores hechos en 10seg, si quieres que quede la cosa maja necesitas usar buenos gráficos. Repito que lo que hay es que meterle mucho tiempo e ir poco a poco, te lo dice un experto en dejar juegos a medias.

Las matemáticas, pues depende del juego. Si vas a hacerlo todo tú y te vas a poner a calcular rutas, direcciones, vectores y de todo, pues algo de trigonometría y de algoritmos te hará falta. Afortunadamente para muchas cosas hay guías y librerías.

Opengl a pelo es tedioso. Tienes por ahí el opengl red book ( http://www.glprogramming.com/red/ ) que es la biblia de opengl, pero para ello necesitas saber C. Si le metes algo de tiempo, lograrás rotar un cubo :P

En resumen, lo mejor es aprender algo a programar. Aprende algo de C, que es un lenguaje básico. Si ves que odias C, prueba python o lua. Una vez cojas unos conceptos, tendrás que elegir una librería. Aparte de opengl y sdl hay muchas más... Para python tienes pygame, pyopengl, rabbyt (ésta me gusta, 2D basado en opengl)... Hay muchos lenguajes que tienen bindings para muchas librerías. En fin, que es un jodido lío.

Yo he probado C+SDL, python+SDL, python+pygame, python+pyopengl, python+rabbyt, C+opengl, C++ + allegro, y algunos más...

La más sencilla y que mejores resultados gráficos en 2D da, para mí, de las que he probado es rabbyt. Usa opengl por lo que queda todo bastante fino. Creo que no es muy conocido. http://matthewmarshall.org/projects/rabbyt/

Si quieres usar opengl y no complicarte en exceso, ya que python es un lenguaje más sencillo que C, puedes probar python+pyopengl.

También hay motores gráficos, que te dan la mayor parte del trabajo hecho y tú sólo tienes que "hacer el juego". No he probado ninguno.

En fin, espero no haberte liado mucho.
Gracias a todos por sus respuestas, creo que buscare algunos tutoriales de C para empezar
Bueno, puede que lo que voy a decir ahora a muchos os parezca un sacrilegio, pero yo te aconsejo que empieces con Visual Basic. Se trata de un leguaje infecto que desaconsejo fervientemente para realizar cualquier proyecto serio (y aún así no es extraño encontraselo por ahí...), pero también es un lenguaje sencillo que permite obtener resultados simples en poco tiempo. Y no se como lo vereis los demás, pero en mi opinión cuando uno empieza a aprender a programar quiere obtener resultados visibles en poco tiempo. Con Visual Basic podrás crear en muy poco tiempo cosas que se muevan y programar formas de interacción sencillas. Claro que a la que quieras hacer algo de cierta entidad (y con esto me refiero incluso a utilizar un siemple scroll) Visual Basic te será de escasa ayuda, porque no está hecho para dichos menesteres. No es que no se pueda, pero tendrás que utilizar alguna API gráfica (el GDI es la más típica, aunque yo mismo he llegado a utilizar OpenGL y he visto gran cantidad de ejemplos con DirectX) si quieres obtener resultados estables. Llegados a este punto, yo te aconsejaría rebobinar y empezar a aprender otro de los lenguajes que te han aconsejado.

Si te sirve de algo, yo empecé mi andadura con el QBasic, pillando los pequeños códigos que venían en la ayuda y modíficandolos para entender cómo funcionaban. De hecho era programar con eso, en ensamblador (con el Debuger, no se si alguien lo recordará) o miserables archivos BAT de proceso por lotes. Claro que por aquel entonces no disponía de interne ni de toda la documentación que hay ahora.

Por otro lado, me gustaría comentar algo respecto al aprendizaje autodidacta de la programación. Sí, no me cabe duda de que cualquiera puede picarte un programa que más o menos funcione e incluso alguno sin ayuda externa la hará de forma pulida. Pero yo he programado por mi cuenta antes de pasar por la universidad y puedo decir que la educacción reglada te cambia el estilo. En mi opinión a mejor.

Notese que por Visual Basic me refiero al 6, el .Net no se hasta que punto será mejor o más o menos adecuado para los nuevos.
Dr. Demencio, haces honor a tu nick...

Y sobre lo del "estilo", nada te impide tener "estilo" de forma autodidacta.
Es cuestion de cada uno aprender bien, o mal.
Me da a mí que usa linux así que la opción (horrorosa en mi opinión xD) de visual basic la tiene difícil.
Gracias por el consejo Dr. Demencio pero uso arch así que como ya dijeron visual basic no es la mejor opción, de cualquier forma la tendré en cuenta al igual que las sugerencias de los demás ;)
Aunque use Linux tiene alternativas buenas de ide como Mono que soporta visual basic pero Creo que no soporta VB6 si no visual basic 8 (VB2003) en la actualidad van por la version 2.4.2.3

Aparte de eso , http://www.go-mono.com/mono-downloads/download.html tiene varios modos en su descarga .

Tambien está Gambas (Para mí el mas recomendado es el he usado mas a fondo bajo linux) http://gambas.sourceforge.net/en/main.html

Ahora todo viene a lo de siempre tutoriales y mucha paciencia que esto son horas y horas.
MaXiMu escribió:Tambien está Gambas (Para mí el mas recomendado es el he usado mas a fondo bajo linux) http://gambas.sourceforge.net/en/main.html


¿Pero Gambas es un IDE serio para programar?
Por dios, la mierda de MONO, NO!! Todo menos eso! [lapota]
Si vas a optar por VB6 en linux no conozco alguna alternativa mas amigable al menos que conozca , aparte de aceptar plugins y ser GPL que más se puede pedir , lo unico que encuentro en falta son que no tiene los arrays de controles pero bueno no todo podría ser perfecto , pero a la larga te acoplas a la perfeccion .
En serio, si se pone a hacer juegos en gambas o en mono voy y le quemo el ordenador.
MaXiMu escribió:Si vas a optar por VB6 en linux

Pero nadie ha dicho que vaya a optar por el bodrio de VB6 en GNU/Linux.
Y por dios, la mierda Mono bien lejos.
amuchamu escribió:En serio, si se pone a hacer juegos en gambas o en mono voy y le quemo el ordenador.

[qmparto] [qmparto] [qmparto]

Yo les agradezco todos sus comentarios, pero aún así seguire el de la mayoria y me pondre con C
JanKusanagi escribió:
MaXiMu escribió:Si vas a optar por VB6 en linux

Pero nadie ha dicho que vaya a optar por el bodrio de VB6 en GNU/Linux.
Y por dios, la mierda Mono bien lejos.


Yo lo solte para decir que hay alternativas en linux para ese lenguaje no que se vaya a utilizar

Si dije Mono o Gambas fue porqué valoro bastante las interfaces (GUI) , que cumplan para lo que fueran creadas con herramientas que conocia que soportan Visual basic , al igual que podria decir Netbeans o Eclipse son buenos y completos , codeblocks o DEV-C++ para C++ etc etc , todo lo que llega ser amigable y de ayuda para el desarollador

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

Cambiando de tema ya que eligio C para portabilidad para 2D alguna de estas librerias SDL , alegro , pygame o clanlib , luego en Cliente IDE para C (Anjuta / WxpStudio (Si vas a trabajar con python) pero aquí lo mejor es que se adapte donde estes mas agusto ya que hay un sin fin para C o C++

Salu2.
amuchamu escribió:En serio, si se pone a hacer juegos en gambas o en mono voy y le quemo el ordenador.

Yo compro la gasolina.
Jan@work escribió:Dr. Demencio, haces honor a tu nick...

Lo se :-P

Respecto al estilo, pues hombre, no voy a decir que sea imposible, pero cuanto menos opino que debe ser poco habitual que una persona que aprenda por sí sola a programar haga uso de las best practices habituales (modularidad, encapsulamiento, etc.). Más que nada porque aunque útiles a la larga, son un auténtico coñazo a corto plazo.

Y sí, realmente si utilizas Linux (se me había escapado ese detalle, sorry) el VB6 no es una opción razonable.
Yo he empezado visual basic en el colegio, y es lo peor que te puedes echar para empezar a programar de verdad.
Muchos lenguajes estan basados en C y en su sintaxis mientras que visual basic no, asi que en el momento en que salgas de VB y veas el mundo C, te va a costar mas adaptarte que si empezaras desde 0 la programación con C

A todo esto. A mi me gustaria empezar a hacer programas con entorno grafico bajo linux, que me recomendais para empezar?
Y no me digais que empiece con C, que tengo la huellas dactilares gastadas de picar codigo en C en el modulo [carcajad]
Discrepo al respecto. Yo opino que una vez tienes claros los conceptos básicos de la programación (variables, condicionales, bucles, funciones, etc.) en un lenguaje, los cambios de sintaxis no son un gran problema. Al menos para mi el paso del QBASIC al C (haciendo las mismas chorradas, se entiende) no fue especialmente traumátco. Otra cosa son ya las movidas específicas de C y no digamos de C++ (gestion de la memoria dinámica, herencia, polimorfismo, etc.).
Namco69 escribió:Yo he empezado visual basic en el colegio, y es lo peor que te puedes echar para empezar a programar de verdad.
Muchos lenguajes estan basados en C y en su sintaxis mientras que visual basic no, asi que en el momento en que salgas de VB y veas el mundo C, te va a costar mas adaptarte que si empezaras desde 0 la programación con C

A todo esto. A mi me gustaria empezar a hacer programas con entorno grafico bajo linux, que me recomendais para empezar?
Y no me digais que empiece con C, que tengo la huellas dactilares gastadas de picar codigo en C en el modulo [carcajad]


Yo quizás te diríaa java, que para hacer ventanas y demás es solo pinchar, es de lo más facilito.
Namco69 escribió:a todo esto. A mi me gustaria empezar a hacer programas con entorno grafico bajo linux, que me recomendais para empezar?
Y no me digais que empiece con C, que tengo la huellas dactilares gastadas de picar codigo en C en el modulo [carcajad]

Y por que C no? Quiero decir... no que "empices" con C, sino que "te quedes" con el. Por que ha de ser C "algo para empezar"?

En todo caso, dependera de tus necesidades/propositos. Para que entorno va a ser? Como de multiplataforma lo quieres?

Si es para entorno KDE, o prefieres que sea lo mas multiplataforma posible, tira por C++ con Qt. Si es para entorno Gnome/XFCE y te da mas igual lo del tema multiplataforma, C con GTK+

En ambos casos, tambien puedes tirar por PyQt o PyGTK (python xD), como cosa con bastaaaaaante peor rendimiento, pero mas sencillita, y para cosillas pequeñas te puede ser mas productivo.
Jan@work escribió:
Namco69 escribió:a todo esto. A mi me gustaria empezar a hacer programas con entorno grafico bajo linux, que me recomendais para empezar?
Y no me digais que empiece con C, que tengo la huellas dactilares gastadas de picar codigo en C en el modulo [carcajad]

Y por que C no? Quiero decir... no que "empices" con C, sino que "te quedes" con el. Por que ha de ser C "algo para empezar"?

En todo caso, dependera de tus necesidades/propositos. Para que entorno va a ser? Como de multiplataforma lo quieres?

Si es para entorno KDE, o prefieres que sea lo mas multiplataforma posible, tira por C++ con Qt. Si es para entorno Gnome/XFCE y te da mas igual lo del tema multiplataforma, C con GTK+

En ambos casos, tambien puedes tirar por PyQt o PyGTK (python xD), como cosa con bastaaaaaante peor rendimiento, pero mas sencillita, y para cosillas pequeñas te puede ser mas productivo.

Decia lo de "no me digais de empezar con C que ya lo tengo muy visto", x que queria dejar claro que no soy 100% novato en programación y ya he picado unas pocas miles de lineas de codigo como para saber como va mas o menos el tema.
Miraré C con GTK+, que por ahora lo que uso es gnome.

rcaba escribió:
Namco69 escribió:Yo he empezado visual basic en el colegio, y es lo peor que te puedes echar para empezar a programar de verdad. Muchos lenguajes estan basados en C y en su sintaxis mientras que visual basic no, asi que en el momento en que salgas de VB y veas el mundo C, te va a costar mas adaptarte que si empezaras desde 0 la programación con C A todo esto. A mi me gustaria empezar a hacer programas con entorno grafico bajo linux, que me recomendais para empezar? Y no me digais que empiece con C, que tengo la huellas dactilares gastadas de picar codigo en C en el modulo [carcajad]
Yo quizás te diríaa java, que para hacer ventanas y demás es solo pinchar, es de lo más facilito.

Ya habia pensado java, pero voy a darlo en el modulo (y seguramente me toque hacer el proyecto final en este lenguaje) asi que ya que me lo enseñan queria invertir el tiempo libre en ir conociendo otros metodos.

Gracias a los dos, cuando pueda iré mirando. Ahora me toca mirarme el PHP que el Lunes empiezo las practicas y es lo que me va a tocar hacer xD
Pues ya nos irás contando que tal C con GTK+

Una pregunta que no se si es tonta o no? también hay c++ gtk no? o la libreria de gtk+ son solo para C
Namco69 escribió:Ya habia pensado java, pero......

Y no habias pensado "...peroooo no quiero que mi aplicacion sea un mastodonte?" XD


rcaba escribió:Una pregunta que no se si es tonta o no? también hay c++ gtk no? o la libreria de gtk+ son solo para C

Pues no se, es posible que haya bindings para C++, de hecho me suena bastante que los hay.
(igual que existen pyQt o pyGTK).
Sí, el GTK para C++ es el GTKmm. Lo utilizé en el último sitio que estuve currando. En mi opinión el QT es más cómodo.
JanKusanagi escribió:
Namco69 escribió:Ya habia pensado java, pero......

Y no habias pensado "...peroooo no quiero que mi aplicacion sea un mastodonte?" XD

Tambien habia pensado en eso y es algo que me echa para atras, sep XD
Namco69 escribió:
JanKusanagi escribió:Y no habias pensado "...peroooo no quiero que mi aplicacion sea un mastodonte?" XD

Tambien habia pensado en eso y es algo que me echa para atras, sep XD

Yo al menos descartaria tu app casi seguro de raiz, solo por eso. Vamos, muuuuuy util tendria que ser, y ser la unica que me valga para lo que sea que haga XD
Y ya pensando en temas laborales, que lenguaje es actualmente el que tiene mas salida? No me refiero solo a videojuegos. Si no en general. Para trabajar de programador.
Duqe escribió:Y ya pensando en temas laborales, que lenguaje es actualmente el que tiene mas salida? No me refiero solo a videojuegos. Si no en general. Para trabajar de programador.


Java y .NET.

Java es mi lenguaje favorito. Yo te lo recomiendo. XD
Dr.Demencio escribió:Sí, el GTK para C++ es el GTKmm. Lo utilizé en el último sitio que estuve currando. En mi opinión el QT es más cómodo.


Tengo varios conocidos que usan qt, y me han dicho que es una maravilla pero tengo gnome, y lo mas acorde es GTK, que luego instalas algún tipo Glade y te come a dependecias, es el unico problema que le veo, si veo que no me convence GTKmm probaré con Qt, aunque bueno C y C++ son muy parecidos, asi que tampoco sería un problema, pero quiero C++ [poraki] [poraki]
33 respuestas