La propiedad de red es uno de los aspectos más matizados y comúnmente malentendidos del motor de Roblox. Cuando un jugador tiene la propiedad de red de una parte o ensamblado, tiene autoridad completa sobre la simulación física de esos objetos. Por defecto, el servidor otorga la propiedad de red de partes no ancladas a los clientes con personajes de jugador cercanos para distribuir la carga de la simulación física. Este sistema mejora la capacidad de respuesta, pero crea implicaciones de seguridad significativas que cada desarrollador debe entender.
Comprendiendo la propiedad de red
Cuando un cliente tiene la propiedad de red sobre partes (incluyendo su personaje), tiene acceso a:
Manipulación de ensamblados:
- Teletransportarse a cualquier posición.
- Esto se puede usar para ganar rápidamente la propiedad y control de tantas partes y ensamblados no anclados como el servidor lo permita.
- Manipular su movimiento y estado, como volar o cambiar su velocidad.
- Los exploiters pueden establecer su Humanoid WalkSpeed a cualquier valor. Las propiedades se pueden modificar localmente sin activar eventos en el cliente local, y sin que tales cambios de propiedades puedan ser leídos desde scripts locales.
- Reproducir animaciones arbitrarias y manipular el estado de la animación.
- Eludir obstáculos físicos y alterar su colisión.
Manipulación física
- Controlar la posición y rotación de cualquier parte o mecanismo no anclado, incluyendo replicar componentes Inf o NaN en CFrames. Establecer velocidades de partes a valores extremos (incluyendo Inf o NaN), lo que puede interferir con la física de otras partes/ensembles no anclados, incluso aquellos que no son propiedad del exploiter. Esto se usa a menudo para lanzar a otros personajes de jugadores y partes cercanas. Manipular el disparo de eventos Touched, incluyendo no disparar Touched en absoluto.
Si tu experiencia requiere partes o ensamblados completamente no anclados que sean críticos para la jugabilidad, considera usar la API de propiedad de red para establecer manualmente la propiedad o desactivar la propiedad automática.
Validación de movimiento
En experiencias competitivas, la validación del movimiento del jugador del lado del servidor es crucial para la integridad de la simulación, ya que los clientes controlan el movimiento y la física del personaje. Sin embargo, no existe una solución universal debido a la variabilidad de las mecánicas de juego.
Los métodos tradicionales a menudo son insuficientes en escenarios complejos. Cálculos simples de distancia en el tiempo pueden ser suficientes para tiradores competitivos, pero fallan en experiencias intensivas en física que involucran vehículos, vuelo o interacciones complejas. La validación también debe tener en cuenta la latencia de la red.
Hasta que la autoridad del servidor esté disponible, los desarrolladores que implementan la validación del lado del cliente deben entender que los enfoques efectivos varían dramáticamente. Heurísticas básicas pueden marcar a jugadores inocentes con conexiones inestables, y cálculos sencillos de velocidad se descomponen en experiencias con sistemas de movimiento complejos. Las actualizaciones de posición están sujetas a la latencia de Internet, requiriendo promedios a lo largo del tiempo. Muchos desarrolladores encuentran que los acumuladores tipo cubo con fugas funcionan bien para manejar movimientos repentinos mientras previenen violaciones sostenidas.
La implementación práctica a menudo requiere proyectar el movimiento en planos específicos (por ejemplo, XZ para movimiento basado en el suelo) para evitar penalizar el movimiento vertical legítimo mientras se detecta el teletransporte horizontal. Las experiencias con mecánicas de teletransportación legítimas necesitan sistemas de exención explícitos. La frecuencia de validación, los niveles de tolerancia y las estrategias de aplicación deben ajustarse a los requisitos específicos de cada experiencia.