Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Hacer Algo Útil

Iniciado por DraKKaR, 18 de Diciembre de 2004, 08:47:00 PM

« anterior - próximo »

DraKKaR

 Desde hace un buen tiempo (creo que ya puede contarse en años XD) llevo programando un motor 3d. Todo vino porque quería hacer un juego, era mi tercer año de carrera y acababa de aprender OpenGL. Cuando llevaba unos mesecitos (2 o 3) me dí cuenta de lo mal que estaba hecho mi código fuente XD (normal, era la primera vez) y empecé un proyecto que a base de esfuerzp, tiempo y e ilusión acabó en esto:

http://blastgame.sf.net
http://sandra.sf.net

Realmente el motor implementa muchas más cosas de las que puede verse en esa mísera web, pero nunca me ha dado por hacer ejemplillos de todas las features del motor y colgarlo de la web. Ahora parece que el motor no haga mucho. Graficos, audio, físicas, scripting... son cosas que tengo implementadas, aunque no de forma perfecta, pero bueno, funcionan como funcionan XD.

Desde hace unos dias he estado mirando motores para hacer un juego, y es desde entonces que me he dado cuenta de lo avanzado que está el mundo abhí fuera, y lo insulso que resulta crear un engine. Más aun cuando eres el único programador. Claro, nadie kieres unirse pq tienes un engine muy feo, y si nadie se une, una sola persona lo tiene muy difícil para hacer las cosas.

Bueno, que me distraigo, he visto como anda el mundo de los motores por ahí fuera y, creo he dejado de verle sentido a continuar con el mio. He aprendido mucho programandolo, desde que opengl me parecia un mundo esxtraño y mágico, hasta ahora, programando iluminación por píxel con fragment programs.

Ha sido un bonito camino que me ha servido además de para aprender, parqa usarlo como proyecto de fin de carrera (con matrícula de honor XD) y para estar optando a un contrato en la universidad para trabajar en gráficos. Pero llegados a este punto, ya dejo de verle sentido a continuar con ello. Por mucho tiempo ke le dedique OGRE siempre será mejor motor de render y ode mejor motor de físicas (mas que anda porke ya lo son, y tienen mas mas gente y una comunidad que les apoya).

Pensaba en dejar el motor y dedicar mis esfuerzos a algo que valga la pena. Mi motor me ha valido mucho la pena, como antes he explicado, pero creo que si continuo, ya empezará a dejar de serlo. No le veo el sentido a empezar un motor ahora (no kiero desanimaros Haddd) con todo lo que hay ahí fuera. Demasiados motores. La gente debería concentrarse en hacer uno entre todos y no decenas de motores. O tratar de hacer cosas "útiles", cosas de las que carezca el mundo de los videojuegos. Pero el qué.

Esto es lo que he estado pensando estos dias. No se que pensais vosotros. Yo estoy en una época de reflexión que no se donde llevará.

Hasta luego.

Mars Attacks

 Pues yo lo veo claro: para hacer un juego no necesitas el último motor del mercado, ni el que vaya mejor, ni el que saque más frames por segundo o el que tenga más características. Con tu motorcete (muy simpático él) ya se podrían hacer muchas cosas (es más, si lo adaptaras para usarlo para hacer walkthroughs en tiempo real de escenarios de Max de forma fácil creo que en 3dpoder muchos te lamerían las suelas de los zapatos).
Vamos, que el mundo no irá peor porque tú vayas a la tuya con tu motor y puede que (si te centras en su usabilidad con lo que ya tiene) sea muy muy interesante para otros, justamente por tener un punto de complejidad ni demasiado simple ni demasiado imposible.

Pasapalabra.

[Vil]

 Muy interesante tu reflexión, en serio, yo no he programado nunca un motor, pero entiendo perfectamente lo que dices. La gente se empeña demasiado en que su motor use shaders tal, que tenga unos fps estupendos... y luego cuantos miles de proyectos de juegos se quedan atrancados por querer hacer tu propio motor, o por ser demasiado ambiciosos.

Yo tengo otra reflexion que hacer... pero no es el momento ni el post, pero es sobre "porque leches la gente se complica tanto la vida y quieren hacer final fantasis 12 (q no 7), doom 4, si luego no los van a terminar! y muchas veces como primer proyecto..." pero ya lo comentare otro día.

Respecto a programar algo que "sea productivo para la comunidad" pues o te centras en algo en concreto y lo haces mejor o gratuito o mas practico (o lo que sea) q lo que hay... o solo lo vas a usar tu. Pero no se decirte que XD

A ver si se te ocurre algo y nos lo comentas :)

PD: siempre admirare a la gente que se curra un motor... se q es algo q no hare nunca

donald

 Lo primero: Píllate el curre de la universidad, y luego lo que quieras.  (genial)

Aunque te paguen una mierda, DA IGUAL.

Eso sí que merece la pena.

Bueno, me calllo, que sé que sueno muy radical.

Te entiendo perfectamente.

Pero creo que Hadd y bersi (perdona, es que es muy largo) , lo hacen por puro amor al arte, tienen sus curres aparte de historias no relacionadas, y creo que lo disfrutan tela como hobby.

Es otro planteamiento.

Además, habrá otros engines, pero de la potencia de ellos (y Vicente, etc) , poquitos, poquitos.

No sé, no es frecuente ver en mundo-free avis como los que están sacando.

Que merece más la pena hacer un juego?

siempre depende.Qué no está inventado? Está todo inventado, en cada campo.
Pero algo parecido puede tener su super personal aportación, su giro original. O simplemente, que es tu engine, y ya está! Lo tocas y cambias como quieras sin esperar que el que lo hace cambie de humor respecto a tal cosa, etc.

Sobre que merezca más la pena...es como todo. Si yo estuviera en mejor situación, estaría igual aportando cosas para el Motor C#. Por puro placer.
Y eso que he etsado en muchos proyectos y cosas. Y tengo muchos más años.

Pero es lo que te apetezca. Si no te apetece, no te apetece. Y tienes que ver qué te apetece, que a lo mejor ni tiene que ver lo más mínimo con una pantalla, y no pasa nada. :)




Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

Zaelsius

 Jeje.. Drakkar, has visto la luz (twist) . Ahora en serio, si uno tiene por objetivo hacer un motor 3D, y ése es su único propósito, pues adelante. Pero a la hora de hacer juegos(terminarlos), es poco recomendable desarrollar tambien el motor. Además cada vez es más difícil hacer ambas cosas.. la tecnología avanza muy deprisa.

Y es que aun usando un motor de terceros, open-source o comercial, siempre se acaba desarrollando herramientas adicionales.. lo cual conlleva suficiente trabajo de por sí : P

A veces echo de menos los tiempos del DIV games studio.. a menuda velocidad me hacía yo mis jueguecitos!! :rolleyes:

Edit: Bueno, por si te aburres... algo útil seria un editor hexadecimal en C#, para Win/Mac OS X/Linux (genial)  

Haddd

 No nos desanimas Drakkar, en serio. Estamos tan animados que yo no creo que ahora mismo pueda haber nada que nos tire la moral. :D

Y fíjate que estábamos trabajando y posteando cosas, pero ¿sabes cuando cambió realmente? Pues cuando un grafista nos hizo una cripta. Entonces se añádió el imp, la atenuación y jugando con eso nos quedó una escena muy chula. Y lo que habría pasado como .."otro render chulo del motor" se convirtió en un pequeño vídeo.

Y cuando veas el vídeo, seguro que dice..¡qué pasada de motor! Pues no, es el mismo que sacaba screen shoots hace poco, pero lo hemos utilizado de una forma que comunicaba algo que queríamos.

Todos los que hacemos un motor sabemos de lo que es capaz, pero no gastamos energías en mostrarlo a la gente, y por eso nos desanimamos, parece que cae en saco roto. Un juego ya es algo que se ve, más concreto y ya da la sensación de haber hecho algo productivo.

dedalo

 una reflexion interesante si señor.

yo voy a hacer la mia como grafista...

yo opino q si quieres hacer un juego lo mejor es empezar por analizar como lo haras, y encontrar siempre la via no sencilla, sino la via q te permita TERMINAR el proyecto.
hacerte tu motor por mis experiencias con programadores q han echo esto no es recomendable a menos q tengas unas buenas tablas(evidentemente todo es aprendizaje), si formaste un grupo o si formas parte de uno al final te daras cuenta de q un motor propio tiene muchas limitaciones...como les cuentas a tus compañeros de grupo q a habra q dar carpetazo al juego por q no puedes hacer todo lo q creias q ivas a hacer?

yo estoy algo frustrado con los programadores, (OJO NO TODOS), estoy desilusionado por q en muchas ocasiones tirais por la borda la iniciativa de los demas....
o bien estais con vuestro engine y solo es vuestro engine.....
o solo colaborais por q teneis tiempo libre....
y luego deciis algunos q los grafos no curran , o q son vagos.....
en mi experiencia al final en muchos de los casos solo curramos los gilipollas de los grafistas, bueno y los musicos tambien xd.....

y luego para q?

pues para nada...

por si te sirve de ayuda drakkar....no creo q lo importante sea entrar en dilemas de si es mejor hacer mi motor o uso este o aquel..NO
en mi opinion es: o haces el juego o no lo haces.
creo q es guay pedir ayuda a grafistas o bien formar un grupito, pero en muchos casos se sabe de antemano q pasara.

q no se os ocurra nada en grupo, es lo mejor si no estais preparados, ya uno se quema de ver como los proyectos mueren de inanicion, y las pocas ganas por hacer q crezcan bonitos y lustrosos.
seguid con vuestras pruebas de engines y tal o con vuestros juegos pequeños...o escribiendo vuestro guion de superjuego...al final creo q los caminos se separan y es lo mejor, unos por el camino A y otros por el B.

algo respetable, si no fuera por q un grupo lo forma mas de 1

OJO no meto en el saco a todos los programadores

Haddd

 bueno, Donald, gracias, ya sabes que te pondremos en los créditos del motor !!!  (ole)


senior wapo

 Algo util es algo que cubre una necesidad no cubierta aún. Eso de entrada descalifica los motores 3D. En el mundillo free, faltan cosas como:

- Un editor de niveles 3D. Todo lo que ves por ahi son minimodeladores, como si un nivel fuese solo la geometria. Soporte de entidades, caminos y nodos, areas, triggers, spawn points, conexion a DBMS para extraer la informacion no geométrica y trabajar en grupo. Soporte de plugins/scripts para generación de contenidos procedural (o te colocas los 324 arbustos a mano, uno a uno).
- Una herramienta de reducción poligonal (y si no jode mucho los canales UV y recalcula los materiales, mejor que mejor).
- Una herramienta de gestión contenidos (CVS para el apartado artístico). Es un follón tremendo organizar modelos, texturas, niveles, scripts, musica, efectos de sonido, shaders, scripts de FX particulas, etc... con varias personas trabajando juntas y teniendo que mantener distintas versiones del mismo recurso por si hay que echarse para atrás en un momento dado.
- Una herramienta de localización a otros idiomas robusta, con buen GUI, conexión a DBMS y soporte de metainformación (no veas que risa cuando traduces el texto pero el engine no cambia automáticamente el archivo de voz al mismo idioma, etc...)
- Exportadores de formatos o conversores.
- Una herramienta de generación de contenidos. Hay programas que generan arboles, plantas y terrenos. Y alguno que modela humanos (no, Poser no, MakeHuman de blender  :P ). También hay generadores de Dungeons cuadriculados (pero no crean mallas 3D por ejemplo)..

- En general, cualquier cosa que consolide 2 o màs pasos de workflow en uno solo. O permita hacer 1 paso de una manera mas rápida o menos propensa a errores o simplemente menos estresante.



Si no te referias a herramientas, sino a como organizarse al hacer juegos y no tirar el tiempo reinventando la rueda o haciendo cosas inútiles, pues ese, ya es otro post  :D  

Zaelsius

 Ahora que pienso...

¿¿Por qué no se marca alguien un COTW?? :(

No sé, cualquier curiosidad vale... aunque sea un Hello World con el motor C#, pero quiero un COTW ya !!

Vicente

 Hola,

pues así un poco en plan recopilación: a mi como a todos me mola lo de hacer juegos, aunque los gráficos nunca han ido conmigo, siempre me he dedicado a herramientas o cosas varias. Comparto con Dedalo lo que comenta de la frustración del grafista, en nuestro grupo pasó alguna vez que los grafistas se desesperaban (y con razón) porque el código avanzaba a paso de tortuga. No se, por los palos que nos hemos llevado, mi conclusión es que para hacer un juego, olvidate de hacer el motor: o coges uno hecho o haces un mod.

Respecto al motor C#, como dice Haddd, no creo que se les pueda desanimar ahora mismo ;) El ver resultados es siempre muy útil, y la ventaja del combo C#+Managed DirectX es que los resultados se ven rapidísimo. Además, mientras que motores C++ ultra buenos hay a patadas, yo no tengo tan claro que haya un motor 3D .NET puro bueno ahora mismo. Seguramente cuando una compañía grande se ponga a ello, pues nada, no se podrá competir, pero en el mundo de los motores hechos por amor al arte, yo creo que Haddd tiene bastantes posibilidades, o al menos tal y como está ahora. Y además, la experiencia ganada haciendolo no te la quita nadie, y a menos que pasen cosas raras, .NET va a ser una tecnología que va a dar de si un tiempo...

Un saludo!

Vicente

seryu

 Todo se reduce a.. quieres hacer un motor o quieres hacer un juego. Se puede aprender y lograr mucho en ambos casos.

La funcionalidad de un motor la marca las necesidades de tu proyecto. Es incorrecto querer añadir bones a tu formato de modelos "porque si" y "porque el resto lo tiene". Si un dia dices, mi juego necesitara de modelos animados de personas, entonces si tendra sentido. Pensar en añadir 'features' por que si es estupido y ademas te hace perder el tiempo.
Y si resulta que despues de currarte un sistema de animacion por bones que te permite sumarlos, atachar, moverlos independientemente, que cada uno tenga un peso especifico en un blend, etc.. vas y haces un juego de coches cuya unica animacion son las ruedas que encima no son bones.. absurdo (nooo)

Dicho asi suena de perogrullo, pero lo cierto es que en la practica acostumbramos a cometer 'el error'. Juegos en los que nos preocupamos mas de meter el normal map de moda que de hacer la IA de los enemigos, mucho criticar que carmack se centra en la tecnologia y no en la jugabilidad, y luego 40 posts del efecto grafico de moda, y en general de meter shaders a cascaporro porque-vi-el-agua-del-halflife-y-es-cool-de-la-muerte (aunqe esto ya es otro tema, porqe todos se preocupan de los shaders solo por el efectillo majo, cuando los shaders son mas una nueva forma de afrontar los motores graficos, qe el acceso a efectos graficos de-la-ostia, como podria ser liberar a la cpu de los bones, por seguir el ejemplo anterior).

Como odio estos posts de sacar las tablas de moises... mejor no me hagais caso  :D

Citar
yo estoy algo frustrado con los programadores, (OJO NO TODOS), estoy desilusionado por q en muchas ocasiones tirais por la borda la iniciativa de los demas....
o bien estais con vuestro engine y solo es vuestro engine.....
o solo colaborais por q teneis tiempo libre....
y luego deciis algunos q los grafos no curran , o q son vagos.....
en mi experiencia al final en muchos de los casos solo curramos los gilipollas de los grafistas, bueno y los musicos tambien xd.....

Tienes razon, los programadores son una raza a extinguir.

NeLo

Cita de: "donald"Pero creo que Hadd y bersi (perdona, es que es muy largo) , lo hacen por puro amor al arte, tienen sus curres aparte de historias no relacionadas, y creo que lo disfrutan tela como hobby.
¿BeRSeRKeR trabajando? :ph34r:

xDDD

Si quieres hacer un juegos, mejor no hagas el motor.

Aunque no sé porque digo esto, cuando estoy haciendome el motor para mi juego xDDD

Saludos.
Drowning deep in my sea of loathing

Haddd

 Eso de no hagas el motor si quieres hacer juegos, está muy bien para C++, pero no para .Net.

Mirad, os pongo la clase que crea el device de sonido, carga y reproduce:


   public class Sonido
   {
       public Device device = null;

       public Sonido(Form formulario)
       {
           try
           {
               device = new Device();
               device.SetCooperativeLevel(formulario, CooperativeLevel.Priority);
           }
           catch
           {
               MessageBox.Show("Unable to create sound device. Sample will now exit.");
           }

       }
   }

   public class Sample
   {
       private SecondaryBuffer buffer = null;

       public Sample(string nombre)
       {
           buffer = new SecondaryBuffer(nombre, Haddd.sonido.device);
       }

       public void Play(bool loop)
       {
           buffer.Play(0, (loop ? BufferPlayFlags.Looping : BufferPlayFlags.Default));
       }
   }


Ya está, no hay que hacer nada más. Esto es MDX. ¿Crees que la de vídeo es más compleja? No, ni mucho menos, lo único es que tiene más cosas.

¿Es más fácil para nosotros crear un sistema de shaders o analizar el de OGRE en C++, y modificarlo ? Pues es muuuuucho más fácil hacer el que queremos, y te digo que nuestro sistema de shaders es potente, y tremendamente escalable. No es el definitivo, porque queremos usar fragment link, pero es un muy buen sistema. También hay que partir con la "facilidad" que supone elegir un mínimo de equipo con shaders 2.0. La de código que te quitas por asumir que tienes shaders 2.0!!!

Y otra gran ventaja de C# es que no hay includes por un lado e implementación por el otro. Y el sistema de debug de la versión que usamos de Visual C# es...alucinante.

Bueno, ya vereis el código del motor y lo que puede hacer.

También tengo que decir que MDX TIENE BUGS. No es como la versión de C++, que está muy probada. Por ejemplo, yo no puedo ejecutar el motor en modo REF, no me funciona si utilizo RenderTargets. Y tampoco funcionaba en pantalla completa si usaba más de 1 RT en modo HAL. Pero bueno, supongo que los irán resolviendo. Tampoco tiene muchos ejemplos, así que hemos tenido que investigar muchísimo. Pero bueno, vosotros teneis ahora la ventaja de todo lo que nosotros hemos averiguado, que compartimos con toda la comunidad.

Ala, se terminó la reflexión.  <_<  

seryu

 Eso qe has enseñado, tiene trampa. Esta claro qe en un lenguaje de alto nivel sean 4 lineas, pero que te parece si te enseño yo a ti lo qe necesitas para reproducir un sonido en audiere?


AudioDevicePtr device(OpenDevice());

OutputStreamPtr sound(OpenSound(device, nombre, false));

sound->play();

eso si, sobre la elaboracion de clases, podriamos discutir  :)  






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.