Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3808 miembros registrados.
El último usuario registrado es angel.ascanio.

Nuestros miembros han publicado un total de 86157 mensajes en 12277 argumentos.

Coordenadas y variables, una guía rápida para poner puntos de referencia

Ver el tema anterior Ver el tema siguiente Ir abajo

Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por silvanash el 2014-04-13, 20:04


Esta imagen será el guía del tutorial

Buenos días, tardes, noches, momento cronológico que corresponda. Muchas veces, uno se encuentra con la necesidad de trabajar con coordenadas de eventos, y luego se encuentra con que las coordenadas en el Maker son, cuanto menos, crípticas.

¿Cómo funcionan las coordenadas en el Maker? Para empezar, funcionan al revés. Al revés de lo que hemos estado viendo durante toda nuestra vida.

Pensad en un eje cartesiano tradicional, de esos que habremos visto a montones en nuestras clases de matemáticas, con sus funciones y demás parientes (si no habéis tenido estas clases, os estáis perdiendo una parte muy importante de vuestra vida. Id y buscad un eje cartesiano ahora mismo). En el sistema tradicional, existen dos ejes para representar los datos, X e Y. "X" es el eje horizontal, y su valor aumenta de izquierda a derecha. Cuanto más a la derecha estamos, más valor de eje X tenemos. "Y", es el eje vertical, y su valor aumenta de abajo hacia arriba. Cuanto más arriba estamos, más valor de eje Y tenemos.

¿Sencillo, verdad?

Por costumbre, y para salvar neuronas, ambos ejes se cortan en un punto 0. A la derecha de ese punto, el eje X aumenta de valor. A la izquierda, su valor disminuye. Por encima de ese punto, el eje Y aumenta de valor, y por debajo disminuye.


Imagen resumen del eje cartesiano tradicional

Ahora bien, ¿en qué se diferencian las coordenadas del Maker del eje cartesiano típico? En una sola cosa: el eje Y del Maker está invertido con respecto al eje típico. Es decir, que su valor aumenta a medida que descendemos en el eje, y disminuye al ir hacia arriba.


Imagen resumen del eje del Maker

Por lo demás, debemos tener en cuenta el detalle de que el punto 0 del Maker se encuentra en la esquina superior izquierda del mapa. Y con esto acaba la explicación sobre coordenadas del Maker. Fácil, ¿verdad?

No, claro que no. He mentido. Todavía os queda un rato de WoT (Wall of Text) antes de poder trabajar con las coordenadas.

Dejemos las matemáticas (metafóricamente hablando, porque hacer engines sin conocimientos de matemáticas es un suicidio técnico) y adentrémonos en la oscuridad de los comandos del Maker.

Dentro de las operaciones de variables (comando que parece ser menos conocido incluso que el de "operaciones de interruptor") existe la opción de trabajar con valores de coordenadas. Entre los muchos datos que podemos elegir hay uno que figura en el apartado de "evento/sprite". Dentro de ese apartado veremos las opciones de "Coordenada X", "Coordenada Y", "Coordenada de pantalla X", "Coordenada de pantalla Y", "Dirección" y me parece que también "Terreno". Para el caso que estamos trabajando ahora sólo usaremos las opciones de "Coordenada X" y "Coordenada Y".

Bien, planteemos el ejemplo clásico de coordenadas: un sistema de batalla personalizado en el mapa, donde uno pulsa un botón y daña a los enemigos que estén dentro del alcance del ataque. Supondremos que el personaje tiene una lanza o una espada muy larga, y, por lo tanto, puede atacar a enemigos que se encuentren a un máximo de dos tiles de distancia de él.

¿Todo apuntado? Pues empezamos.

El primer desafío al que nos enfrentamos es "¿cómo sabemos las posiciones relativas del personaje y el enemigo?". Bueno, no debería de ser ningún problema establecer las coordenadas del personaje. Acabamos de ver que el Maker puede guardar sus coordenadas en variables.

Variable[1] sustituir evento[personaje] coordenada X
Variable[2] sustituir evento[personaje] coordenada Y

Fijaos bien en qué está guardando cada variable. La variable[1] guarda la posición en el eje X, es decir, su posición en el eje horizontal, derecha o izquierda. La variable[2] guarda la posición en el eje Y, su posición vertical, abajo o arriba.

Sigamos, sigamos. Obviamente, también podemos guardar las coordenadas del enemigo en otras dos variables, y luego trabajar con ello. Sin embargo, existe otra opción: usar las coordenadas del personaje, que ya hemos guardado, y operar con las coordenadas del enemigo.

Por ejemplo:

Variable[1] restar evento[enemigo] coordenada X
Variable[2] restar evento[enemigo] coordenada Y

Mind = blown. ¿Para qué nos sirve hacer esto, si no nos da las posiciones relativas entre personaje y enemigo? Pues... Nos da las posiciones relativas entre personaje y enemigo.

Volvamos atrás:


Imagen resumen del eje del Maker (otra vez)

Todos los eventos que estén en el mapa tienen una coordenada X y una coordenada Y (a menos que hagas cosas raras como movimiento por medio tile o mapear por hexatiles). Analicemos la información que tenemos en las variables.


Referencia rápida del eje X

La variable[1] tiene la posición en el eje X de personaje y enemigo. El eje X medía la distancia con respecto al punto 0, la posición en derecha e izquierda. En la imagen que hemos puesto (perdón, he puesto) tenemos un mapa de ejemplo. Supongamos que el cuadrado es el personaje (PJ) y que el cuadrado con una cruz es el enemigo (Ev1). Lo que hemos hecho antes es guardar la coordenada X del personaje y luego restarle la coordenada X del evento. Pregunta rápida: el resultado de esa operación, ¿es mayor que cero o menor que cero?

Tic, toc, tic, toc.

¡Es menor que cero! Para los que se pregunten cómo es esto posible, les invito a echarle un vistazo a la última imagen. La coordenada X aumenta cuanto más a la derecha estamos del punto 0. En esa imagen, el enemigo está más a la derecha que el personaje, por lo que su coordenada X es mayor. Si a un número le restas una cantidad mayor, su resultado será negativo.

Con números:

Asumamos que el personaje está en el punto 5 del eje X. Su valor de coordenada es obviamente 5. El enemigo está más a la derecha que él, y, por lo tanto, su coordenada X será mayor. Pongamos 8. Si repetimos la operación, tenemos 5 - 8 = -3.

Es decir, que el resultado de esa operación ya nos da algo de información sobre sus posiciones relativas. Nos dice a cuánta distancia están, y en qué lado del personaje están. Si el resultado hubiese sido positivo, el enemigo estaría a la izquierda del personaje, ya que necesitaría una coordenada X menor que la del personaje para conseguir ese resultado.

Ahora bien, ¿y si el resultado hubiese sido cero? Cero exacto, ni menos uno ni más uno. Pensemos... ¿Cómo podemos hacer que una resta dé cero? Lógicamente, restando  un número a sí mismo. 3 - 3 = 0.

De ello se deduce que si la resta resulta igual a cero, el personaje y el enemigo están en la posición X. Un momento, ¿es eso posible? ¡Claro que sí! No debemos olvidar que el Maker trabaja en dos dimensiones. El personaje puede estar en un tile y tener al enemigo en el tile superior. Ambos están en la misma coordenada X, pero su coordenada Y es diferente. Éste es el caso del círculo con respecto al personaje (Ev2 con respecto a PJ).

Y con esto tenemos toda la información que podemos extraer de esa resta: distancia y posición en el mismo eje. Podemos hacer lo mismo con el eje Y, teniendo en cuenta que un valor positivo indica un enemigo por encima del personaje (Y enemigo < Y personaje), y que uno negativo indica un enemigo por debajo del personaje (Y enemigo > Y personaje). El valor 0 implicaría que ambos están en la misma coordenada Y, pero separados en el eje horizontal.

¿Cómo están esas neuronas? ¿Una dosis de cafeína, quizás? Pero creedme is os digo que es más agotador escribir este tutorial que tener que leerlo.

Vamos a combinar toda la información que hemos obtenido. Asumamos un caso simple: queremos que el personaje pueda atacar hacia la derecha, con un rango máximo de dos tiles. ¿Cómo lo hacemos?

Para empezar, si el personaje ataca hacia los lados, el enemigo tiene que estar en el mismo eje que él. ¿Eje X o eje Y? Los que hayan dicho "eje Y" que pasen por el mostrador para reclamar su galleta.

Los que no hayan entendido por qué el eje Y y no el X, pasen a clases suplementarias:


Explicación rápida y visual de posiciones

Imaginad que el círculo es el personaje (imaginad que eso que parece una ostra es un círculo) y que el cuadrado es el enemigo (Ev1). El enemigo está a la derecha del personaje, que es lo que queremos comprobar. ¿Cuál es la coordenada Y de ambos? La misma coordenada Y. Los dos están a la misma distancia del punto 0 si avanzamos hacia debajo. El triángulo, en cambio, está por debajo del personaje, y su coordenada Y es diferente, pese a tener la misma coordenada X.

Pues bien, la primera condición que hemos de comprobar es si la resta de coordenada Y es igual a 0. ¿Lo es? Entonces sigamos.

El personaje sólo puede atacar hacia la derecha. ¿Qué significa esto? Pues que la resta de coordenada X ha de ser menor que cero. La explicación de por qué la escribí unos cuantos párrafos, así que no me detendré para explicarlo otra vez.

La segunda condición, que estará anidada dentro de la primera, es si la resta de coordenada X es menor que 0. ¿Lo es? Pues adelante.

El personaje sólo puede atacar a cosas que estén a un máximo de dos tiles de él. ¿Cómo calculamos esto? Un momento... ¿No tenemos ya la distancia entre el personaje y el enemigo? ¡La tenemos! La variable[1] guarda la posición en el eje X de ambos, y, además, guarda la distancia a la que están. Si el personaje ataca hacia la derecha y tiene un alcance máximo de dos tiles, la variable[1] no puede valer más de 2. ¿No es sencillo?

Los que hayan dicho que sí y tuviesen una galleta, devuélvanla al mostrador. Matemáticas básicas: la variable[1] tiene un valor negativo. Su valor ya es menor que 0, y, por consiguiente, siempre va a ser menor que dos. Cero es menos que dos, ¿correcto?

¿Cómo lo hacemos? Bueno, más matemáticas básicas. Los números negativos tienen invertidos los valores. Un numero negativo tiene más valor cuanto más cerca esté de cero, y menos valor cuanto más lejos está de cero. -1 es mayor que -5.

Apliquemos lógica: ¿cómo comprobamos que la distancia sea menor que 2 cuando el valor es negativo? Pues comprobando si la variable es mayor que -3. ¿Cuántos valores hay mayores que -3? Infinitos. Empezando con -2, siguiendo con -1, pasando a 0, a 1, a 2, y seis trillones y luego ya veremos. Pero, alto ahí. ¿Cuál fue la segunda comprobación que hicimos? Vamos a ver... Si la resta de coordenadas es menor que 0.

¿Cuántos números hay mayores que -3 y menores que 0? Sólo dos: -2 y -1.

¿Qué implica el hecho de que la variable[1] valga -2 ó -1? Que el enemigo está justo a la derecha del personaje, o que el enemigo está a dos pasos a la derecha del personaje.

¿Se han cumplido las tres condiciones? Entonces ya tenemos un sistema que comprueba si el enemigo está a la derecha del personaje, a un máximo de dos tiles de distancia. Y todo esto sólo con dos operaciones de variable.

Pasemos ahora a atacar hacia la izquierda. ¿Cuáles serían las condiciones?

Primera: la resta de coordenada Y es igual a 0.

Segunda: la resta de coordenada X es mayor que 0.

Tercera: la resta de coordenada es menor que 3.

¿Por qué mayor que 0 y menor que 3? Si la variable[1] es mayor que 0, el enemigo está a la izquierda del personaje. Si la variable[1] es menor que 3, la distancia máxima a la que está el enemigo del personaje es de dos tiles.

Los ataques hacia arriba y hacia abajo pueden resolverse invirtiendo los ejes y teniendo en cuenta cuándo usar valores negativos y cuándo positivos. Dado que ya llevo una hora escribiendo este tutorial, creo que no voy a explicar cómo hacerlos.

Edito: esto de guía rápida no tiene nada.

Re-edito: actualizadas las imágenes del post. Ya iba siendo hora.


Última edición por silvanash el 2017-02-13, 11:38, editado 1 vez
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1627

Gracias : 229

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Gatchan el 2014-04-13, 20:17

Suculento...de verdad.
Estaba a punto de preguntar como narices funcionaba el sistema
de coordenadas, ya que me he visto con algunos problemillas de
"colocación" a la hora de elaborar ciertos engines.
Esto resuelve ciertos enigmas propios, aunque la dosis de café tendrá
que ser mayor,hace tanto que deje los pupitres desde ese lado...
me ha parecido muy inspirador, gracias por compartirlo.

¡Salud!
avatar
Gatchan
Iniciado
Iniciado

0/3

Créditos 68

Gracias : 6

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Trequiell el 2014-04-13, 20:49

Buen trabajo Silvanash.
Una lección imprescindible para poder realizar muchos engines.
Muchas gracias por tu tiempo.
avatar
Trequiell
Soñador
Soñador

0/3

Créditos 138

Gracias : 21

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Dariel Lopez el 2014-04-13, 21:17

Matemáticas...lo que daría por entender complétamente esa materia tan importante en la vida(además del dibujo), pero por desgracia para mí mi cerebrito no tiene esa cualidad.
Pero a pesar de mis limitaciones ya entendí algunas cosas que explicaste aquí silvanash, y en cuanto tenga oportunidad practicaré para ver si puedo hacer lo que tengo pensado desde hace tiempo para mi juego, y eso es un sistema de pelea en tiempo real.
Gracias, de verdad muchas gracias por compartir tu conocimiento sobre el tema para tratar de iluminarnos a los que no sabemos utilizar esa parte tan importante del programa llamada Variables.
En serio muchas gracias silvanash.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 586

Gracias : 30

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Wecoc el 2014-04-13, 21:40

Justo hoy de casualidad vi ésto: Variables
Aquí explica un poco más la ventana de de las variables que comentaba silva. Seba solo se dejó de comentar qué es eso de "Resto" aunque tampoco es demasiado importante.
Resto en script se representa así % y es efectivamente el resto de una división. Para refrescaros la memória, cuando hacíais divisiones a mano y no pasábais del número entero, a la "cola" de la división quedaba un número, 0 si era una división exacta y otro si no.
Ese es el resto y es lo que devuelve eso xD

Hecho ese pequeño inciso...

Voy a explicaros la diferencia entre Coordenada X / Y y Pantalla X / Y para seguir con el tutorial.
Coordenada X / Y va por tiles y es la que explicó silva. Los eventos y los tiles en general van por ese tipo de coordenadas. Pero algunas cosas, como las Pictures, van por coordenadas de pantalla, y son mucho más precisas porque no van a nivel de tile sinó a nivel de píxel. Algunos engines más complejos requerirán ese nivel de precisión. La otra diferencia es el scroll. En una mapa grande la posición de todo varía según dónde esté el héroe. Las coordenadas por tile siempre indicarán el mismo tile independientemente de dónde esté mientras que las coordenadas de pantalla siempre estarán en el mismo punto de la pantalla.

El cuadro azul es la Coordenada [5, 7] (lo sé porque en el editor cuando me pongo encima lo pone abajo) y el puntaco naranja es la Coordenada de Pantalla [176, 240] (en éste caso lo sé porque al poner el cursor allí desde un editor de imágenes me marca el valor).
En ambos ejemplos son los mismos valores.

Imagen 1
Imagen 2

El punto no se ha movido respecto a la pantalla mientras que el cuadro no se ha movido respecto el tileset. Espero que se haya entendido xD
avatar
Wecoc
Administrador
Administrador



Créditos 12099

Gracias : 522

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por silvanash el 2014-04-13, 22:48

Empiezo a creer que tengo un acosador que se dedica a poner votos negativos a todos los posts que abro. Eso o alguien tiene problemas para leer las Biblias que voy pariendo.

Otro añadido que se me olvidó poner en el post principal: dirección.

Cuando el Maker guarda la dirección hacia la que está mirando un evento, lo que hace es guardar un número. ¿Qué número? Si alguien tiene un teclado numérico lo podrá averiguar sin muchos problemas.

2, 4, 6 y 8.

Son números que podemos ver rápidamente, y si no tenemos numpad, no es demasiado difícil imaginárselo. Al menos los de Enterbrain fueron lo bastante amables como para poner un sistema de direcciones que los demás pudiésemos recordar, porque podrían haber decidido usar los números del 0 al 3, y cambiar la dirección que representan en cada Maker.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1627

Gracias : 229

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Usuario Oculto el 2014-04-14, 06:13

"Todavía os queda un rato de WoT"  Smile

Muy buena explicación, seguro cuando esté trabajando en el sistema de juego de mi proyecto, tomaré tus lecciones como bases. Por cierto, leí el tutorial entre-dormido, y puedo decir, que me mantuvo en vela. Ahora que no doy más, dormiré, suspendido en mi hamaca, que cuelga del eje X y del eje Y, meciéndome en un sinuoso vaivén de variables iguales a cero.
avatar
Usuario Oculto
Soñador
Soñador

0/3

Créditos 631

Gracias : 14

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por raizin el 2014-04-14, 19:14

emh...
No entendí nada
D:
Y había abierto un tema de cómo funcionaban las variables y me pasaron un link que explicaba..
Entendí y ahora mismo ya me olvidé como funcionaba D:
Makduti cerebro, haciendo que no entienda nada D:

raizin
Soñador
Soñador

0/3

Créditos 200

Gracias : 11

Volver arriba Ir abajo

Re: Coordenadas y variables, una guía rápida para poner puntos de referencia

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.