La propriété réseau est l'un des aspects les plus nuancés et souvent mal compris du moteur Roblox. Lorsqu'un joueur possède la propriété réseau d'une pièce ou d'un assemblage, il a une autorité totale sur la simulation physique de ces objets. Par défaut, le serveur accorde la propriété réseau des pièces non ancrées aux clients dont les personnages sont proches pour répartir la charge de la simulation physique. Ce système améliore la réactivité mais crée des implications de sécurité significatives que chaque développeur doit comprendre.
Comprendre la propriété réseau
Lorsqu'un client a la propriété réseau sur des pièces (y compris leur personnage), il a accès à :
Manipulation des assemblages :
- Se téléporter à n'importe quelle position.
- Cela peut être utilisé pour obtenir rapidement la propriété et le contrôle de toutes les pièces non ancrées et des assemblages que le serveur autorisera.
- Manipuler leur mouvement et leur état, comme voler ou changer leur vitesse.
- Les exploitants peuvent régler leur Humanoid WalkSpeed sur n'importe quelle valeur. Les propriétés peuvent être modifiées localement sans déclencher d'événements sur le client local, et sans que de telles modifications de propriété puissent être lues depuis des scripts locaux.
- Jouer des animations arbitraires et manipuler l'état d'animation.
- Contourner des obstacles physiques et modifier leur collision.
Manipulation de la physique
- Contrôler la position et la rotation de toutes les pièces ou mécanismes non ancrés, y compris la réplication de composants Inf ou NaN dans CFrames. Définir des vitesses de pièces à des valeurs extrêmes (y compris Inf ou NaN), ce qui peut interférer avec la physique d'autres pièces/assemblages non ancrés, même ceux qui ne sont pas possédés par l'exploitant. Cela est souvent utilisé pour projeter d'autres personnages de joueurs et des pièces proches. Manipuler le déclenchement des événements Touched, y compris ne pas déclencher Touched du tout.
Si votre expérience nécessite des pièces ou des assemblages entièrement non ancrés critiques pour le gameplay, envisagez d'utiliser l'API de propriété réseau pour définir manuellement la propriété ou désactiver la propriété automatique.
Validation du mouvement
Dans les expériences compétitives, la validation côté serveur du mouvement des joueurs est cruciale pour l'intégrité de la simulation, car les clients contrôlent le mouvement du personnage et la physique. Cependant, il n'existe pas de solution universelle en raison des mécaniques de gameplay variées.
Les méthodes traditionnelles échouent souvent dans des scénarios complexes. Des calculs simples de distance sur le temps peuvent suffire pour des tireurs compétitifs mais échouent dans des expériences intenses en physique impliquant des véhicules, des vols ou des interactions compliquées. La validation doit également tenir compte de la latence réseau.
Jusqu'à ce que l'autorité serveur soit disponible, les développeurs mettant en œuvre la validation côté client doivent comprendre que les approches efficaces varient considérablement. Des heuristiques de base peuvent signaler des joueurs innocents avec des connexions instables, et des calculs de vitesse simples échouent dans des expériences avec des systèmes de mouvement complexes. Les mises à jour de position sont soumises à la latence Internet, nécessitant une moyenne dans le temps. De nombreux développeurs trouvent que les accumulateurs de style seau fuyant fonctionnent bien pour gérer des mouvements de surcharge tout en empêchant des violations soutenues.
L'implémentation pratique nécessite souvent de projeter le mouvement sur des plans spécifiques (par exemple, XZ pour le mouvement au sol) afin d'éviter de pénaliser les mouvements verticaux légitimes tout en détectant la téléportation horizontale. Les expériences avec des mécaniques de téléportation légitimes nécessitent des systèmes d'exemption explicites. La fréquence de validation, les niveaux de tolérance et les stratégies d'application doivent être ajustés en fonction des exigences spécifiques de chaque expérience.