Ir al contenido

Por Qué RenderTemplate Está Vacío

En el último capítulo encontraste RenderTemplate dentro de tu Part transformada. Se parecía a tu Part pero despojada. Anchored configurado en true. CanCollide configurado en false. La mayoría de sus hijos eliminados. Prometimos explicar por qué. Este es ese capítulo.

La razón es la velocidad.

Cuando el motor emite una partícula, hace lo siguiente:

  1. Toma el RenderTemplate.
  2. Lo duplica (la operación subyacente de Roblox Instance:Clone()).
  3. Coloca el duplicado en algún lugar del mundo (veremos dónde en el capítulo 6).
  4. Entrega el duplicado a la simulación, que anima su color, tamaño, posición, entre otras cosas durante la duración del tiempo de vida de la partícula.
  5. Cuando el tiempo de vida termina, destruye el duplicado.

El segundo paso de ese bucle — la duplicación — se ejecuta tantas veces por segundo como hayas configurado el Rate. Un emisor de fuego típico podría ejecutarse a 30 partículas por segundo. Una ráfaga de confeti podría disparar 500. Un efecto pesado podría alcanzar 1.000.

Duplicar una instancia de Roblox es rápido cuando no hay nada dentro. Un Part vacío le toma casi nada de tiempo al motor. Un Part con un SpecialMesh, cuatro Attachments, dos Decals y un Trail hijo tarda más — el motor tiene que duplicar cada hijo también, y cada duplicado consume CPU real + memoria mientras está activo. El costo se acumula de forma aproximadamente lineal: diez hijos adicionales significa aproximadamente diez veces el CPU por partícula y aproximadamente diez veces la memoria que cada clon ocupa.

Si RenderTemplate fuera una copia completa de tu Part — con todos los hijos incluidos — entonces cada emisión cargaría con ese coste. A 1.000 emisiones por segundo, la diferencia entre una plantilla vacía y una plantilla con seis hijos es la diferencia entre un efecto fluido y un tartamudeo.

Por eso el plugin lo mantiene vacío por defecto. La emisión sigue siendo económica.

Puedes llenar el RenderTemplate si lo deseas. Hay buenas razones para hacerlo:

  • Un mesh hijo que debería viajar junto a cada partícula. Coloca un MeshPart dentro del RenderTemplate y cada partícula emitida tendrá su propia copia.
  • Un emisor anidado. Un elemento transformado colocado dentro del RenderTemplate emitirá desde cada partícula mientras vuela. Cubriremos el anidamiento en Hidden Depths.
  • Un attachment con su propio trail. Cada partícula obtiene su propio trail, dibujado detrás de ella mientras se mueve.

Cualquier cosa que pongas dentro, el costo de duplicación crece con ello. El plugin no te advertirá. Tu tasa de fotogramas te lo dirá.

Para el trabajo del día a día que harás — color, tamaño, brillo, transparencia, movimiento — esos valores viven en el panel de propiedades, no en el Part fuente. Edítalos a través del panel; el código de emisión del plugin los lee desde la configuración y los aplica a cada clon en el momento de la emisión. El Part fuente es principalmente una forma que el plugin clona; no necesitas tocar sus propiedades estándar de Roblox para cambiar el aspecto de las partículas.

La posición del Part fuente es el ancla de generación. Arrastra el Part fuente en Studio y las partículas se emitirán desde donde esté ubicado en ese momento — el plugin lee part.CFrame en el instante de cada emisión, así que no hay nada que mantener sincronizado. El CFrame propio del RenderTemplate no importa para la posición de generación; solo importa el del Part fuente.

Para cambios de propiedades en el lado del Part fuente que no sean de posición (cambio de mesh, cambio de material directamente en el Part fuente), el RenderTemplate no se actualiza automáticamente. Haz clic en Transform nuevamente para actualizar la plantilla — o, para las propiedades que el panel expone, edita a través del panel y el plugin enruta el cambio correctamente.

Solo entras dentro del RenderTemplate cuando específicamente quieres un clon con hijos (por las razones anteriores).

Entonces, ¿cómo decide una partícula qué hacer — qué color tener en un momento dado, qué tamaño, qué tan rápida, cuándo morir? Cada una de esas es una propiedad que configuras en el panel. El siguiente capítulo recorre los cinco tipos de propiedad que encontrarás allí.