Creo que hace un tiempo lo pregunte. Pero no se explico bien como se conseguía este efecto (o yo no lo entendí). Me refiero paso a paso para aprendices absolutos  XD

Ahora estoy jugando algunos juegos con emuladores. Para inspirarme y tal. Por aquella epoca (juegos años 80/90) se basaban en plataformas, run and gun y shooter maps. Que a la postre, son lo que mas me gustan. Cuando vinieron las consolas de 16/32 bits, ya se empezó con las 3D y me aburrí como un enano. Esta claro que son muy buenos juegos y tienen un enorme público. Pero claro, para gustos los colores.

Viendo esos vídeo juegos de los años 80/90 de la NES, la SNES, MAME, etc...(que algunos son mas difíciles que los actuales  :-[) me gusta el efecto de vídeo scanline. Osea, que no se ve el color plano. Si no, dividido por esas franjas semi invisibles que dividen los pixels.

Algo como esto pero aplicado en Gamemaker: http://www.pixelsmil.com/2011/04/tutorial-anade-scanlines-tus-imagenes.html

Saludos y buenas fiestas!

Mmm creo que la manera más fácil y eficiente de hacerlo sería usando una imagen en formato PNG, en la que dibujes lineas negras, y el espacio entre ellas no tenga ningun color. El tamaño de la imagen dependería del tamaño de tu vista.

El otro método que se me ocurre es usar las funciones para dibujar formas basicas, como draw_line_color o draw_rectangle_color. Un ciclo FOR o REPEAT que vaya dibujando líneas hasta llenar la pantalla con ellas. Creo que este segundo método es menos eficiente o requiere más procesamiento por usar dibujo de formas. Además, no sé si se pueda especificar un alpha para las líneas, no creo que la función image_alpha se pueda usar en este caso (no he usado hasta ahora funciones para dibujar formas).

Pero ambos sistemas que comentas ralentizarían mucho el juego ¿No? En todo caso habrá que preguntarle a Locomalito como lo hace. Ya que en todos sus juegos lo aplica  ???

Cita de: Jangse en Diciembre 21, 2013, 01:46:31 PM
Pero ambos sistemas que comentas ralentizarían mucho el juego ¿No? En todo caso habrá que preguntarle a Locomalito como lo hace. Ya que en todos sus juegos lo aplica  ???

Locomalito usa un PNG, como te dijo penumbra. No es más que una imagen con esas scanlines que la superpone a todos los demás gráficos. Esto no ralentizaría el juego, ya que se trata sólo de una imagen más.
w f t g+


Tienes que crear un objeto controlador, que se encargue de mostrar la imagen. El objeto debe ser persistente para que se mantenga al cambiar de habitación.

La idea de la imagen está bien, pero creo que la densidad de líneas es mucha. Igual puedes usarla como está, pero yo probaría separando un pixel más las líneas o haciendo líneas de dos pixeles de alto en lugar de uno. Las líneas las puedes hacer más oscuras, hasta totalmente negras, pues en GM ajustando el alpha de la imagen se puede controlar la intensidad del efecto de scanlines


Cita de: penumbra en Diciembre 23, 2013, 10:09:27 PM
Tienes que crear un objeto controlador, que se encargue de mostrar la imagen. El objeto debe ser persistente para que se mantenga al cambiar de habitación.

La idea de la imagen está bien, pero creo que la densidad de líneas es mucha. Igual puedes usarla como está, pero yo probaría separando un pixel más las líneas o haciendo líneas de dos pixeles de alto en lugar de uno. Las líneas las puedes hacer más oscuras, hasta totalmente negras, pues en GM ajustando el alpha de la imagen se puede controlar la intensidad del efecto de scanlines

Ok. Siguiendo vuestros consejos y aplicando lo del tutorial (el enlace que puse en el primer mensaje), adjunto unas muestras. El scanline lo he puesto a una opacidad del 75%. Para que no se viera demasiado exagerado. Y con una distancia de un pixel entre lineas. A una configuración de pantalla de 640x480.

Sin scanline:



Con scanline:



Scanline utilizada:



¿Como lo veis?


lineas un poco más separadas, y yo le bajaría el alpha a un 40% - 50%, pero es tu juego

Ahora he bajado la opacidad sobre un 40% y le he aplicado el filtro de luz suave:


El problema quizás es que estás mezclando resoluciones en ese ejemplo, pero sin saber a ciencia cierta qué resoluciones son. Investigando un poco y fijándome bien, y ya que tienes como referente a Locomalito, creo que lo hace de la siguiente manera:

1. Escala toda la pantalla del juego x2.
2. Coloca encima la imagen de las scanlines a una escala x1.

Al menos en Maldita Castilla, creo que es así. Las scanlines que usa Locomalito en Maldita Castilla tienen una diferencia de 1 pixel entre línea y línea, pero al escalar la imagen de todo el juego parece ser que se ve bastante bien.

Todo es cuestión de ir probando. A mí me parece que en la última imagen no se llegan a ver bien las scanlines. Es cierto que no deben ser demasiado bruscas, pero en esa imagen son casi imperceptibles.
w f t g+

Sí, supongo que debe ser la técnica que tu comentas. Porque como bien dices, aún no me acaba de convencer el resultado. Y es verdad, que sus gráficos (de Locomalito, como otros vídeo juegos estilo retro) se ven de pixels mas grandes. Como aumentados. Pero no se como se aplica eso a gamemaker. Es decir, hacer un aumento x2 de nuestro juego y luego aplicar el png de scanlines a tamaño normal. Tendré que ir investigando. Gracias, ya tengo mas pistas!

El escalado x2 se puede hacer con surfaces. No sé cómo lo hará Locomalito, pero yo en mi caso lo haría con surfaces, que es lo más rápido. El problema es que las surfaces no funcionan con todas las tarjetas gráficas, las más antiguas no son capaces de dibujarlas correctamente.

Aquí tienes el enlace al manual: http://www.comunidadgm.org/manual_GM/Dibujando_superficies.htm
En tu caso, la función que necesitas es draw_surface_stretched. Es cuestión de ir jugando con esa función.

Como soy tan mala persona, voy a dejar que investigues por tu cuenta y que lo intentes por ti mismo :P
w f t g+