Elige un objeto repetido y mídelo.
Crea una escena repetible que dispare el mismo patrón de proyectiles durante un tiempo determinado. Observe la frecuencia de fotogramas y la actividad de asignación con las herramientas de creación de perfiles del navegador antes de introducir un grupo. Compare la misma escena después, manteniendo constante el número de proyectiles y el comportamiento. Si el problema medido es, en cambio, un dibujo costoso, una decodificación de imágenes o un trabajo de colisión, la reutilización de objetos no solucionará esa causa. MDN explica que JavaScript asigna objetos automáticamente y utiliza la recolección de basura, por lo que un grupo es una opción de diseño para probar en lugar de una optimización obligatoria.
Agrupe en un pool objetos de un mismo tipo cuyo estado inactivo sea sencillo. Un proyectil puede regresar al pool de objetos después de abandonar la arena o golpear una pared; un jefe longevo con fases de evolución es una opción menos obvia. Establezca un tamaño máximo de grupo o una opción de desbordamiento definida para que una ráfaga no pueda hacer crecer el grupo silenciosamente y sin límites.
Completar la activación y el restablecimiento
Al activarse, establezca la posición, la velocidad, la vida útil, los indicadores de colisión, el propietario y el estado visual de la nueva solicitud. Al desactivarla, elimine la entidad de las listas de colisiones y dibujos activas exactamente una vez. Una partícula reutilizada con una opacidad antigua puede destellar en el lugar equivocado; un proyectil que retiene a su dueño anterior puede otorgar puntuación a una fuente anterior. Mantenga la lógica de reinicio en una función y enumere todos los campos mutables.
Prueba de reutilización, agotamiento y limpieza de escena.
Active, desactive y reutilice la misma ranura varias veces, luego verifique que todas las propiedades coincidan con un ejemplo recién inicializado. Agote el pool deliberadamente y verifique la política elegida: asigne un objeto temporal, elimine un efecto cosmético o limite los eventos del juego de la manera que las reglas lo permitan. Ingrese y salga de la escena y asegúrese de que las entidades agrupadas de una ronda anterior no puedan permanecer activas en la nueva.
Preguntas sobre juegos de navegador de agrupación de objetos
¿La agrupación de objetos siempre hace que los juegos de JavaScript sean más rápidos?
No. Agrega trabajo de gestión y sólo ayuda a un cuello de botella al que realmente afecta. Mida una escena repetible antes y después y mantenga la ruta de asignación más simple si la agrupación agrega complejidad sin un resultado útil.
¿Cuál es el error de restablecimiento del grupo más común?
Un objeto reutilizado conserva un campo de su vida anterior, como la velocidad, la vida útil, el propietario o la visibilidad. Centralice la activación y el restablecimiento, luego ejerza la reutilización repetida en las pruebas.
Más información
¿Has visto algo desactualizado? Notificar una corrección