Hola Makeros:
Hace rato no pasaba por acá, pero estoy enrolado en un proyecto que requiere tiempo junto a mi trabajo.
Tengo un problema que quizás me ayuden a resolver.
En mi proyecto tengo un "background" y algunos objetos en pantalla. Durante el evento "steps" de un objeto yo creo una "surface" y comienzo a dibujar sobre ella una copia de todo lo que existe en mi juego ("room"). Uno de los elementos que dibujaré lo recorto de la "surface" para dejar un agujero con su forma, utilizando draw_set_alpha(1)
draw_set_blend_mode(bm_subtract)
Luego creo un "sprite" del tamaño del "room" para dibujar en él todo lo dibujado en la superficie, incluyendo el agujero. El siguiente paso es dibujar ese sprite sobre todo lo que existe en mi "room". Este proceso se debe realizar en cada "step" como mínimo.
Mi problema es que el rendimiento del juego disminuye drásticamente y quería saber si eso se puede mejorar de alguna forma. Sé que es poco eficiente de esa manera pero pregunto por si alguien pudiera tener algún truco bajo la manga para optimizar...Mi GM es el 8.0
Gracias de antemano a todos y todas...
Creo que no hay una solución definitiva para mejorar el rendimiento, cuando se usan surfaces el rendimiento varía mucho dependiendo de la tarjeta gráfica que tiene la computadora.
Tal vez esto funcione: Para no crear el sprite podrías dibujar en el evento Draw directamente a la superficie, como en este ejemplo:
http://www.comunidadgm.org/preguntas-y-respuestas/efecto-desenfoque-radial/ (http://www.comunidadgm.org/preguntas-y-respuestas/efecto-desenfoque-radial/)
Saludos makero Clamud:
Muchas gracias por orientarme en buena dirección en cuanto a mi problema. La solución que me muestran parece ser buena, pero no tengo GM 8.1 para poder ver el código de los ejemplos...
Si alguien me pudiera ayudar....
Gracias....
Cómo creas el sprite? Gestionar recursos es un proceso costoso y eso añadido a todo el código de dibujo de las superficies estará ayudando a bajar el rendimiento. Pon todo el código implicado y le echamos un vistazo, seguro q hay alguna forma de mejorar el rendimiento ;)
En las "local options" (una cosa así se llama) en la cosa de priority de das a hight y e' rendimiento subirá. (Pero los demás programas se pondrán más lentos)
:)
La cosa de local options esta arriba de la cosa de info :)
Saludos Makero VisualGames:
Cita de: VisualGames en Marzo 29, 2016, 06:34:12 PM
En las "local options" (una cosa así se llama) en la cosa de priority de das a hight y e' rendimiento subirá. (Pero los demás programas se pondrán más lentos)
:)
La cosa de local options esta arriba de la cosa de info :)
¿Estás refiriéndote a la versión 8.0 de Game Maker?
Disculpa, pero GM 8.0 es la versión que tengo...
Creo que se refiere a las opciones que están en
Global Game Settings » Other » Game Process Priority
nunca las he usado, así que no se si de verdad funcionan.
Cita de: Clamud en Marzo 30, 2016, 05:37:38 AM
Creo que se refiere a las opciones que están en
Global Game Settings » Other » Game Process Priority
nunca las he usado, así que no se si de verdad funcionan.
A eso mismo me refiero :B Aunque no te recomiendo tocar eso cuando tu juego no pide casi nada :p Ya que estarias ralentizando las demas aplicaciones abiertas para poder correr mejor el juego jeje
Al cerrar la aplicacion del juego la velocidad volverá :d
Saludos Makeros:
Muchas gracias a los makeros "Clamud", "VisualGames" y "correojon". Ya resolví el problema por el momento. :love:
Lo que hice fue dejar de crear el "sprite" final donde se dibujaban todas las superficies y se dibujaba finalmente en pantalla.
Al parecer el código de crear y destruir un "sprite" unas 30 veces por segundo es muy ineficiente. :-[
Un abrazo de Ferhand.... ;D