Ir al contenido

publicidad
publicidad

Foto

Programación de videojuegos en C/C++ desde Linux


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

  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#1

Escrito 19 enero 2011 - 17:16

Buenas,sabeis de algun pdf o algo por el estilo donde se trate la programacion de videojuegos en C (no C++) no importa si esta en ingles.
¿Se pueden hacer buenos juegos con C? ¿Me recomendais pasarme de C a C++ o C# para enfocarme en videojuegos?
Por cierto,¿sabeis como hacer GUIs en C desde Ubuntu? es decir,sin windows.h
Gracias.
EDIT:He cambiado el titulo del post,antes era: "Programacion de videojuegos en C"

    pepe216

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 20 jun 2009
  • Mensajes: 2.639
#2

Escrito 19 enero 2011 - 17:24

Mira esta web http://www.nachocabanes.com/

Y...
mejor si usas C++ o C#. La POO al principoi cuesta entenderla luego ayuda mucho
Para juegos:
-en C (sin poo, para aprender), Dev c++ y libreria allegro
-en C#, XNA busca tutoriales hay uno muy bueno (en inglés) aora ya no se que hice con él pero aprendi algo por él, hasta que me aburrí

  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#3

Escrito 19 enero 2011 - 17:29

Entonces me recomiendas aprender C++ no ?
C# tambien me interesa por XNA,pero ahora estoy en Linux y segun tengo entendido es solo para Windows,ademas de que me gustaria que fuesen portables,para llevarlos al insti.
En la web no encuentro nada de videojuegos,solo cursos de C y C++

#4

Escrito 19 enero 2011 - 23:52

C# es portable mayormente si usas mono, xna obviamente no. Si no estas obligado a usar la portabilidad usa c#, es mejor para el novato y para pequeños proyectos.

¿Hay alguna razon por la que quieras usar en C particular? Sinceramente te recomendaria usar lenguajes mas simples, rapidos y como son python, lua o ruby. Aunque en estos casoso debrias compilarlos especialmente o instalar el interprete donde vaya a ser usado.

Hay muchas librerias portables:
-Allegro para C, C++
-SDL para C, C++, python(como pygame), lua( como LOVE)..., rubygame...
-SFML para casi todas las plataformas descritas. Es como SDL pero con orientacion a objetos y mejorada.... ademas de ser mas rapida

Tb depende de si quieres graficos 2d o 3d...

Para usar ventanas de forma multiplataforma recomiendo las que usa linux:
Gtk
Tk
Qt
WxWidgets

Todas suelen estar en casi todos los lenguajes.

Si no piensas estudiar informatica y no necesitas un hiperendimiento te recomendaria pyogre para juegos 3d y pygame para juegos 2d. Vamos que aprender y usar c y derivados para programas asi o juegos para los amigos es un desperdicio de tiempo y te va a costar el doble en todos los sentidos....

    pepe216

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 20 jun 2009
  • Mensajes: 2.639
#5

Escrito 19 enero 2011 - 23:58

Para mi gusto (no te creas que se mucho estoy en 1ero de carrera XD)
-java y c++ para programas (aplicaciones) (eclipse y dev-c++ respectivamente)
-java para juegos de móvil (nunca lo usé pero es lo habitual)
-c# para juegos 2-3D (microsoft visual c#)
-c para aprender, con la librería allegro (dev-c++). Crei que estaba en la página esa pero yo me hice un tutorial para hacer una especie de space-invaders, busca en google "tutorial c allegro"

Con C puedes hacer muchas cosas (imagino) pero con mucho trabajo, algo factible sería hacer un pacman, ahorcado, o algo así, no esperes mucha complejidad

También puedes hacer juegos en C++, pues es lo mismo que C pero con clases (java te obliga a usar clases, por ello puede ser bueno para aprender a programar). SDL y OpenGL te dejan hacer juegos 3D pero yo lo intenté y fue fustrante XD, y sobre linux no tengo ni idea, tan sólo sé que JAVA es compatible con él (por su máquina virtual)

  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#6

Escrito 20 enero 2011 - 16:54

Bueno, me decidí a estudiar C++,y por ahora me esta gustando mas,lo veo incluso mas sencillo,como con las variables,donde en C costaba X-D
lo de C# y XNA me interesa,pero por ahora estoy con linux ya que formatee y no encuentro ningun Windows...
Python lo estudié,pero no me gustaba,no me sentia "comodo" con el.
He instalado el Qt,pero no lo entiendo,buscare tutoriales.
Muchas gracias.

#7

Escrito 21 enero 2011 - 01:03

Hola, quería preguntarte en qué momento de programar en OpenGL te frustraste, ya que estoy en 3º de carrera de informática y una asignatura que estudio es Informática Gráfica, que me está gustando muchísimo (pero he tenido que sudar lo suyo, ya que tuve que empezar yo solo vs. OpenGL desde el primer día).
Supongo que habrás hecho más que yo. Nosotros nos hemos quedado en hacer objetos 3D mediante un perfil (conjunto de líneas contínuas) y generando el sólido de revolución (ejemplo: http://integralesdef.../imagen19ab.gif), y tambien en calcular manualmente cómo hace OpenGL el antialiasing, generando varios rayos a cada píxel de la pantalla, calculando si colisiona con nuestra escena, calculando el color a partir del ángulo de rebote del rayo, etc (muchísimas matemáticas como puedes ver, quizás demasiadas XD).


Para gotenx, yo he realizado (con 2 amigos más) un proyecto del juego de cartas "Monopoly Deal" con el Visual Studio + C# + XNA 3.0, y la verdad es que es muy cómod trabajar así, una de las pocas ventajas que tiene Windows es que hay infinidad de manuales en Internet de cualquiera tontería relacionado con cualquier aspecto técnico del lenguaje.

¡Un saludo a los dos, buenas noches y gracias!

Para mi gusto (no te creas que se mucho estoy en 1ero de carrera XD)
-java y c++ para programas (aplicaciones) (eclipse y dev-c++ respectivamente)
-java para juegos de móvil (nunca lo usé pero es lo habitual)
-c# para juegos 2-3D (microsoft visual c#)
-c para aprender, con la librería allegro (dev-c++). Crei que estaba en la página esa pero yo me hice un tutorial para hacer una especie de space-invaders, busca en google "tutorial c allegro"

Con C puedes hacer muchas cosas (imagino) pero con mucho trabajo, algo factible sería hacer un pacman, ahorcado, o algo así, no esperes mucha complejidad

También puedes hacer juegos en C++, pues es lo mismo que C pero con clases (java te obliga a usar clases, por ello puede ser bueno para aprender a programar). SDL y OpenGL te dejan hacer juegos 3D pero yo lo intenté y fue fustrante XD, y sobre linux no tengo ni idea, tan sólo sé que JAVA es compatible con él (por su máquina virtual)



  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#8

Escrito 21 enero 2011 - 17:22

Si,bueno,el problema es que actualmente estoy en Linux,y de XNA nada...
He visto el motor Ogre,que tambien esta para linux,pero no logro instalarlo.

#9

Escrito 22 enero 2011 - 01:47

Una alternativa es Panda 3D http://www.panda3d.o...anda3D_in_Linux.

No es solo un motor como ogre sino un entorno pensado para desarrollar videojuegos... y es bastante decente y fgratuito

Se me hace my rarao que te sientas mas comodo con c++ que con python... ¿me explicas prorque?

  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#10

Escrito 22 enero 2011 - 15:41

Muchas gracias,le estoy hechando un vistazo.
Lo de Python son cosas mias,no se,no me gusta mucho su sintaxis y tal,cosas mias X-D

#11

Escrito 23 enero 2011 - 14:04

Se me hace my rarao que te sientas mas comodo con c++ que con python... ¿me explicas prorque?


Puedes explicar porque tu te sientes más comodo con python que con C++? Es una pregunta un poco "sin sentido" a mi parecer. Cada uno se siente comodo en un lenguaje. Conozco gente que es un fiera programando en ASM y MMX/SSE y que no se siente comodo con objetos.

C++ tiene un rendimiento muchisimo mejor que python, ya sea para juegos 2D o 3D, multitud de librerias y engines para usar (no hay porque apreder desde 0), y para hacer juegos es mucho mejor (en mi opinion y en la de mucha gente) que cualquier otra alternativa

Un saludo

#12

Escrito 24 enero 2011 - 00:27

Se me hace my rarao que te sientas mas comodo con c++ que con python... ¿me explicas prorque?


Puedes explicar porque tu te sientes más comodo con python que con C++? Es una pregunta un poco "sin sentido" a mi parecer. Cada uno se siente comodo en un lenguaje. Conozco gente que es un fiera programando en ASM y MMX/SSE y que no se siente comodo con objetos.

C++ tiene un rendimiento muchisimo mejor que python, ya sea para juegos 2D o 3D, multitud de librerias y engines para usar (no hay porque apreder desde 0), y para hacer juegos es mucho mejor (en mi opinion y en la de mucha gente) que cualquier otra alternativa

Un saludo


Escribiendo codigo, aprendiendo, debugeando, etc... es mucho mas rapido python, pero muchisimo. Que tenga un alto rendimiento es util para cuando este alto rendimiento es necesario. Nadie va a escribir un SO en python o un game engine con el pero otra cosa es escribir un juego amateur o qualquier otra aplicacion que sustente sus tareas mas complejas en librerias compiladas en C o C++. Entonces no tiene ningun sentido usar otro lenguaje por su rendimiento.

Y ya no digamos simplemente qualquier programa que no necesite ni de esas librerias, o para aprender...

Y que para hacer juegos es la mejor alternativa, por favor, de nuevo, depende de lo que vayas a hacer. C++ se usa en el ambito PROFESIONAL porque ahi cuenta el rendimiento al limite, no a un chaval que acaba de empezar programando y no tiene ni idea y quiere hacer juegos indies para enseñar a sus amigos. Se debe elegir la mejor herramienta para cada cosa, cojones.

¿De que te va a servir programar un buscaminas con un manejo de la memoria 100% optimo y estructuras de datos personalizadas, acceso a bajo nivel y toda la pesca? ¿Para hacer un buscaminas necesitas todo eso? ¿Y gastar todo el tiempo extra en aprenderlo, manejarlo y escribirlo?

La enorme mayoria de programas que un amateur vaya a escribir no necesitan un lenguaje realmente rapido. Y los lentos ofrecen millones de ventajas a cambio de esto. Y python es uno de los mejores para aprender porque es un lenguaje donde las cosas solo se hacen de pocas formas, tiene identacion obligada, etc...

Y sobre lo de los lenguajes lo he comentado porque comenta que es novato, asi que quizas se habia hecho una idea equivocada de las ventajas de un lenguaje interpretedo y mas moderno para el. No digoo que cada cual pueda tener sus gustos ni nada asi.

Yo he reescrito antiguos programas mio de C a ruby por ejemplo, y el mas largo paso de 1000 lineas a 300 y tantas... , para que se haga una idea.

¿Es mas lento? Si. Ahora, un programa que es una agenda que guarda informacion de personas en el disco duro, usa la consola y lo mas complejo que le hice en su dia fue que encriptara la informacion... pues, a mi no me compensa esas 700 lineas, las compilaciones y toda la complejidad extra.

Yo tengo planes de aprender a usar c/c++ realmente bien haciendo cosas como por ejemplo, escribir un driver o cosas por el estilo. Porque tambien es interesante aprender el concepto de la memoria y las particularidades de estos lenguajes. Pero sino lo necesitas, pues no vale la pena, y me quedo con c# o java cuando necesitas ese plus de rendimiento y normalmente ruby, python, lua...

#13

Escrito 24 enero 2011 - 11:37

Escribiendo codigo, aprendiendo, debugeando, etc... es mucho mas rapido python, pero muchisimo. Que tenga un alto rendimiento es util para cuando este alto rendimiento es necesario. Nadie va a escribir un SO en python o un game engine con el pero otra cosa es escribir un juego amateur o qualquier otra aplicacion que sustente sus tareas mas complejas en librerias compiladas en C o C++. Entonces no tiene ningun sentido usar otro lenguaje por su rendimiento.


El rendimiento SIEMPRE es importante. Incluso para un buscaminas. Tu jugarias a un buscaminas que desde que le des al boton hasta que reacciona tarda 1 o 2 segundos?

Y que para hacer juegos es la mejor alternativa, por favor, de nuevo, depende de lo que vayas a hacer. C++ se usa en el ambito PROFESIONAL porque ahi cuenta el rendimiento al limite, no a un chaval que acaba de empezar programando y no tiene ni idea y quiere hacer juegos indies para enseñar a sus amigos. Se debe elegir la mejor herramienta para cada cosa, cojones.

¿De que te va a servir programar un buscaminas con un manejo de la memoria 100% optimo y estructuras de datos personalizadas, acceso a bajo nivel y toda la pesca? ¿Para hacer un buscaminas necesitas todo eso? ¿Y gastar todo el tiempo extra en aprenderlo, manejarlo y escribirlo?


Segun ese planteamiento, lo mejor es coger un gamemaker de esos y olvidarte de programar.

La enorme mayoria de programas que un amateur vaya a escribir no necesitan un lenguaje realmente rapido. Y los lentos ofrecen millones de ventajas a cambio de esto. Y python es uno de los mejores para aprender porque es un lenguaje donde las cosas solo se hacen de pocas formas, tiene identacion obligada, etc...


Segun ese planteamiento, JAVA es lo ideal: mucha mas librerias, ayuda, comunidad, madurez, etc...


Yo he reescrito antiguos programas mio de C a ruby por ejemplo, y el mas largo paso de 1000 lineas a 300 y tantas... , para que se haga una idea.


Y yo he escrito miles y miles de lineas en Perl para hacer cosas que se podian hacer con 4 clases y 50 lineas. Asi que ese planteamiento no es muy valido que digamos. Cada lenguaje tiene su utilidad, sus ventajas e inconvenientes, y hay que elegir el lenguaje adecuado para cada problema. Lo de perl a mi me obligaron a hacerlo asi, que si por mi hubiera sido....

¿Es mas lento? Si. Ahora, un programa que es una agenda que guarda informacion de personas en el disco duro, usa la consola y lo mas complejo que le hice en su dia fue que encriptara la informacion... pues, a mi no me compensa esas 700 lineas, las compilaciones y toda la complejidad extra.


Eficiencia y eficacia. Que las cosas funcionen no es igual a que esten bien hechas. Yo soy del tipo de personas que le gustan las cosas bien hechas.

#14

Escrito 24 enero 2011 - 14:47

El rendimiento SIEMPRE es importante. Incluso para un buscaminas. Tu jugarias a un buscaminas que desde que le des al boton hasta que reacciona tarda 1 o 2 segundos?


Obviamente no, pero ningun de esos lenguajes es tan lento para que eso pase. La enorme mayoria de cosas son posibles en ellos sin problema alguno. El usuario no va a notar la diferencia entre un buscaminas en C y digamos... Openg GL a pelo y uno con pygame o VB.net.

Encanvio el creador va a tener que aprender, escribir y manejar muchisimas cosas mas, ¿curioso eh?

Segun ese planteamiento, lo mejor es coger un gamemaker de esos y olvidarte de programar.


Eso dependera de lo que quiera hacer el que vaya a crearlo. Si solo quiere crearlo, si, que se coja el game maker o qualquier otro. Si encanvio quiere programar porque le gusta, tiene curiosidad, lo que sea... pues usara un lenguaje de programacion, pero obviamente para muchas cosas no es lo mejor usar el C/C++.

Y yo he escrito miles y miles de lineas en Perl para hacer cosas que se podian hacer con 4 clases y 50 lineas. Asi que ese planteamiento no es muy valido que digamos. Cada lenguaje tiene su utilidad, sus ventajas e inconvenientes, y hay que elegir el lenguaje adecuado para cada problema. Lo de perl a mi me obligaron a hacerlo asi, que si por mi hubiera sido....


Perl es un lenguaje bastante antiguo, aunque si soporta clases, pero con algunos limites. La OO de ruby o python es perfecta. De hecho ruby es como Java, 100% orientado a objetos.

Pues eso, lenguaje adecuado a cada problema. Pero esque dentro del problema tambien se incluye el rendimiento necesario, los requerimientos tecnicos. Y su tu quieres usar un programa en un lapiz con pantalla lcd(yo que se...) con una cpu a 60mhz pues entendere que uses C++ porque sino el buscaminas iria lento y usar ruby seria usar un lenguaje que no es el mejor para ese problema.

Pero esque sino hacer un buscaminas para ordenadores actuales que lo correran a la perfeccion aunque tengas el lenguaje mas cutre y al programador mas intuil... pues que quieres que te diga, veo como error usar C++ para solucionar ese problema.

Eficiencia y eficacia. Que las cosas funcionen no es igual a que esten bien hechas. Yo soy del tipo de personas que le gustan las cosas bien hechas.


La eficiencia y eficacia tambien existe en el proceso de creacion, mejora, y manteimiento. No tiene sentido que no haya una paridad entre el tiempo invertido y lo obtenido. No tiene sentido trabajar para unos requerimientos que nos son necesarios.

Eso es ineficiencia. ¿Sino porque usas C y no programas ASM a pelo, ya puestos? ¿No quedaria mejor hecho?

Segun ese planteamiento, JAVA es lo ideal: mucha mas librerias, ayuda, comunidad, madurez, etc...


Si y no. Por lo menos hasta donde ye he provado Java me parece peor que Ruby. No hablo de Python como OO porque no lo conozco, pero Ruby es mejor, y la biblioteca standard de este es masiva y le da mil millones de vuelta... y por no decir todo el azucar sinctico y demas perlas que te hacen escribir mucho menos codigo.

Esque vamos. Yo estoy estudaindo java ahora y para copiar un objeto por ejemplo, tienes que implementar el clone o el constructor de copia. No es mucho tiempo pero ya es una pesadez que en ruby esta ya de base bien implementada.

  • gotenx

  • Bahamut

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.253
#15

Escrito 24 enero 2011 - 15:09

A ver no desviemos...
Para scripts y programas sencillos pues claro que uso Python y no C++,pero para proyectos mas grandes prefiero este ultimo.


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