Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Cómo viajar de una room a varias rooms  (Leído 916 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Clamud

en: Noviembre 24, 2014, 08:56:02 pm
Hola, buen día.

Quiero consultarlos para saber qué técnicas se pueden usar para pasar a una room determinada dependiendo de la salida que se tome en la room actual. Ejemplos: como lo que hacen las tuberías en Super Mario Bros. y las puertas en Metroid.

Lo que yo he hecho es poner objetos como salidas y en cada instancia he agregado un "Creation code" definiendo la room de destino y las coordenadas iniciales en la room de destino (porque algunas rooms tienen muchas entradas). Pero a veces es complicado hacer modificaciones a las rooms porque al cambiar la posición de una entrada hay que hacer varias modificaciones a las posciones de las salidas y a los creation codes de la room que conecta con la otra.

¿Qué métodos han usado? ¿cuáles me recomiendan?
Gracias.
« última modificación: Noviembre 25, 2014, 02:23:44 am por Clamud »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Xizotono

  • Adicto
  • *
  • Puntos: 391
  • Mensajes: 363
    • Ver Perfil
Respuesta #1 en: Noviembre 24, 2014, 09:25:00 pm
Prueba a tener un obj_teleports (por ejemplo) que sea persistente y que indique todas las rooms. Usa el evento STEP y pon algo tipo :
if obj_player.x = COORDENADAX and obj_player.y = COORDENADAY { room_goto() }

Eso limitaria a una sola instancia en vez de muchas para cada salida. Puede ser un poco lioso la colocacion pero bueno, no se me ocurre alguna otra forma que incluya pocos objetos xP

 


Desconectado TheSandBoxMKG

  • Adicto
  • *
  • Puntos: 497
  • Mensajes: 404
  • Sexo: Masculino
  • Estoy aquí perdiendo tiempo.
    • Ver Perfil
    • MkG GameDev
Respuesta #2 en: Noviembre 25, 2014, 03:46:15 am
que al telestransportarse a otra room, se telestransporte a un determinado objeto algo asi como x=obj.x


Desconectado Xizotono

  • Adicto
  • *
  • Puntos: 391
  • Mensajes: 363
    • Ver Perfil
Respuesta #3 en: Noviembre 25, 2014, 07:24:00 am
que al telestransportarse a otra room, se telestransporte a un determinado objeto algo asi como x=obj.x

Eso es lo normal pero serian demasiados objetos ¿no?

 


Desconectado TheSandBoxMKG

  • Adicto
  • *
  • Puntos: 497
  • Mensajes: 404
  • Sexo: Masculino
  • Estoy aquí perdiendo tiempo.
    • Ver Perfil
    • MkG GameDev
Respuesta #4 en: Noviembre 25, 2014, 05:19:15 pm
que al telestransportarse a otra room, se telestransporte a un determinado objeto algo asi como x=obj.x

Eso es lo normal pero serian demasiados objetos ¿no?

sip, pero al usarlo en el editor de rooms, es más facil de cambiar (con solo mover el objeto ya lo tenés). También podés usar objetos con parámetros.


Desconectado Marron121

  • Adicto
  • *
  • Puntos: 564
  • Mensajes: 357
  • Sexo: Masculino
    • Ver Perfil
Respuesta #5 en: Noviembre 25, 2014, 05:41:26 pm
Si quieres tener un solo objeto para que cambie a todas las rooms, sigue el consejo de Xizotono:
Prueba a tener un obj_teleports (por ejemplo) que sea persistente y que indique todas las rooms. Usa el evento STEP y pon algo tipo :
if obj_player.x = COORDENADAX and obj_player.y = COORDENADAY { room_goto() }

Para que tengas una idea de como hacerlo, sería ir poniendo todo el rato el código de arriba, aunque seguro que hay maneras más eficientes de hacerlo XD

Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí
 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2489
  • Mensajes: 2.049
  • Agradecido: 92 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #6 en: Noviembre 25, 2014, 06:06:43 pm
yo lo que hago es en un solo objeto, en la colisión del player poner:
room_goto(rm);

y en la room, cuando pongo el objeto, en el creation code de cada uno pongo un:
rm = rm_level3; //por ejemplo

ten en cuenta que de esta misma manera, puedes poner en un objeto en el evento game start (obviamente que esté en la primera room del juego):
global.xspawn = 0;
global.yspawn = 0;


y en el mismo lugar del creation code donde se pone lo del rm= tal... manipulas esos dos globals, entonces en el create del player, le asignas:
x = global.xspawn;
y = global.yspawn;

y de esta manera puedes tener salidas y entradas por cualquier parte de la room, encajandolas de esta manera para hacer el típico juego que va por salas, todo esto más la casilla persistent en las rooms, pueden hacer maravillas *_*

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado penumbra

Respuesta #7 en: Noviembre 25, 2014, 06:56:51 pm
Considerando la manera en que GM maneja las habitaciones y lo que pretendes hacer, no creo que haya un método mejor que el que ya usas (a lo mejor se puede pulir). Ese método da el mejor control para tener distintos "portales" a distintas habitaciones. Yo uso lo mismo en "Clan de la luz", ya que en ciertos casos una habitación puede conectar con otra arriba, otra abajo y dos más a los lados o incluso con habitaciones "distantes" como las habitaciones de teletransportación de Castlevania.

No sé exactamente a qué te refieres con que al cambiar la posición de una entrada se tiene que modificar algo en la salida. Creo que eso depende de cómo hayas implementado la transportación.

Seguro hay otros métodos para hacerlo sin ajustar variables en CREATION CODE, pero me imagino que dependen de usar mucho IF o SWITCH/CASE, lo cual no me agrada mucho.

 


Desconectado Clamud

Respuesta #8 en: Noviembre 25, 2014, 07:17:09 pm
Gracias por las respuestas.

Me agrada la idea de tener un sólo objeto que tenga los códigos necesarios para todas las habitaciones, claro que es necesario, para que funcione, tener ya un diseño de los niveles bastante sólido.

Lo que pasa es que muchas veces me complico la vida tratando que los motores de mis juegos sean totalmente automáticos. Me gustaría que hubiese un modo gráfico de programar las interconexiones de niveles, y ya tengo una idea para hacerlo:
Definir un array 2D con la posición de las habitaciones en el mundo del juego, y que el personaje además de tener unas coordenadas relativas a la room también tenga una coordenadas relativas al mundo, así cuando el personaje salga de una room va a entrar en otra room que abarque las coordenadas "mundiales" que lleva. Con éste método no sería necesario detectar una colisión para transportarse a otra room. Claro que sería mas funcional en algunos juegos que en otros.

Voy a hacer pruebas con varios métodos para ver cuál me gusta más.

 


Desconectado TheSandBoxMKG

  • Adicto
  • *
  • Puntos: 497
  • Mensajes: 404
  • Sexo: Masculino
  • Estoy aquí perdiendo tiempo.
    • Ver Perfil
    • MkG GameDev
Respuesta #9 en: Noviembre 25, 2014, 07:36:05 pm
Gracias por las respuestas.

Me agrada la idea de tener un sólo objeto que tenga los códigos necesarios para todas las habitaciones, claro que es necesario, para que funcione, tener ya un diseño de los niveles bastante sólido.

Lo que pasa es que muchas veces me complico la vida tratando que los motores de mis juegos sean totalmente automáticos. Me gustaría que hubiese un modo gráfico de programar las interconexiones de niveles, y ya tengo una idea para hacerlo:
Definir un array 2D con la posición de las habitaciones en el mundo del juego, y que el personaje además de tener unas coordenadas relativas a la room también tenga una coordenadas relativas al mundo, así cuando el personaje salga de una room va a entrar en otra room que abarque las coordenadas "mundiales" que lleva. Con éste método no sería necesario detectar una colisión para transportarse a otra room. Claro que sería mas funcional en algunos juegos que en otros.

Voy a hacer pruebas con varios métodos para ver cuál me gusta más.
No te olvides de probar lo que te dije de usar objetos (un modo gráfico):
que al telestransportarse a otra room, se telestransporte a un determinado objeto algo asi como x=obj.x


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2489
  • Mensajes: 2.049
  • Agradecido: 92 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #10 en: Noviembre 26, 2014, 04:24:12 pm
el mismo método que te dije yo, lo puedes automátizar poniendo lo del creation code, en el mismo step detectando qué zona tiene su X y su Y, nada más, así solo has de poner el objeto :P

"ola k ase clickarme o k ase"
la imagen no se quita xD