Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una Ayudita Please :-)

Iniciado por l_draven, 05 de Marzo de 2004, 05:06:35 PM

« anterior - próximo »

l_draven

 Hola chicos, ya  se que es raro que postee en la seccion de programacion pero bueno, aqui toy!!! jeje

A ver os comento, el tema es que me he metido a mirar temas de programacion porque me interesa aprender (por saber mas cosas, nunca esta de mas :-) ). he mirado engines 3d (OGRE,ILRRICHT,ETC...) y me he decidio por ilrricht (mas que nada por sencillez en realcion a ogre, que me parece mas complicado, aunque supongo que una evz que aprendes uno, el estilo sera parecido no??), bueno que me despisto!!, jeje,  el caso es que el tema de como declarar classes, constructores, destructores, herencia, etc... los temas basico de POO mas o menos los controlo (yo tengo titulo de Aplicaciones informaticas y alli aprendi a programar POO, pero hace ya tiempo de eso, pero vamos que entiendo los conceptos)

Todo este rollo es para pediros si me podeis ayudar a explicarme como organizar la programacion de un juego con un engine, me explico:

Por ejemplo, "pues lo primero es crear un clase que contenga los parametros basicos del engine, tales como Device, VideoDriver, Scene Manager, GUI, etc, etc y que tenga unas fucniones de inicialzacion, renderizado, etc." luego otra clase que contenga por ejemplo lo que llevara un escenario (lo digo a boleo eh?? jeje) que contenga, la malla del escenario, posiciones, etc etc.

Es que ya he cargado modelos animados y los he texturizado, pero claro todo desde el main y tal, lo que quiero es organizarlo bien con classes y demas.

El tema es si me podeis orientar a comenzar please.

Muchas gracias y lamento este peaso post. :-)

Un abrazo.

CoLSoN2

 uf.. tener un game engine perfectamente bien diseñado es lo que todos buscamos, creo yo xD pero no existe. Yo creo que la mejor forma de mejorar tus diseños de código es, simplemente, haciendo.
Es decir, haz un juego organizado de una manera el engine (no el gráfico sino el del juego (entidades, mapas, etc)). Cuando termines el juego (palabras mayores xD), aquellas cosas que más te hayan tocado los huevos, es lo que debes cambiar.
En el juego de naves que hice me tocó los huevos básicamente todo xD
Si quieres ver el código, que es bastante sencillo porque el juego lo es, tienes el código en C++ en http://iescasablancas.xtec.es/~manuelfl/. La parte propiamente del juego son los ficheros APP_*, lo demás es el engine: SYS_*, GFX_* .. que no te recomiendo mirar porque es lo peor XD
Por cierto:
Citarhe mirado engines 3d (OGRE,ILRRICHT,ETC...) y me he decidio por ilrricht (mas que nada por sencillez en realcion a ogre, que me parece mas complicado, aunque supongo que una evz que aprendes uno, el estilo sera parecido no??
pues sí que el irrlicht es el más facilón, pero a mi no me gusta nada (cuestión de gustos). Pero el diseño del engine (si aprendes uno, aprendes todos) es algo muy personal, osea que te vas a encontrar con cosas de todo tipo. Algunas muy poco comunes pero sexys xD , como el del nebula  
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

tamat

 Totalmente de acuerdo con Colson, obviamente habrá cosas genericas en todos los engines (manager de texturas y modelos, etc) , pero la manera como organices tu engine tiene mucho que ver con la manera como te guste trabajar a tí. Si por ejemplo eres como ethernet pues no querras ver un singleton ni en pintura, si eres como yo todo será singleton menos el main (y porque no se puede).

Creo que estaría bien que algun dia hablasemos de como hemos organizado cada uno nuestro engine/framework o lo que sea que tengamos.

A mi por ejemplo me ha ayudado mucho tener un task manager para desglosar las acciones en tareas simples y ordenarlas por prioridad.  
Por un stratos menos tenso

CoLSoN2

Cita de: "tamat"Si por ejemplo eres como ethernet pues no querras ver un singleton ni en pintura, si eres como yo todo será singleton menos el main (y porque no se puede).
vaya.. habló el señor "namespace con funciones y variables globales" XDDDDD

ethernet anti-singleton??  :blink:  
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

tiutiu

 ethy anti-singleton!! xD

Pues estos chicarrones tienen toda la razon, cuestion de gustos. A mi me dio por hacer muchas cosas a la vez y al final nada... Asi que me decidi a ir haciendo pedazos. Primero me hice un framework basico que inicializase el gl y sacase una ventana, luego hice un scene manager sobre la jerarquia d clases q tenia y en el q se basa el resto del engine (bastante parecido al 3dmax).

Un buen sistema, en mi opinion, es ir haciendo q las cosas funcionen, ir una por una y haciendo pasadas para mejorarlas, como cuando juegas al solitario, que vas llenando las barajas mas o menos por igual (segun como tienes las cosas d avanzadas puedes pasar a un grado de optimizacion mas).

La parte del terreno d mi engine la hice q funcionase, luego le añadi LOD y 1 text. d detalle. Lo deje aparcado un tiempo para seguir haciendo otras cosas. Llegue a las colisiones y ahora me toca seguir mejorando el terreno para hacerlo mas compatible con lo q tengo.


Creo q el fallo d mucha gente es querer hacer las cosas perfectas en vez d hacer q funcionen y mejorarlas mas tarde. En cuanto ves q algo funciona t da energias para seguir con el resto :)
b>:: Pandora's Box project ::
Notas e ideas sobre desarrollo de engines para juegos

Lord Trancos 2

 Mi opinion;

El truco para diseñar un juego esta en usar una libreta y un boli (lapiz opcional). Cuando mas lejos te mantengas del ordenador para diseñarlo mejor. Este primer paso ya te dara una imagen de que clases (si usas POO) te hace falta y la jerarquia. (Yo no utilizo POO [lo minimo] asi que pocas ideas te puedo dar en este sentido.)

Intenta mantener las cosas lo mas independientes entre si, pero crea los vinculos necesarios para que puedan interacturar con el resto (aunque ese resto despues se modifique). Por ejemplo; si te creas una clase para generar un octree; que esa clase no dependa de otra clase que contenga geometrias 3D. Si no que la clase del octree tenga unos metodos para ir pidiendo triangulos y la clase de geometria 3D tenga otros metodos para ir devolviendo triangulos;

 Esto no mola:

 COctree.Construir(C3DS)  // C3DS es una clase que carga ficheros 3DS.

 Esto mola mas;
                                                   
 COctree.CuandoQuierasUnTriangulo = C3DS.TomaUnTriangulo
 COctree.Construir()

 de tal modo que si en alguna ocasion hace falta puedas usar

 // CASE - es una clase que carga ficheros ASE
 COctree.CuandoQuierasUnTriangulo = CASE.TomaUnTriangulo
 COctree.Construir()

Despues, create una lista de requerimientos imprescindibles (por ejemplo; necesito texture manager, entities manager, sombras stencil, multetextura, un octree) y opcionales (por ejemplo; efecto glow, bump mapping, sonido3D....).

Ves haciendo pruebecitas para ver como se implementan los requerimientos imprescindibles. Una vez termines esas pruebecitas tendras la base necesaria para saber como mezclar todo eso para que funcione junto. (bueno, no hace falta mezclarlo todo; de hecho cuando mas independientes sean las cosas mejor; pero si es necesario mezclar algo lo sabras en esta fase y podras desarrollar ideas para afrotarlo.)

Finalmente desarrolla el engine del juego (mejor un engine especifico [si lo que quieres hacer es un juego y no un engine] que uno generico [lleva mucho tiempo y te pondras a hacer cosas que luego a lo mejor nunca usas; te iras por las ramas]).

Lo ideal es que hagas las cosas lo mas flexibles posibles (por eso la gente suele usar scripting), pero tampoco exageres esto. Todo depende de los requisitos de tu juego.

Si nos das una idea de que tipo de juego quieres hacer puede que la gente te pueda dar ideas mas concretas.   (ole)  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

egf

 bueno yo creo que lo qie a contado tiutiu  es la mejor forma de trabajar, no solo en programacion sino en oros aspectos de la vida...  

...no hay nada como unos buenos cimientos


un zaludo  :D


ps: @l_draven. has probado la ultima version del 3dgamestudio?

ethernet

 singletones SUCKS

por otra parte el titulo del post es MUY descriptivo. Es mucho mas rapido que pongas de que va el post en vez de "una ayudita plis". No quedaria mejor un "eleccion de un motor, una ayudita plis" o algo asi?. Si no sabemos ni seguir unas normas que surgen del sentido comun como cojones vamos a programar un motor,un juego o vivir ?

saludos

l_draven

 Muchas gracias a todos por las respuestas. Ya me hago mejor una idea de como empezar. :-)

La verdad que como decis es mejor tener las cosas lo mas independientes posibles (toy totalmente de acuerdo), asi que lo intentare ;-).

Lord Trancos : gracias por la explicacion y por los ejemplos, asi me es mas sencillo hacerme la idea de lo que me dices, y me quedo con la segunda forma que me has puesto, porque como has dicho en un futuro es mas flexible.

Egf: No he probado el ultimo gamestudio, que tal esta???? probe uno hace ya unos añitos pero no me llego a comvencer mucho.

Tiutiu: tambien gracias por la explicacion y creo que la manera de trabajar que dices, hacer algo que funcione lo primero e ir mejorandolo es la mejor manera de ir avanzando y consiguiendo buenos resultados.

Colson: gracias por tu ejemplo y por tu explicacion tambien.

En general gracias a TODOS por las ideas :-)

Javi SJ Cervera

 O también puedes dejarte de leches y usar el ColdSteel, que pa algo m lo estoy currando, coño xDD
== Jedive ==

l_draven

 JaAJAJAJAJA mu gueno jedive.

Trankilo que lo aprendere tambien, no te preocupes. (ademas ya lo he toquiteado y ta mu chulo).

El tema es que me apetece ir recordando C++ y el COMO funciona un engine en general, lo he cogido con ganas.

No te mosquees :-) ))))

Saludetes.







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.