Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





3D Enviroment - Entorno3D en DX

Iniciado por giant.sQuid, 21 de Febrero de 2011, 07:01:42 PM

« anterior - próximo »

giant.sQuid

Bueno, Les comento que soy nuevo usando la libreria. Hace unos meses empece con algo seria un germen de un juego al estilo plataformas, basado en uno que vi en Zsnes :-[. la cuestion es que me di cuenta que tenia que automatizar muchas cosas como, los tiles, para los fondos, y tod eso, pero me tope con idea de hacerlo en prespectiva, luego vi que la libreria permitia usar PERPECTIVA ISOMETRICA Y CAbALLERA, y tambien descubri sobe definir 4 vertices con el VertexData(), en ese momento se me vino a la cabeza de hacer un entorno Tridimencional estable,(es decir que yo solo me tendria q preocupar del donde, cuando, colores y texturas. y los codigos de la perpectiva,  coordenadas, q renderizar como y cuando). Apartir de entonces vengo descubriendo un mundo imaginario regido por las geometria analitica(y el algebra lineal) , si! wacatelas!  8o:shit:  8o pero se vuelve interesante al final :)_
esto esta un poco avanzado de lo que hize al principio pero es ilistrativa:

http://www.encrucijadaheroes.com.ar/foro/download/file.php?id=1458&mode=view
aqui intento encontrale el punto de fuga

http://www.encrucijadaheroes.com.ar/foro/download/file.php?id=1459&mode=view

esto es en lo ultimo y mas complejo en que me meti:

esto viene despues de que se ocurriera el concepto de CAMARA, esto seria el area que abarca la vista de una camara,y por lo tanto el area que debe renderzar, es decir optimizando recursos a la hora de "dibujar" solo los "texturas" q se ven, y no las qu estan detras de la camara y/o fuera del campo visual.fuu ^_^'
http://www.encrucijadaheroes.com.ar/foro/download/file.php?id=1460&mode=view
en el futuro les muestro como hice la camara(que en realidad es un concepto abstracto, mas bien es solo un conjunto de formulas,si jaja >:D)
saludos!

Hechelion

No es por aguar esta buenísima librería  :.. , pero para lo que planteas te es mejor trabajar directo sobre DirecX u OpenGL y ahí te darás cuenta que lo mejor es trabajar con algún C.

Luego de algunos meses de aprendizaje (se aprende bastante trabajando a ese nivel), te darás cuenta que si quieres hacer un juego en un tiempo decente y que se vea decente, lo mejor es utilizar algún motor ya hecho y derecho.

Con esto no quiero desanimarte ni nada, simplemente compartir mi experiencia. Encuentro genial está librería, pero por desgracia es una librería 2D y para crear entornos 3D no es buena, por ejemplo, no tiene forma de calcular la rotación de una textura en un entorno 3D y si logras crear algo que lo haga (manipulando cada pixel) vas a consumir mucha CPU (y ni hablemos de agregar cosas más complejas como luz o mapas normales), cuando hacer lo mismo con DirectX es trivial y barato.

Como aprendizaje es bueno, pero para un juego no, salvo que crearas un jugo como esos antiguos que no tenían texturas, como el simulador de tanques de Lucasart.

Manu343726

Que crack, me has quitado la idea!!! Aunque yo no llego a tanto, yo me quede en 2D Isométrico.

Bueno, aunque me duela decirlo ( Porque yo también me estoy matando para hacer mi propio motor) estoy de acuerdo con Hechelion: dxlib32 no está hecho para esto... Se tarda demasiado tiempo en recalcular todas las posiciones. Yo creo que voy a seguir su consejo y pillaré algun motor. Aunque solo por curiosidad (Y admitamoslo, cabezonería) seguiré con mis investigaciones.

Mi recomendación es que si lo que realmente estás buscando es hacer un juego, olvidate de lo que estás haciendo y búscate un motor decente. Si por el contrario, eres como yo, y solo buscas un "reto mental"  te animo a que sigas para delante. Eso si, me harias un gran favor si vas colgando los progresos que hagas.

Suerte.

[EX3]

Cita de: VBManu en 23 de Febrero de 2011, 12:57:54 PM
Si por el contrario, eres como yo, y solo buscas un "reto mental"  te animo a que sigas para delante.
Si por mucho empeño que ponga tecnicamente la libreria no le permitira recrear un entorno 3D ya que todos los objetos definidos siempre estan, digamos, apuntando a la camara, igual que un billboard lo haria en un entorno 3D. Las proyecciones que simula la libreria son solo eso, simulaciones de pega ya que siguen sin tener profundidad espacial real (y encima la coordenada Z solo te admite un rango de valores entre 8 y -8), estaban diseñadas para simular la vista de un juego plataformas 2D como el viejo prince of persia:



La librería esta pensada para lo que esta, trabajar fácilmente entornos 2D :)

Salu2...

José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Cita de: [EX3] en 23 de Febrero de 2011, 04:52:53 PM
La librería esta pensada para lo que esta, trabajar fácilmente entornos 2D :)

Y para eso va de lujo. Pero tal como dice Ex3. Al Cesar lo que es del Cesar.

giant.sQuid

hola de nuevo, encuentro muy Constructivas sus criticas, y me parece genial, de hecho x un momento esperaba q me ignoran.
Si nos detejnemos un ratito, veremos que las librerias 3D NO EXISTEN, ???, que me volvi loco, sí!, es decir, bueno.. Cualkier entorno tridimiencional computacional este representado, ya sea por hardware o por lo que sea, esta representado en DOS diemenciones, por que todas las pantallas, monitores son bidimencionales, (bueno hasta q la tecnologia me contradiga). A lo que voy es que si un libreria, ya sea openGl o lo que fuere, logra engañarte y decir que un cubo puede ser representado bidimensionalmente en una pantalla, entonces la libreria es funcional.
^_^', y si estoy conciente de la capacidades limitadas que podria tener, para mi esto ya es bastante aceptable jeje


y VBmanu no entendi bien esta parte:
Cita de: VBManu en 23 de Febrero de 2011, 12:57:54 PM
dxlib32 no está hecho para esto... Se tarda demasiado tiempo en recalcular todas las posiciones.
emm... lo que hice es poner una fourmula general, un "transaformador 3D-2D", como me gusta llamarle, q lo q hace es transformar coordenadas XYZ en XY, que son las de la pantalla, pero una vez hecho eso no tienes que volverlo a hacerlo mas, lo implementas y te "olvidas", esto CRITICO en la libreria, no se puede avanzar si son esto. pero igual quisiera q te explikes  ^_^'

AH espero mandarles un juego antes de cumplir 23!no me keda mucho. :-[
see ya! ::)

[EX3]

Cita de: giant.sQuid en 28 de Febrero de 2011, 04:56:45 PM
Si nos detejnemos un ratito, veremos que las librerias 3D NO EXISTEN, ???, que me volvi loco, sí!, es decir, bueno.. Cualkier entorno tridimiencional computacional este representado, ya sea por hardware o por lo que sea, esta representado en DOS diemenciones, por que todas las pantallas, monitores son bidimencionales, (bueno hasta q la tecnologia me contradiga). A lo que voy es que si un libreria, ya sea openGl o lo que fuere, logra engañarte y decir que un cubo puede ser representado bidimensionalmente en una pantalla, entonces la libreria es funcional.
No confundamos el que 3D se "imprima" sobre una superficie 2D como es un monitor a como trabajan internamente los algorritmos de dibujado y calculo espacial 3D (y aqui entran tambien los motores de fisicas por ejemplo). Yo hablo de lo segundo y eso es determinante para poder representar volumenes en pantalla. El siguiente grafico quizas te muestra el por que mi libreria o cualquier libreria 2D no te sirve para representar un espacio 3D:



Con funciones integramente 2D, que no entienden de coordenadas espaciales, que solo trabajan en persepectiva ortogonal, no podrias componer esos 3 planos cruzandose entre si, solo podrias crear figuras superpuestas como el siguiente dibujo:



Por tanto pierdes la componente 3D espacial por lo que te explicaba, cada objeto aplica la misma profundidad a los 4 vertices que lo componen, para lograr la primera figura se deberia poder asignar una profundidad independiente a cada vertice de los poligonos que forman los quads y eso dx_lib32 no te lo permite. OpenGL, Direct3D y cualquier API 3D representan 3D gracias a trabajan las composiciones a nivel de pixel, de ahí que al definir vértices a distintas profundidades se puedan intercalar planos y texturas, digamos que no proyectan en plano la composición.

En 2D, trabajando con tiles y sprites solo podras lograr composiciones isometricas como esta o esta o simular perspectivas caballeras como en Prince of Persia , y salvo que implementes tu propio sistema de ray tracing (trazado de rayos) con 2D no podrias generar autenticos volumenes en pantalla, aunque claro, esto no te serviria para crear 3D en tiempo real dado el coste de procesamiento que requiere :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

giant.sQuid

creo que estoy empezando a coger tu punto..("coger" español, por que en mi planeta significa otra cosa je... ^_^'), creo que te remites a la persepcion de VOLUMEN... bueno, seré psicotico pero no tonto, je, es claro que ese tipo de nivel no lo voy a lograr con esta libreria. Q dicho sea de paso, es la parte visual(en el sentido de ver , no de de lenguaje), es como la parte que traduce los algoritomos y matematica en algo q perceptible a los ojos. de nuevo no es tanto la limitacion de libreria si no de desarrollo, que de nuevo, simpre estube conciente de la limitacion de  representacion de volumen, sombra, textura!, e incluso de tu ejemplo anterior. Tube un idea y lo dibuje con un lapiz llamado DxLib32... y tal vez no funcione para hacer juegos, estoy trankilo de saber minimamente, minimamente, como operan un etorno 3D.  es mas un capricho personal 0:-). espero que no se hayan ofendido al usar su libreria ;)
"y hací concluye este episodio"... jaja nos vemos


[EX3]

Cita de: giant.sQuid en 28 de Febrero de 2011, 07:56:09 PM
"coger" español, por que en mi planeta significa otra cosa je... ^_^'
Creeme, lo se xDDD

Cita de: giant.sQuid en 28 de Febrero de 2011, 07:56:09 PM
espero que no se hayan ofendido al usar su libreria ;)
No veo donde esta la ofensa, solo tratábamos de explicarte que lo intentas hacer con la librería es técnicamente imposible por como esta implementada y diseñada, que tampoco es plan de pegarte el esfuerzo para nada :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

giant.sQuid

oh si si, lo entiendo perfectamente, y les agradesco que se tomen el tiempo para hacerlo ::) :-[
holas y adioses.

Ubermann

#10
Hola.

Antes de nada, presentarme, ya que soy nuevo por este foro.
Me ha bajado la librería hace unos días, y aunque no he hecho nada importante, creo que puede cumplir mis expectativas, aunque a primera mano, tras trastear un poco y leer la ayuda muy por encima.

Bueno, básicamente me registré en el foro por que al leer este mensaje y sus respuestas me acordé de un par de cosillas que había estado mmirando hace ya bastante tiempo.
Se trata de realizar una escena 3D mediante gráficos 2D usando diferentes técnicas.

Estas técnicas son conocidas por juegos que las usaron por primera vez, como por ejemplo Dungeon Master, Chaos Strikes Back, idTech Engine 1 (Doom/Hexen/Heretic/...)

Son básicamente el Raycasting, Raytracing y el 3DStatic Drawing (creo que se llamaba así).

Tengan en cuenta que por aquellos años, sobretodo los anteriores al Win95, no había DirectX y mucho menos OpenGL, así que se inventaron técnicas para simular susodichas escenas que parecían 3D.
Hoy en día les llaman a eso 2.5D, en vez de 3D, ya que no es realmente 3D.

Pueden buscar por internet, que seguro que encuentran gran cantidad de manuales para implementarlos, sobretodo del Raycasting.

Ahora bien, olvídense del Raycasting y Raytracing si dx_lib32 o el código que tengan pensado desarroyar no estén bién optimizados en cuanto a funciones de perspectiva y escalado se refiere.

Un saludo y espero que les sea de utilidad.

giant.sQuid

si creo que captaste mas o menos lo que se podria llegar a hacer con esta cosa(lo que hice je), un doom o un wolfenstein 1 se podria llegar a lograr con algo de trabajo, gracias por commentar!
sAlud2.






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.