Aclaraciones avanzadas

Started by BlySntK, January 28, 2012, 01:48:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

BlySntK

Bien, mis dudas son estas: Sobre las tiles o tileado y sobre la física newtoniana.

Veréis, el tileado más o menos entiendo su preparación y su puesta en marcha con matrices, hasta ahí, todo claro. El problema viene en cómo usarlas. Los distintis algoritmos con map_put no les termino de comprender, tanto cáculo dentro de esta función me desorienta mucho, además de la colocación de cada "baldosa" en la matriz numerada con los números del fpg.

En lo referente a la física... no llevo nada, pero nada bien las formulas matemáticas y, una vez llevado al código... no llego a comprender velocidades de inicio y fin o gravedades... Si sois tan amables de intentar explicarmelo para LERDOS (niños de 5-10 años xD) me sería de utilidad, gracias chicos!
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

Futu-block

no tengo ni idea, por eso no te lo dije por mp :(

BlySntK

No te preocupes Futu, quedas perdonado (pero actualiza el blog con los avances que hayas hecho en las pruebas del juego que miramos de tener entre manos... Hazme ese favor, gracias ^^

Alguien que me ayude con mis dudas, plissssss?????????? Les estaría ENORMEMENTE agradecido
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

SplinterGU

cual es la duda concreta, asi como la planteas es un poco amplia.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

BlySntK

#4
Por ejemplo, en la biblia pone:


/*Fíjate la manera que usamos (muy típica cuando se trabaja con tiles) de acceder a unelemento determinado de la tabla. Las filas están multiplicadas por 20 porque 20 es elnúmero de elementos de cada fila; de esta manera, primero nos situamos en una filadeterminada, y una vez allí, nos movemos a la columna que queremos. Es pues un movimiento"en 2 pasos": nos saltamos de golpe primero todas las filas que no nos interesan parallegar a la nuestra, y una vez allí, nos movemos a la columna que queremos. Por ejemplo,si queremos saber qué gráfico ha de haber en la quinta fila (número 4) octava columna(columna 7), el elemento de la tabla correspondiente será 4*20+7 = 87.
[color=black]Por  otro  lado,  las  coordenadas  escritas  en  los  dos  últimos  parámetros  de  map_put -correspondientes al centro del tile- se multiplican por el tamaño de la baldosa, paracuadrar el dibujo. La primera baldosa de la esquina superior izquierda tendrá como puntocentral el (0,0); la segunda el (64,64), la tercera el (128,128) y así.*/
                     map_put(0,0,tiles[(fila*20)+columna],columna*64,fila*64);[/color]
    End
    End
    Loop
        //y si avanzamos actualizamos los tiles...¡FALTA!
      [color=black] If (region_act<>ultima_region)
            From fila= 0 To 11;
    columna=region_act+19;
              map_put(0,0,tiles[(fila*20)+columna],(region_act-1)*64,fila*64);[/color]
            End
            ultima_Region=region_act;
       End


Lo que pongo la etiqueta de color es lo que no comprendo

y este otro:



  //Se asegura que la posición de la cámara no salga fuera del nivel
  if(scrol.sx < 0)scrol.sx = 0;end
  if(scrol.sy < 0)scrol.sy = 0;end
[color=black] if(scrol.sx > DIM * TILESIZE - SCREENX)scrol.sx = DIM * TILESIZE - SCREENX;end
  if(scrol.sy > DIM * TILESIZE - SCREENY)scrol.sy = DIM * TILESIZE - SCREENY;end[/color]

Y lo de la física:

la simple formula x = x0 + v0x · t  e  y = y0 + v0y · t + 0.5 · g · t2 se me atragantan
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

osk

Bueno, es verdad que esto de los tiles es un poco lioso si se quiere hacer "a pelo" directamente

El comentario inicial del trozo de código que has pasado intenta explicar cómo se construye un tile.El if es para detectar si se ha llegado a algún extremo de la pantalla (la última región -previamente definida- ) para desplazar todos los tiles en paralelo y volviendo a redibujar todo y mostrar la nueva zona que se "descubre". Así explicado es bastante difícil de pillar...una animación ilustrativa del proceso no vendría mal, la verdad.

Yo te aconsejo que vayas jugando con esto, cambiando los valores, poniendo delays en los bucles  y aislando código para sólo ejecutar lo que te interesa y que veas lo que pasa. Y también mira el código de otros juegos donde haya tiles, que a lo mejor el código de la "biblia" tal vez no sea ni el mejor, ni el más eficaz ni el más sencillo...no hay una sola manera de hacer las cosas...

Te aconsejo también que le eches un vistazo a esto: http://www.tonypa.pri.ee/tbw/start.html

Respecto las fórmulas, son las fórmulas básicas del movimiento rectilíneo de  la cinemática newtoniana. Quién mejor que la wikipedia para explicarlo: http://es.wikipedia.org/wiki/Cinem%C3%A1tica#Movimiento_rectil.C3.ADneo

Hale, hasta luego

BlySntK

Quote from: osk on January 29, 2012, 09:44:08 PM
Bueno, es verdad que esto de los tiles es un poco lioso si se quiere hacer "a pelo" directamente

El comentario inicial del trozo de código que has pasado intenta explicar cómo se construye un tile.El if es para detectar si se ha llegado a algún extremo de la pantalla (la última región -previamente definida- ) para desplazar todos los tiles en paralelo y volviendo a redibujar todo y mostrar la nueva zona que se "descubre". Así explicado es bastante difícil de pillar...una animación ilustrativa del proceso no vendría mal, la verdad.

Yo te aconsejo que vayas jugando con esto, cambiando los valores, poniendo delays en los bucles  y aislando código para sólo ejecutar lo que te interesa y que veas lo que pasa. Y también mira el código de otros juegos donde haya tiles, que a lo mejor el código de la "biblia" tal vez no sea ni el mejor, ni el más eficaz ni el más sencillo...no hay una sola manera de hacer las cosas...

Te aconsejo también que le eches un vistazo a esto: http://www.tonypa.pri.ee/tbw/start.html

Respecto las fórmulas, son las fórmulas básicas del movimiento rectilíneo de  la cinemática newtoniana. Quién mejor que la wikipedia para explicarlo: http://es.wikipedia.org/wiki/Cinem%C3%A1tica#Movimiento_rectil.C3.ADneo

Hale, hasta luego

Qué grande eres, osk. Gracias por aclararmelo un poco mejor, sí, iré haciendo lo que siempre he venido haciendo con códigos anteriores, experimentar para comprenderlo. En cuanto pueda le echaré un ojo a los links pasados y... a ver :) Y lo de las formulas newtonianas, buff, en eso sí que voy a tener que "hincar codos", tocando física y trigonometría... cuando yo en las matemáticas no he llegado más lejos que a aprender las ecuaciones de primer y segundo grado... Lo curioso es que no se me dan mal... qué cosas. Bueno, supongo que ya iré comentando las pruebas que haga o... siendo más productvos, una vez comprendido el meollo, seguramente aceleraré con los juegos que tengo ya preconstruidos.

Un saludo y de nuevo, gracias!
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

Futu-block

lo de la fisica es algo que viene en chipmunk, imposible para mi :D

si lo que quieres es un movimiento suave de salto puedes restarle a la Y el coseno del angulo...


necesitas un angulo sumando constantemente, y un operador que te saque el seno o el coseno de ese angulo, asi el movimiento se vá decelerando poco a poco hasta que se para y vuelve a acelerar hasta la posicion inicial

te pongo un ejemplito:


Quote
for(i = 180; i < 361; i++)
     seno = sin(angulo)*raido;   
     y = seno;
     angulo = i * 1000;
     frame(75);
end

el movimiento es automatico  8)

BlySntK

Quote from: Futublock on January 30, 2012, 09:24:47 AM
lo de la fisica es algo que viene en chipmunk, imposible para mi :D

si lo que quieres es un movimiento suave de salto puedes restarle a la Y el coseno del angulo...


necesitas un angulo sumando constantemente, y un operador que te saque el seno o el coseno de ese angulo, asi el movimiento se vá decelerando poco a poco hasta que se para y vuelve a acelerar hasta la posicion inicial

te pongo un ejemplito:


Quote
for(i = 180; i < 361; i++)
     seno = sin(angulo)*raido;   
     y = seno;
     angulo = i * 1000;
     frame(75);
end

el movimiento es automatico  8)

¿Y esto es para un salto simple? Pero el seno está multiplicando, ¿no? ¿Dónde hay un menos?
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

Futu-block

trastealo, con solo poner un simbolo negativo en donde corresponde se llega a lo que quieres :D


BlySntK

Lo tendré que experimentar, sí. Ya experiementé con las tiles y les voy cogiendo el truco, no es difícil. Ahora sólo me queda el tema de la física... a ver por dónde sale...
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

BlySntK

Bueno, mientras voy experimentando (todavía) con las tiles, no me llega a centrar bien el dibujo en pantalla; mitad sale bien, la otra mitad no. Sale descentrada de su otra mitad. La cuestión es que tengo un fondo (que es un paisaje de un arbol y una casa sin scrollear) con una resolucion de 640x480... qué tamño deberían tener las baldosas para que estuviera todo el dibujo centrado, es decir, no centrado a la pantalla, sino centrado sobre sí mismo, que no salga parte de arriba bien y parte de abajo a un lado... Cada baldosa mide 32x32... decidme, ¿es culpa de la medida?
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

Fede

 No es problema de la resolución de los tiles, ya que ambos son múltiplos de 32.

Seguramente será porque supones que el tile se empieza a imprimir en la coordenada 0x0 y sin embargo lo hace dependiendo del punto de control que tenga asignado.

Si no tienes ninguno, creo que por defecto es el centro del tile.

A mí me pasó algo parecido y era eso.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

BlySntK

Entonces, cada tile tengo que ponerlo en el mismo punto de control? Todos han de estar igual?
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

gecko

Creo que lo que dice es que a todos los tiles tendrias que ponerles el punto de control 0 (el centro) en la coordenada x=0 y=0. O sino tener en cuenta ese offset que vas a tener y posicionar cada tile en X + tilesize / 2

Si se entiende asi rápido, bien. sino trataré de explicarlo mejor en un segundo post.

Saludos!
Torres Baldi Studio
http://torresbaldi.com