Aller au contenu

Tests du monde et des outils en jeu

La recette véhicules doit contrôler sélection F10, catégories, verrou/ouvrants, safe position, destruction, restore/despawn/delete, absence de doublon au restart et placement des serruriers.

Les zones, agences, portes et sélections d'entités du domaine immobilier sont détaillées dans Tests immobilier et bâtiments.

Les scénarios complets de placement, streaming et interaction des établis sont décrits dans Tests du crafting. Vérifier notamment les distances stockage/machine et le retrait différentiel des props décommissionnés.

ADM-UI-001 — Navigation hiérarchique et style AR

Prérequis : Founder, puis des rôles ne possédant chacun qu'une partie des permissions de modération, personnages, inventaires et World Edit.

  1. Ouvrir F10 et parcourir les sections principales Administration et World Edit.
  2. Ouvrir successivement chaque sous-section visible et déclencher son actualisation ou une action non destructive.
  3. Rejouer avec les rôles partiels, puis en 1920×1080, 1280×720 et format ultralarge.
  4. Vérifier navigation clavier, focus, survol, réduction des animations et fermeture du panneau.

Attendu : seules les sections et sous-sections autorisées apparaissent ; chaque sous-section occupe un onglet exclusif sans contenu empilé et conserve toutes ses actions historiques. Le monde reste visible autour du châssis, aucun fond noir plein écran n'apparaît, les rails deviennent horizontaux sur petit écran et les états focus/danger/succès restent lisibles.

ADM-UI-002 — Modales administratives en jeu

Prérequis : permissions de gestion des personnages, inventaires, magasins, vestiaires et props.

  1. Déclencher chaque saisie et confirmation depuis F10 : renommer, transférer, modifier une pile, vider un inventaire et supprimer chaque type d'entité.
  2. Annuler par le bouton puis par Échap, et confirmer ensuite avec des valeurs valides et invalides.

Attendu : aucune boîte native du navigateur n'apparaît ; la modale AR conserve le focus, valide les champs, n'envoie rien après annulation et affiche un traitement rouge pour les suppressions.

Administration en jeu et commandes

GAME-001 — Panneau, terminal et ShowID

Tester F9, F10 et F11 avec Founder, avec les permissions unitaires, puis sans permission. Dans le terminal, saisir une commande partielle et utiliser Tab.

Attendu : chaque interface s'ouvre uniquement avec son droit, les modules sont filtrés, le terminal complète les commandes connues et ShowID affiche compte, Discord, personnage et rôle le plus élevé sur des lignes lisibles.

GAME-002 — Véhicules /car et /delv

Créer un modèle valide puis invalide avec /car. Exécuter /delv près d'un véhicule intact, d'une épave, à plus de 10 m et sans permission.

Attendu : le véhicule valide apparaît dans la bonne dimension avec l'admin au volant ; le modèle invalide échoue proprement. /delv supprime uniquement la cible à 10 m maximum et inscrit sa plaque dans l'audit, y compris pour une épave.

GAME-003 — Téléportation /tpm

Exécuter la commande à pied et en véhicule avec un marqueur terrestre, puis sans marqueur et sans permission.

Attendu : joueur ou véhicule arrive sur un sol sûr ; l'absence de marqueur et de permission produisent chacune un refus explicite.

GAME-003B — Téléportation /tpc

  1. Copier le résultat de /coords vec3, puis exécuter /tpc vec3(x, y, z) à pied.
  2. Répéter en véhicule et avec la forme /tpc x y z comprenant des valeurs négatives et décimales.
  3. Tester sans ADMIN_ALLOW_TPC, sans argument, avec deux ou quatre nombres, NaN, une parenthèse incomplète et une coordonnée hors limites.
  4. Consulter le journal administratif après un succès.

Attendu : le ped ou son véhicule arrive exactement aux coordonnées après chargement des collisions. Les formes invalides et l'absence de permission sont refusées explicitement. L'audit player.teleport_coordinates contient la destination validée côté serveur et aucun résultat client non sollicité n'est accepté.

GAME-004 — Commandes de diagnostic

  1. Tester /coords, /coords vec3 et /coords vec4 depuis le chat puis depuis F9.
  2. Tester /coords invalid, /characters et /mycharacter, puis une commande administrative produisant un succès et une erreur.
  3. Fermer F9, exécuter une commande depuis le chat, rouvrir F9 et vérifier son historique.

Attendu : chaque résultat apparaît dans F9 avec son préfixe et son niveau, y compris les erreurs et une sortie émise pendant que F9 est fermé. /coords reste aussi visible dans F8 et le chat ; les commandes serveur ciblent uniquement le joueur demandeur et aucun doublon n'apparaît dans F9.

Placement partagé et objets persistants

WORLD-001 — Contrôles de placement

Pour un PNJ de magasin, un nouveau vestiaire et un prop libre, tester rotation, molette, hauteur, confirmation E, annulation Retour et placement près d'obstacles.

Attendu : l'aperçu suit la visée sans scintiller, tous les contrôles répondent, annuler ne crée rien et confirmer rouvre l'admin avec un succès uniquement après persistance.

WORLD-002 — Magasins dynamiques

Créer, déplacer, modifier et supprimer un magasin depuis World Edit et les commandes avec ADMIN_ALLOW_CLOTHESSHOP_EDIT, puis observer un second client.

Attendu : PNJ, blip, nom, popup et coordonnées changent instantanément pour tous ; la suppression retire l'ensemble et les essais sans permission échouent.

WORLD-003 — Vestiaire avec nouveau prop

Créer un vestiaire nommé en choisissant Placer un nouveau prop, interagir, le déplacer, le renommer et le supprimer depuis le jeu puis le web.

Attendu : un seul portant est créé et persiste après reconnexion ; son déplacement conserve le mode généré et toutes les opérations respectent les permissions de placement/édition distinctes.

WORLD-004 — Vestiaire lié à un prop existant

Créer un vestiaire en choisissant Sélectionner un prop, viser un objet valide, confirmer puis tester l'interaction depuis deux clients et après re-streaming. Déplacer ensuite le vestiaire.

Attendu : le contour change seulement avec la cible, aucun objet n'est dupliqué, l'interaction se rattache au prop streamé et le déplacement demande de sélectionner un autre prop existant.

WORLD-005 — Sélection invalide ou annulée

Viser un ped, un véhicule, le vide et un objet trop éloigné, puis annuler la sélection.

Attendu : seul un objet à portée peut être confirmé, aucun contour ne reste actif après annulation et aucune ligne n'est persistée.

WORLD-006 — Props libres persistants

Avec ADMIN_ALLOW_EDIT_WORLD_PROPS, créer un modèle valide, tenter un modèle invalide, déplacer, modifier collision/état, désactiver, réactiver et supprimer depuis les interfaces disponibles.

Attendu : les mutations sont diffusées à tous les joueurs et survivent au redémarrage ; modèles invalides et appels non autorisés sont refusés, et la suppression retire définitivement le prop.

Robustesse et performances

WORLD-007 — Streaming et densité

Placer plusieurs magasins, vestiaires liés/générés et props, parcourir rapidement la zone avec deux clients, puis sortir et revenir à plus de 80 m.

Attendu : aucune duplication, fuite de contour, interaction fantôme, chute durable de FPS, exception Lua/JS ou crash GTA ; les interactions reviennent quand les entités sont streamées.

WORLD-008 — Synchronisation concurrente

Faire modifier ou supprimer le même objet par deux administrateurs presque simultanément.

Attendu : l'état final de l'API devient l'unique vérité, tous les clients convergent au prochain rafraîchissement et aucune entité orpheline ne reste dans le monde.

WORLD-009 — Interactions génériques

Enregistrer des interactions de recette sur un joueur, un ped, un véhicule, un prop et une position, avec textes, distances, couleur et option de mise en évidence différents. Déclencher une action qui garde le verrou, puis la libérer explicitement.

Attendu : chaque popup affiche son propre contexte, les distances sont respectées, le cylindre est utilisé pour les peds et le contour pour les entités compatibles. L'activation/désactivation n'est commutée qu'au changement d'état et aucune autre interaction ne s'ouvre pendant le verrou.

WORLD-010 — Reprise de la synchronisation des props

Avec plusieurs props déjà diffusés, couper l'API pendant plusieurs polls, modifier la source API puis la restaurer.

Attendu : les props existants ne disparaissent pas, les polls ne se chevauchent pas, puis la nouvelle empreinte est diffusée une fois. Les logs contiennent une transition de panne et une de rétablissement, jamais undefined.

WORLD-011 — GPS et téléportation vers un véhicule enregistré

Depuis F10, utiliser GPS puis SE TP sur un véhicule sorti dans la même instance, à pied puis en véhicule. Rejouer sur un dossier remisé, indisponible, une entité absente et un autre bucket, puis sans les permissions de lecture/TPC.

Attendu : le marqueur et la téléportation décalée n'aboutissent que pour l'entité serveur canonique. Les collisions sont chargées, le résultat est corrélé et les audits vehicle.waypoint/vehicle.teleport contiennent la cible validée sans faire confiance à la NUI.