Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - Anderson

#1
General / Re: El DOOM 1 y el DOOM 2, se consideran 2D o 3D ?
02 de Noviembre de 2008, 09:13:37 PM
En un libro que tengo los definen como "juegos 3D simulado" (y vulgarmente llamados 2.5D como ha apuntado Vicente). Se empleaba una técnica conocida como "Raycasting", en la que se empleaba una matriz 2D en cuyas celdas quedan definidas las paredes de un escenario y las alturas. Desde la posición del jugador se lanzan rayos a traves de dichas matrices hasta que se encuentra una "pared", y en dicho punto se dibuja ésta, escalándola al tamaño necesario según la distancia.

Como mejora, se añade una matríz adicional para el cálculo de alturas (supongo que Wolfenstein 3D usaría una sola matríz para representar el mundo) y ya juegos como Ultima Underworld: The Stygian Abbys, DOOM y DOOM II emplearían dos matrices.  ::)

Para los elementos tales como enemigos, objetos, cadáveres de enemigos, etc supongo que emplearían la técnica conocida como Billboarding.

Por aquí dejo un enlace a Wikipedia:
http://en.wikipedia.org/wiki/Raycasting


#2
 
Cita de: EX3El tema que montarte toda la infrastructura con DirectShow puede ser un pelin coñazo pudiendo usar directamente apis como FMod o similares que te comente ya que te dan todo hecho para empezar a funcionar e incluso portar a otras plataformas.

Hola, perdona por no contestar antes, pero me tuve que poner con otra cosa más prioritaria y este tema lo tuve que dejar de lado.  ^_^'

Eso es lo que deseo hacer: dos musicas, reproducir la segunda unos segundos antes de que acabe la primera mezclando final con inicio.

Bueno, el aprender a montar dicha infraestructura (empleando DirectShow, DirectMusic, DirectSound, o lo que sea, que ya no sé muy bién ni con qué lo voy a hacer) digamos que es parte de lo que quisiera aprender a hacer y ver, justo por ello decía lo de dejar FMod o similares como último recurso, o en todo caso coger una biblioteca como Audiere, que veo que es de código abierto.  :)

Tomo nota respecto de lo de DirectShow, veamos qué hago al final.
#3
Cita de: "[EX3"]Para audio con Wavs on DirectX sin duda DirectSound. Ahi vas a tener mas control y segun recuerdo es algo mas sencillo para reproducir y controlar muestras de audio asi como efectos y audio 3D. Para musica te diria que en Windows tirases de DirectShow o alguna API de terceros como puede ser OpenAL o FMod, que tambien te serviran para el audio basico con archivos Wav y efectos.

Salu2...

Bueno, en última instancia lo que deseo lograr es implementar un cross-fading, llegué a hacer con DirectSound que, tecuando estuviera a punto a de terminar una canción, sonara la siguiente y luego se terminara la primera (habría cuatro o cinco segundos en los que se escucharían las dos a la vez), pero me fallaba el programa a la hora de implementar el efecto de cross-fading.

Estuve echando un vistazo al ejemplo de cross-fading de la versión del SDK de DirectX "Summer 2003", pero el ejemplo no me servía porque la canción que implementa el fade-out no "retrocede", como si siguiera reproduciéndose en silencio, y cuando le vuelves a dar para que se escuche no empieza por el principio, sino por donde estuviera en dicho momento.

Y en estas... pues llegó a mi poder este libro.  :wink: Lástima que algunos ejemplos no estén funcionando bien y no he logrado aún ver qué pasa, porque el libro está bien como introducción, pero es una puñeta. Por cierto, para más Inri aún, otra persona puso un comment en GameDev sobre otro problema relacionado con los ejemplos de este libro... y ese logré resolverlo  :lol: Este asunto me ha servido, también, como introducción a DirectShow.

http://www.gamedev.net/community/forums/topic.asp?topic_id=364943

Quisiera dejar cosas como FMOD u OpenAL como último recurso (quizás tiraría antes por Audiere), en cualquier caso gracias por la contestación y las recomendaciones. :)
#4
Hola a todos/as.

Estoy aprendiendo algo de progamación de audio y he estado siguiendo el libro "Beginning Game Audio Programming" de Mason McCuskey, pero me están dando problemas algunos de los ejemplos que vienen en el CD. Deseaba saber is alguien había utilizado este libro también y todo le ha ido bien, o tambien ha tenido algunas dificultades. Dichos ejemplos emplean DirectMusic para la reproducción de los audios, y he utilizado Visual Studio.NET 2003 para su compilación.

He llegado hasta el capítulo 6, y ha ido sucediendo lo siguiente:

-Al ejecutar los ejemplos Ch5p1_ConcurrentPlayback o Ch5p2_SoundInstances a veces el audio suena el número de veces establecido... pero otras veces suena una vez menos. Los audios se toman  de ficheros .WAV

-Al ejecutar el ejemplo Ch6p1_MIDIPlayback el tempo no se acelera mediante el uso del método SetGlobalParam del performance y especificando un scale factor mayor de 1. Aparte, se supone que aparecerían una serie de mensajes en pantalla en base a la recepción de mensajes del performance (llamando continuamente a la orden de "dispatching" de dichos mensajes en el bucle del juego o mediante un thread independiente) pero no ninguno de dichos métodos dichos mensajes en pantalla aparecen. El audio se toma de un fichero .MID

He probado dichos ejemplos en dos ordenadores:

-Un Pentium IV con Windows XP Prodessional Service Pack 2 y el DirectX SDK de febrero de 2006.

-Un portátil con Windows XP Home y el DirectX SDK Update Summer 2003.

Lo dicho: deseaba saber si alguien había estado también siguiendo dicho libro y también había tenido problemas y, de ser así, si se puede hacer algo, o si es que los ejemplos están mal o son mis ordenadores, porque digamos que, ahora mismo, no sé muy bien qué hacer. :?

Un saludo.
#5
Cita de: "marc_opolo"Me da la impresion de que son AABB en coordenadas locales (del modelo), por eso xmin, ymin y zmin seran posiblemente negativas, de ahi que

x + xmin = 0 --> x = -xmin  (por ejemplo)

cualquier x que cumpla xmin < x < xmax, estara dentro del AABB


Saludos!

Hola, perdona por haber tardado en contestar.  :wink:

Debe ser lo que tú dices, que así se expresaría en coordenadas locales respecto del modelo. En cualquier caso, yo deseaba expresarlas en coordenadas absolutas respecto al mundo, por lo que he he utilizado las fórmulas de la forma en que yo creía y... ¡vaya, ha funcionado!.  :lol:

Gracias.
#6
Saludos a todos. Estoy viendo la explicación de un algoritmo para determinar si un determinado punto P se encuentra en el espacio interior de un Bounging Box Alineado con los Ejes de Coordenadas (AABB). La explicación aparece en el capítulo 22 (página 685) del libro "Core Techniques And Algorithms In Game Programming" de Daniel Sánchez-Crespo.

Según parece, las ecuaciones de los 6 planos que definirían un AABB serían:

x - xmax = 0 --> x = max
x + xmin = 0 --> x = -xmin
y - ymax = 0 --> y = ymax
y + ymin = 0 --> y = -ymin
z - zmax = 0 --> z = zmax
z + zmin = 0 --> z = -zmin

siendo xmax, xmin, ymax, ymin, zmax y zmin números tales que:

xmax > xmin
ymax > ymin
zmax > zmin


Pero en mi opinión, creo que los planos deberían ser:

x - xmax = 0 --> x = xmax
x - xmin = 0  --> x = xmin
y - ymax = 0 --> y = ymax
y - ymin = 0  --> y = ymin
z - zmax = 0 --> z  = zmax
z - zmin = 0  --> z  = zmin


¿Podría alguien confirmarme si esto es así?. Gracias.  8)
#7
Proyectos / Yume
01 de Febrero de 2006, 11:35:46 PM
 Aún no he jugado, pero aún así... ¡¡¡ENHORABUENA DE ENTRADA!!!.  (ole)

Veo que hay opiniones para todos los gustos. Iré a bajarme la demo y a formarme la mía propia... ;)

#8
Off-topic / Por Si No Os Habiais Enterao
29 de Diciembre de 2005, 10:37:24 PM
 Dos cosas muy bién hechas:

-Curioso lo de poner escenas en pirmera persona como si estuvieras "jugando a la película"  :lol:

-Los Hell-Knights... PERFECTOS  :)

Y cuatro fallos imperdonables:

-"DOOM sin Infierno"... ¡¡¡¿ESO CÓMO SE COME?!!!. Pues que los bicharracos ahora son experimentos genéticos y mutaciones de pobres ilusos que se prestaron a experimentos, en lugar de criaturas salidas de una dimensión infernal paralela a través de los experimentos con portales teletransportadores... es decir, ¡¡¡QUE NO SE COME DE NINGUNA FORMA!!!. ¡¡¡YA SE ACABAN DE CARGAR LA PELÍCULA!!!.

-Para hacer una buena película basado en un videojuego... la estética  debe ser 100% IGUAL AL VIDEOJUEGO. Los escenarios no están mal, pero los trajes de los marines, los cascos, etc. eran algo muy notable del juego... ¿qué clase de "cutre-trajes" me están sacando en la peli?.

-Una película que digne de llamarse DOOM debe ser tan gore que "Braindead" o "Reanimator" deben parecer "Caperucita Roja" a su lado. Creo que han querido hacer algo que se parezca más a "Resident Evil" que a "Braindead" o "Reanimator". ¿Va a aparecer otro elemento imprescindible como es la motosierra, por cierto?. Creo que la Big Fucking Gun sí aparece...

-La banda sonora... Creo que una banda sonora para DOOM debería estar hecha por grupos de death metal (alguien del calibre de THE BERZERKER, CANNIBAL CORPSE o MORTICIAN).

http://www.theberzerker.com/
http://www.cannibalcorpse.com/
http://morticianrecords.com/

Vamos, que replanteándola de arriba a abajo, podría hacerse una película del copón...  (nooo)  (nooo)   (nooo)

Bién empleado se les tiene a "los genios de los negocios" por no tener más tacto con lo que la gente quería...
#9
Off-topic / Sir Fred - El Remake
16 de Diciembre de 2005, 07:53:04 PM
  (ole)  (ole)  (ole) SIR FRED RULES!!!.

Sin embargo, tengo un problema: si activo las sombras, el juego se me queda colgado cuando trato de subir por la liana que hay en el foso de la piraña hasta las pantalla del balcón (subo por la liana y, cuando todavía se ve completamente a Sir Fred, se bloquea y sale la ventana de error de Windows y demás).

¿Le sucede esto a alguien más? .
#10
Industria y mercado / Crear Tu Propia Empresa De Juegos
08 de Diciembre de 2005, 09:37:49 PM
#11
Cita de: "zupervaca"te aconsejo hechar un vistazo a esta web que habla sobre calculos con matrices http://personal5.iddeo.es/ztt/Tem/T6_Matrices.htm, en ella veras el motivo de por que rotar antes y luego transladar entre otras cosas
Gracias. Por mi parte, pondré de dónde saqué dicha afirmación:

http://fly.cc.fer.hr/~unreal/theredbook/ Capítulo 3, sección "Thinking about transformations"  
#12
Cita de: "zupervaca"no entiendo muy bien lo que quieres hacer, pero me imagino que el problema es que estas moviendo el modelo y luego rotandolo, y lo que quieres es rotarlo y luego moverlo, ademas debes de quitar el cos, sin, etc de las funciones de rotacion

mira seria algo asi:

glRotatef( xRot, 1.0f, 0.0f, 0.0f );
glRotatef( yRot, 0.0f, 1.0f, 0.0f );
glRotatef( zRot, 0.0f, 0.0f, 1.0f );
glTranslatef( xTrasl, yTrasl, zTrasl );

con esto rotas el modelo en los angulos indicados y luego lo desplazas
de la forma en que lo haces tu estas moviendolo y luego rotandolo, la rotacion siempre se hace sobre 0,0,0
Gracias, zupervaca, pero esa fué una de las opciones que probé y funcionaba sólamente quitando las líneas de de guardar y restaurar matríz. Si se manteníam esas líneas el único giro que hacía bién era alrededor del eje z, el blanco (porque era el último de los tres que había colocado, si ponías en el código, por ejemplo, el y, ahora el que giraba bién era alrededor del y); pero el resto no gira desde los ejes relativos "x" e"y", sino desde los absolutos (es decir, (1, 0, 0) y (0, 1, 0) )

Por cierto, el orden en el que he puesto la traslación y la rotación es el correcto, según parece en el código hay que escribirlo AL CONTRARIO de lo que uno pretende hacer (y como lo que quería hacer era primero rotar y después trasladar, por ello tengo que escribir primero la orden de trasladar y después la/s de rotar) ;)
#13
General / Kedada En Madrid
05 de Diciembre de 2005, 11:16:44 PM
Cita de: "Jove"
Cita de: "Anderson"En mi caso, aún tendrá que pasar algún tiempo hasta que decida participar en alguna quedada, sea en Madrid, Valencia, Barcelona o donde sea.  :P
Si le pides permiso a tus padres por escrito, te dejariamos asistir a las quedadas...

Pero amos... si quieres esperar a ser mayor, lo entendemos. :P
:lol:  Ni lo uno ni lo otro.  
#14
 Hola a todos. A ver si me podeis echar una mano:

Estoy haciendo una pequeña demo de una figura que tiene que trasladarse por la pantalla y rotar respecto a sus tres ejes relativos, desplazarse por la pantalla hacia delante y hacia atrás en la dirección que marque el eje blanco, lateralmente en la dirección que marca el eje azul, y hacia arriba y hacia abajo en la que marca el rojo. La camara permance en la misma posición. Estoy utilizando OpenGL con ayuda de GLUT y algunos comandos glu. Aquí os dejo unas imágenes:

http://www.livejournal.com/users/anderson_...jag/2005/11/11/
http://www.livejournal.com/users/anderson_...jag/2005/10/19/

El eje x sería el azul, el y el rojo y el z el blanco. El caso es que ya he logrado hacer todo esto a base de no guardar/restaurar el estado de la matriz Vista de Modelo, y para hacer la rotación, utilizar 3 instrucciones glRotate que efectúen una rotación de alrededor de los vectores (1,0,0)  , (0,1,0) y (0,0,1), teniendo tres diferentes ángulos:  xRot, yRot y zRot. Para la traslación, utilizo glTranslate y tres variables xTrasl, yTrasl y zTRasl. En un principio quedaba así:

glTranslatef( xTrasl, yTrasl, zTrasl );

glRotatef( xRot, 1.0f, 0.0f, 0.0f );
glRotatef( yRot, 0.0f, 1.0f, 0.0f );
glRotatef( zRot, 0.0f, 0.0f, 1.0f );

El problema con todo esto y con no guardar/restaurar la es que no estoy partiendo de una base sólida y creo que con este planteamiento se puede hacer esto y poco más (cuando he tratado de hacer rotar la cámara con el ratón, se ha vuelto ingobernable). Por ello he desechado esta perspectiva y he vuelto a empezar.

Ahora estoy guardando el estado de la matriz Vista de Modelo, dibujando y recuperando dicho estado. Pero ni la figura rota ni se desplaza con respecto a sus ejes relativos, sino con respecto a (1,0,0) , (0,1,0), (0,0,1) ;lógico, es lo que yo estoy especificando :P Dado que con glRotate hay que especificar el vector alrededor del que se ha de rotar, para averiguar dicho vector se me ha ocurrido especificar las coordenadas (x,y,z) del vector que corresponda en base a relaciones trigonométricas. Así, el tema queda:

glPushMatrix(); // En realidad, el estado que se guarde será el de la
               // Matriz Identidad

glTranslatef ( xTrasl, yTrasl, zTrasl );

glRotatef( xRot, cos(yRot), sin(zRot), sin(yRot) );
glRotatef( yRot, sin(zRot), cos(xRot), sin(xRot) );
glRotatef( zRot, sin(yRot), sin(xRot), cos(xRot) );

// Dibujar figura con glBegin(GL_TRIANGLES) y glEnd()

glPopMatrix();
   
Buén intento... mientras rotas la figura en una posición que coincida con (1,0,0) , (0,1,0)  , (0,0,1) ,pero en cuanto tratas de rotar la figura respecto de algún eje relativo (una segunda vez has rotado la figura hacia alguna dirección y en esa posición la has dejado) se vuelve completamente loca y se coloca en todas las posiciones imaginables :P Con respecto a la traslación, no se traslada respecto a las coordenadas relativas.

En fín, no sé si lo que pretendo hacer debe realizarse de otra manera (utilizar otras instrucciones de OpenGL, glu ó gltools), o se necesitan más cálculos de álgebra de los que yo creía. Espero vuestras sugerencias y comentarios ;)
#15
General / Programacion De IA
05 de Diciembre de 2005, 10:49:39 PM
 Aún no sé si se está originando un debate por lo que sería ocupación de espacio en/los servidore/s y por ello sería más prioritario hacer antes otros apartados como de "la industria" que he leído por ahí. Si es así, creo que, de momento, sería mejor.

Pero... ¡¡¡ojo!!!. Sólo de momento  :P  porque la verdad es que echo de menos en stratos un subforo dedicado a la programación en IA (igual que echo uno de menos uno dedicado a la programación de física) y, aunque parece ser que no se pudiera llenar demasiado de momento, no cabe duda de que sí se hará en un futuro, dado que la programación en IA y la programación de lógica parecen ser, hoy por hoy, los tipos de programación en videojuegos más demandada.  :rolleyes:  





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.