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: Información De Las Surfaces  (Leído 692 veces)

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

Desconectado jhgv

  • Habitual
  • *
  • Puntos: 63
  • Mensajes: 30
  • Sexo: Masculino
    • Ver Perfil
en: Octubre 01, 2019, 04:57:48 am
Hola, Leí un poco en el manual de gms sobre las surfaces pero no entiendo bien que se hacen con ellas... si alguien me puede explicar variables y funciones basicas de estas estaría genial :c y pues no se nada de ellas asi que también el concepto y que se pueden lograr [si adjuntaran archivos estaria genial] Gracias de antemano

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado RzCpGames

Respuesta #1 en: Octubre 01, 2019, 10:47:31 am
Hermano, las surfaces son como un lienzo vacio, puedes dibujar en ellas y tenerlas guardadas, y en cualquier momento mostrarlas en la pantalla.

Para que me entiendas mejor, el uso que yo le di a las surfaces fue para una caja de texto. Revisa mi pregunta posteada en este mismo foro: https://www.comunidadgm.org/preguntas-y-respuestas/ayuda-con-caja-de-texto-(solucionado)/

quizas en algun momento te toque un problema parecido en tu juego, y cuando hagas una prueba de las surfaces se te ocurriran muchas situaciones en donde puedes aplicarlos.

espero te sirva, un saludo

 
Los siguientes usuarios dieron las gracias a este tema: jhgv


Desconectado Black_Cat

Respuesta #2 en: Octubre 01, 2019, 08:09:03 pm
holis (?
amigo, las surfaces sirven para dibujar. Estuve por ahi leyendo que querés aplicarlas a una entrada de texto... hmm desde ya, usar surfaces no es la mejor manera. Ni la optima. Lo suyo seria manejar con funciones de cadena.

ahora, las surfaces como bien dice el amigo de arriba, son para dibujar, es como un lienzo. Y ahi podes hacer varios efectos combinando funciones que alteran el mezclado, por ejemplo par ahacer un sprite totalmente blanco o sacarle los colores a un sprite y dejarlo blanco y negro, o hacer el efecto de congelado. Un montonazo de cosas, pero tiene un cierto coste tanto de memoria como de procesamiento dependiendo ya de que tan vergas te pongás con el efecto.
hoy por hoy existen los shaders, que sirve tambien para aplicar efectos de dibujo y es más optimo. Pero asi tambien, lleva un poco de complejidad manejarlas.

bueno, las funciones basicas que necesitas saber para crear  y dibujar una surface son:

surface_crate(ALTO, ANCHO)-> crea una surface con el alto y ancho indicado. Osea, crea un lienzo de tal tamaño para poder dibujar en el. Cabe destacar que uno no vé directamente lo que se dibuja sino que lo hace a traves de codigo.
Otra cosa notables es que la surface tiene posicion absoluta, osea, siempre aparece en la coordenada 0,0. Esto hay que tenerlo en cuenta a la hora de dibujar
surface_free(SURFACE)-> esto borra la surface, es imprescindible borrar la surface si no se usa mas, porque ocupa memoria RAM, si no se borra se iría acumulando hasta que explote la pila de memoria y haga overflow.
surface_set_target(SURFACE)-> esta funcion pone a SURFACE como blanco de dibujo. Osea, todo el codigo de dibujo que siga despues de esta funcion, se aplica encima de la surface.
Ejemplo:

surf = surface_create(200,200); //se crea el lienzo de 200x200
surface_set_target(surf); //colocamos la surface para que las funciones de dibujo le afecten
draw_set_text(20, 20, "hola amigos de youtube!"); //la posicion es absoluta
surface_reset_target();
surface_reset_target(); -> hace que las secuencias de dibujo dejen de aplicarse a la surface antes definida con surface_get_target, y entonces las funciones de dibujo se aplican normalmente en la pantalla del juego

eso seria lo mas facil para comenzar a dibujar algo.
A grandes rasgos es como usar el evento draw solo que en un lienzo acotado :)
de ahi hay hartos efectos que le podes poner, pero bueno, eso pa otro tutorial(?

Únete al servidor mas chidori de Discord

 
Los siguientes usuarios dieron las gracias a este tema: Johann


Desconectado jhgv

  • Habitual
  • *
  • Puntos: 63
  • Mensajes: 30
  • Sexo: Masculino
    • Ver Perfil
Respuesta #3 en: Octubre 01, 2019, 10:42:37 pm
holis (?
amigo, las surfaces sirven para dibujar. Estuve por ahi leyendo que querés aplicarlas a una entrada de texto... hmm desde ya, usar surfaces no es la mejor manera. Ni la optima. Lo suyo seria manejar con funciones de cadena.

ahora, las surfaces como bien dice el amigo de arriba, son para dibujar, es como un lienzo. Y ahi podes hacer varios efectos combinando funciones que alteran el mezclado, por ejemplo par ahacer un sprite totalmente blanco o sacarle los colores a un sprite y dejarlo blanco y negro, o hacer el efecto de congelado. Un montonazo de cosas, pero tiene un cierto coste tanto de memoria como de procesamiento dependiendo ya de que tan vergas te pongás con el efecto.
hoy por hoy existen los shaders, que sirve tambien para aplicar efectos de dibujo y es más optimo. Pero asi tambien, lleva un poco de complejidad manejarlas.

bueno, las funciones basicas que necesitas saber para crear  y dibujar una surface son:

surface_crate(ALTO, ANCHO)-> crea una surface con el alto y ancho indicado. Osea, crea un lienzo de tal tamaño para poder dibujar en el. Cabe destacar que uno no vé directamente lo que se dibuja sino que lo hace a traves de codigo.
Otra cosa notables es que la surface tiene posicion absoluta, osea, siempre aparece en la coordenada 0,0. Esto hay que tenerlo en cuenta a la hora de dibujar
surface_free(SURFACE)-> esto borra la surface, es imprescindible borrar la surface si no se usa mas, porque ocupa memoria RAM, si no se borra se iría acumulando hasta que explote la pila de memoria y haga overflow.
surface_set_target(SURFACE)-> esta funcion pone a SURFACE como blanco de dibujo. Osea, todo el codigo de dibujo que siga despues de esta funcion, se aplica encima de la surface.
Ejemplo:

surf = surface_create(200,200); //se crea el lienzo de 200x200
surface_set_target(surf); //colocamos la surface para que las funciones de dibujo le afecten
draw_set_text(20, 20, "hola amigos de youtube!"); //la posicion es absoluta
surface_reset_target();
surface_reset_target(); -> hace que las secuencias de dibujo dejen de aplicarse a la surface antes definida con surface_get_target, y entonces las funciones de dibujo se aplican normalmente en la pantalla del juego

eso seria lo mas facil para comenzar a dibujar algo.
A grandes rasgos es como usar el evento draw solo que en un lienzo acotado :)
de ahi hay hartos efectos que le podes poner, pero bueno, eso pa otro tutorial(?

ERES LA MEJOR! (O EL) acabo de entender lo que me habian dicho en otro lado... osea que si dibujo un rectángulo y ese rectangulo se sale de la surface no se dibujara ¿Cierto? osea las surfaces son como las capas de photoshop :O GRACIAS! oye que tanta memoria gasta? q eso es que le tengo miedo... por que  asi no vale la pena hacer la scrollbar... ¿no tienes un proyecto donde hayas utilizado algo asi?


otra cosilla jeje ¿como le cambio las coordenadas? ¿necesarios?

 


Desconectado Black_Cat

Respuesta #4 en: Octubre 01, 2019, 11:25:13 pm
Exacto, vendria a ser como una capa en el photoshop, lo que se dibuje fuera no se ve.
ahora, lo que ocupe de memoria ps, eso ya no sé, depende mucho del tamaño de las dimensiones del lienzo. y de la plataforma en la que se ejecute el juego, por ejemplo las PC de escritorio son los suficientemente potentes para albergar mucha memoria ram y guardar varias surfaces, pero por ejemplo, un telefono android, la verdad que queda bastante por debajo.

las coordenadas en la surface no se pueden cambiar.
lo que si se puede cambiar, es al momento de dibujarla en pantalla con draw_surface:
https://docs.yoyogames.com/index.html?page=source%2Fdadiospice%2Findex.html

que de hecho es la funcion mas importante XD sino no se verá nada

Únete al servidor mas chidori de Discord