buenas, estuve pensando que si tienes un room muy grande lleno de objetos solidos con los cuales el personaje principal colisiona,

entonces el evento colision con este objeto solido, del personaje principal va a estar iterando siempre entre todos aquellos objetos que existan para poder colisionar?, si es asi, no seria mejor establecer una funcionalidad para que colisione solamente en aquellos objetos solidos que estan dentro de la room, para ahorrar proceso?


cabe aclarar que desconozco a ciencia cierta la funcionalidad del evento colision con respecto a los objetos solidos en un room
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Una solución o método que se usa en esos casos es desactivar las instancias que queden fuera de la view, para liberar carga del CPU. El evento de colisión no se llama si no se produce colisión, aunque internamente GMS debe revisar cuándo se produce una colisión, no sé exactamente cuánto cueste esto a nivel de CPU, pero no creo que sea mucho en la mayoría de los casos.

instance_deactivate_region()
http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/deactivating%20instances/instance_deactivate_region.html

#2 Noviembre 25, 2014, 05:22:05 PM Ultima modificación: Noviembre 25, 2014, 08:46:15 PM por TheSandBoxMKG
Otra cosa es dejar de rellenar con sólidos los espacios que el player nunca tocará (por ejemplo adentro de la paredes). (al menos que el player se bugee  XD)

EDIT: También, usá !place_free(x,y) para colisionar con sólidos en vez de usar el evento de colisión. (Si le agregás el hspeed/vspeed, mejor)

Ejemplo:
if !place_free(x+hspeed,y+vspeed) then {
move_contact_solid(direction,12)
vspeed=0
}


EDIT2: Usá Sólidos grandes si podés. También podés simplificar la colisión de los sólidos, cambiandole la mask por square. También podés usar tiles.

gracias, y que piensan de checar las colisiones en el evento step, con aquellos objetos solidos que estan cercanos al personaje,

es decir, solamente checar y procesar aquellos objetos que se encuentren dentro de un espacio y linea de colision?
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Cita de: somnus en Noviembre 25, 2014, 09:49:55 PM
gracias, y que piensan de checar las colisiones en el evento step, con aquellos objetos solidos que estan cercanos al personaje,

es decir, solamente checar y procesar aquellos objetos que se encuentren dentro de un espacio y linea de colision?

Línea de colisión? Ahí ya estás checando todos los sólidos. las soluciones que propusimos son mejores :P