Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Jevi en 19 de Noviembre de 2003, 06:03:45 PM

Título: 3d+c, ¿cómo Empezar?
Publicado por: Jevi en 19 de Noviembre de 2003, 06:03:45 PM
Hola  colegas,

desde hace un tiempecillo quiero iniciarme en la programación 3D. He estado mirando Engines para programnar en C, porque el C++ no lo domino.  Yo uso Dev-C++ y Allegro, y tengo ligeras nociones de OpenGL.

La verdad; me he frustrado  (nooo) . No encuentro nada con una documentación mínima para empezar. Busqué en http://cg.cs.tu-berlin.de/~ki/engines.html pero dentro de la mega lista de engines no encontré nada.

Me han hablado muy bien de CrystalSpace y OGRE, pero necesito saber C++ ¿verdad?

Alguien puede dar un poco de luz al tunel en el que me encuentro.

Un saludo a todos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: DraKKaR en 20 de Noviembre de 2003, 11:01:05 PM
 Hay que diferenciar tu pregunta en 2: ¿que es lo que quieres hacer?
- Programar un juego (o al menos intentarlo XD)
- Programación gráfica 3D

Digo que hay que diferenciarlos porque si lo que quieres es hacer un juego, es algo muy complejo, y deberías ir directamente al grano y no reinventar la rueda utuilizando un engine ya hecho.
Si lo que de verdad te gusta la programación gráfica 3D (como a mí) y quieres aprender y profundizar en ella, pues lo mejor es que te armes de un compilador de C y de OpenGL y aprendas programación gráfica.

Creo que este es realmente el primer paso: definir tus objetivos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: Jevi en 21 de Noviembre de 2003, 12:27:54 AM
Cita de: "DraKKaR"Hay que diferenciar tu pregunta en 2: ¿que es lo que quieres hacer?
- Programar un juego (o al menos intentarlo XD)
- Programación gráfica 3D

Digo que hay que diferenciarlos porque si lo que quieres es hacer un juego, es algo muy complejo, y deberías ir directamente al grano y no reinventar la rueda utuilizando un engine ya hecho.
Pues acertaste con la primera. Mi deseo es hacer un juego en 3D, concretamente un MMORPG, por eso estoy buscando un engine hecho, que funcione y que a ser posible no sea muy complejo  :D

La verdad es que el requisito principal sería que fuera programable en C.

¿qué me recomiendas?
Título: 3d+c, ¿cómo Empezar?
Publicado por: DraKKaR en 21 de Noviembre de 2003, 11:05:25 AM
 La verdad es que no estoy muy metido en las características de los motores 3D actuales, pero todos los que conozco se basan en C++. Si lo que quieres es hacer un juego, y es el primero, por favor no hagas un MMORPG (a menos que tengas una buena cantidad de personas currando a tus pies). Ese tipo de juegos es el primero que se nos ocurre a todos (a mí el primero) y el que nunca se termina y se deja por pesadez, un juego así es un palo hacerlo, incluso teniendo un engine ya hecho. Yo estoy ya bastante tiempo haciendo un juego de carreras de naves (Blast!) que es mucho más sencillo que lo que propones. Aunque eso sí, el motor que usa el jeugo también lo he programado yo desde cero.
Título: 3d+c, ¿cómo Empezar?
Publicado por: Zaelsius en 21 de Noviembre de 2003, 02:56:33 PM
 Mi consejo es que empieces por algo for(int i=0;i++;i<1000)cout << "muy"; sencillo.

Algo de este tipo: http://www.alu.ua.es/j/jgf8/software/xvoll...ley/xvolley.htm
Una vez te hayas enfrentado a la tarea de terminar un juego simple, verás qué duro es terminar algo.
Título: 3d+c, ¿cómo Empezar?
Publicado por: Jevi en 21 de Noviembre de 2003, 03:56:02 PM
Cita de: "ZaelSiuS"Mi consejo es que empieces por algo for(int i=0;i++;i<1000)cout << "muy"; sencillo.
Me parece que no me entendeis, o no me explico bien. :huh:

No es que no sepa programar (se muy bien lo que es un for). El problema es que no se cómo empezar en 3D, y lo que quería es alguna recomendación de Engine 3D, pero ya veo que tendré que espavilarme más.

Gracias a todos por vuestros consejos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: AgeR en 21 de Noviembre de 2003, 04:28:28 PM
 Hombre, creo que lo que quería decir ZaelSiuS era que empezaras por algo muy muy muy muy MUY sencillo  ;) .
Y lleva mucha razón. Un MMORPG es algo demasiado bestial para empezar. No sólo por el tema de las 3D, sino por la gestión de conexiones, de terreno, quests, usuarios, bugs, etc...
En fin, que vale la pena que te armes de paciencia y pruebes varios motores para ver cuál se adecua más a lo que quieres hacer (olvidándote del mmorpg de momento). No hay un motor mejor que otro. Símplemente depende de lo que quieras conseguir, un motor te vendrá mejor que otro.
Para empezar con algo sencillo con gráficos te recomiendo hacer un Pong en OpenGL. No has de usar nada de C++, solamente C. OpenGL, una vez inicializado, es sumamente fácil empezar a trabajar con él. Otro tema es la complejidad que le quieras dar al juego.

En fin, pero ciñéndose a lo que preguntabas... pues no conozco así de repente de ningún motor en C. De todos modos, yo de ti intentaría aprender un poco de C++, que no es tan difícil, y menos si ya sabes C  (uoh) .

Saludos!
Título: 3d+c, ¿cómo Empezar?
Publicado por: Jevi en 21 de Noviembre de 2003, 04:59:48 PM
 AgeR, creo que tu y ZaelSius teneis razón. No se puede empezar al casa por el tejado. Mejor me pongo con algo más sencillo. Lo que pasa es que la idea de hacer un Pong... ¿esta muy visto, no?  :rolleyes:

Bueno, seguiré vuestro consejo. Gracias a los dos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: BeRSeRKeR en 21 de Noviembre de 2003, 05:39:50 PM
 Yo los únicos motores que conozco en C son el de quake1 y quake2 :D

Saludos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: AgeR en 21 de Noviembre de 2003, 05:50:59 PM
 Sí que está muy visto, pero... ¿y qué? Por algo hay que empezar, y un pong creo que es lo más fácil para empezar en la programación gráfica. Después del pong, pues sigue con un arkanoid, un plataformas... Trata de ir aumentando la dificultad de tus proyectos poco a poco. Cuando te des cuenta, te encontraras preparado para afrontar el desarrollo de un PEQUEÑO mmorpg, pero ya te digo, siempre hay que empezar por las bases.
Además seguro que te aparecen dificultades hasta con el Pong. Acabar un juego no es hacer una pantalla o dos y poder jugarlas. Es hacer un menú de opciones, una presentación, un final, diferentes niveles, diferentes tipos de juego, sonidos y música, una buena interfaz... Y acoplar todo esto ya no es tan trivial, te lo digo por experiencia. Solo he acabado 2 juegos desde que empecé con esto (sin contar los que hacía en basic XD).
Además, de lo que se trata al principio es de aprender y divertirse. Lo dice quien ha programado un pong y se ha viciado a él con sus amigos (menudos piques! XD). Como también te interesa el networking... pues haz un pong multiplayer en red y habrás aprendido otra cosa  (uoh) .
Lo que aprendas ahora te servirá de base para proyectos más ambiciosos.

De la forma que escribo parece que sea el puto amo, me molo XDDDDD.
Venga, no me enrollo más, que me emociono XD. Espero ver muchos posts tuyos solicitando ayuda por aquí. Para cualquier duda, aquí estamos! (toma apología stratil!)  (ole) .

Saludos!
Título: 3d+c, ¿cómo Empezar?
Publicado por: seryu en 23 de Noviembre de 2003, 12:20:04 AM
 mas visto esta un mmorpg. El problema javi esqe los foros estan llenos de novatos qe preguntan x un engine para hacerse un mmorpg, cuando es una empresa titanica qe a los propios experimentados les cuesta sudor y lagrimas sacar adelante. X eso no te extrañe obtener respuestas algo ariscas. Simplemente la gente se qema de ver siempre la misma historia.

Te recomiendo qe aprendas c++ en condiciones, y luego vuelvas a las 3d. Sin saber desenvolverte en POO no vas a lograr nada a dia de hoy.

y x supuesto, recuerda qe c++ simplemente es c orientado a objetos, puedes seguir haciendo todo lo qe hacias antes. De echo mucho del codigo qe veo x ahi es mas una mezcla qe c++ puro y duro.

pd: te recomiendo qe tb eches un ojo a las STL.

pd2: aun hoy dia hay engines 3d escritos en C.
Título: 3d+c, ¿cómo Empezar?
Publicado por: Jevi en 23 de Noviembre de 2003, 08:52:39 PM
Cita de: "seryu"pd: te recomiendo qe tb eches un ojo a las STL.
Esto.... he mirado STL, pero... ¿Para qué sirve?  :blink:  
Título: 3d+c, ¿cómo Empezar?
Publicado por: deadLock++ en 23 de Noviembre de 2003, 09:24:18 PM
 STL (Standar Template Library) es una librería que trae consigo estructura de datos (listas, vectores, pilas, colas, etc) y algunos algoritmos (de ordenamiento, búsqueda, etc).

Es muy práctica, algunos programadores reusan utilizarla porque prefieren codificar sus propios templates de listas.

Título: 3d+c, ¿cómo Empezar?
Publicado por: DraKKaR en 24 de Noviembre de 2003, 11:12:09 AM
 He leido gente que dice que la STL es poco eficiente en cuando a velocidad de ejecución, ¿hay algo de cierto en esto?
Título: 3d+c, ¿cómo Empezar?
Publicado por: NeLo en 24 de Noviembre de 2003, 03:18:52 PM
 No hay nada de cierto.

Antes de .Net las STL de Microsoft eran poco óptimas. Pero parece que esto ya se ha arreglado. Pero siempre puedes probar STlport o las STL de SGI.

Saludos.
Título: 3d+c, ¿cómo Empezar?
Publicado por: seryu en 24 de Noviembre de 2003, 03:28:43 PM
 Tan cierto como qe c++ es mas lento qe c, o qe c es mas lento qe asm.

Todo depende de la comodidad de trabajo qe busqes, lo bien qe programes, etc..

X otro lado como dicen, las STL son una libreria de clases cuyo fin es ayudar al qe qiera programar en OOP. Yo recomiendo echarlas un ojo xqe a dia de hoy son muy utilizadas tanto por juegos como engines. No digo qe su uso sea obligado o algo asi, simplemente qe viene bien conocerlas.
Título: 3d+c, ¿cómo Empezar?
Publicado por: Grugnorr en 24 de Noviembre de 2003, 05:19:58 PM
 Las STL no son Orientadas a Objectos. Por suerte en C++ tenemos Templates, a diferencia de Java ;)

Ni lentas ni leches, pero claro, hay que saber usarlas y conocer los TADs.
Título: 3d+c, ¿cómo Empezar?
Publicado por: DraKKaR en 24 de Noviembre de 2003, 08:33:33 PM
 Pues si no hay pérdida de velocidad apreciable las usaré en mi motor para hacer listas de cosas, que hasta ahora las hago a pelo.
Título: 3d+c, ¿cómo Empezar?
Publicado por: seryu en 24 de Noviembre de 2003, 08:49:14 PM
Cita de: "Grugnorr"Las STL no son Orientadas a Objectos. Por suerte en C++ tenemos Templates, a diferencia de Java ;)

Ni lentas ni leches, pero claro, hay que saber usarlas y conocer los TADs.
un par de apreciaciones, conteste escueto xqe pensaba qe se entenderia :P

lo de la velocidad, me referia a qe en un mundo ideal, si, seria mas lento, pero qe en la practica lo qe se pueda perder es totalmente irrelevante. Al igual qe nadie se va a poner a programar en asm a estas alturas xqe ademas o eres muy bueno o el propio compilador genera mejor asm qe tu..

x otro lado las STL se utilizan en c++ qe es oop, x eso decia qe vienen bien. Igual me ha qedado un poco confuso.

pero weno, me alegro qe te hayas decidido por echarle un ojo a todo esto, te vendra muy bien  (ole)  
Título: 3d+c, ¿cómo Empezar?
Publicado por: MChiz en 24 de Noviembre de 2003, 09:09:26 PM
 STL lentas? Pero si tienen prefetch!!! Hice un test con unos colegas del palo hacer un sumatorio de un array normal y otro de un vector de STL. Si se usan los iteradores, gana STL. Y si se usan los algoritmos que vienen con las STL, aun mejor : )

STL r00lz!
Título: 3d+c, ¿cómo Empezar?
Publicado por: aphex en 25 de Noviembre de 2003, 01:09:23 AM
 hey...

Mchiz tiene razon... tuve el (dudoso) honor de apostar por la version hardcoded en ese test que menciona, y gana STL. De hecho (corrigeme si me equivoco) hardcoded gana en debug probablemente, pero en Release (que es lo que importa) el 90% del codigo STL se queda en inlines, y por tanto va a toda leche

Título: 3d+c, ¿cómo Empezar?
Publicado por: MChiz en 25 de Noviembre de 2003, 08:16:17 AM
 Totalmente cierto : ) ( Que bien nos lo pasamos x)) )
Título: 3d+c, ¿cómo Empezar?
Publicado por: ZeruGiran en 25 de Noviembre de 2003, 06:27:52 PM
 STL Rulss  :angry:

C++ es casi imperceptiblemente mas lento que C,  la diferencia es tan poca, que NO deberias tomar la desicion de usar C o C++  basandote el la velocidad de ambos.

En cambio, programar en C si es mas lento que programar en C++, C++ acelera el desarrollo y si tienes buen estilo hace mas clara la lectura de tu codigo.

Claro que si eres como yo, nadie va a entender tu codigo aunque lo hagas en Pyton :D