02-09-2014, 04:49 PM
Ouep la mécanique de jeu qui se déroule, sur un jeu web, coté serveur doit avoir ce coté "fair-play" (au fond, faire jouer tout le monde au même `noyau` de jeu) et elle n'est donc pas modifiable par les joueurs.
Là, tu parles d'empêcher l'utilisateur de changer son interface (empêcher l'utilisateur d'avoir ses plugins): c'est comme si on empêchait quelqu'un de modifier sa configuration clavier de L4D, ou encore la sensibilité de sa souris (une souris qui va plus vite donnera un avantage au joueur) ou la taille de sa jauge voire même sa présence (je joue à Crysis sans interface car je le trouve plus immersif et pas plus dur à jouer comme cela). Dans L4D2, est-ce qu'on doit mettre toutes les souris à la même vitesse et à la même précision (ce qui doit alors se faire coté serveur et pas client)?
D'un point de vue technique c'est vrai: tu n'as pas le choix; mais ce n'est pas faute de l'implémentation (c'est pas par manque de fonctions et d'API dans javascript par exemple), mais c'est une question de concept; c'est sorti du serveur, c'est allé "ailleurs" (on ne sait pas où), et on n'a donc pas de contrôle dessus. Tu peux y mettre les sécurités que tu veux, même si javascript avait tout ce qu'il faut pour bloquer les plugins, tu ne pourras pas en avoir la certitude (c'est le client qui exécute ces lignes de code, donc tu ne peux pas savoir comment ces lignes seront exécutés).
Si tu fais une fonction foo() qui retourne un objet, tu ne peux pas empêcher l'appelant de cette fonction d'en faire ce qu'il veut: ce n'est plus dans tes cordes par conception.
C'est le fondement même de la sécurité d'ailleurs: si une donnée sort du système, le système n'a aucun idée de ce qu'elle devient (elle est en quelque sorte "publique", même chiffrée elle peut être lue, on a juste peu de risques qu'elle soit interprêtable), et à l'inverse, si une donnée rentre dans un système, le système n'a aucune idée d'où elle vient (et c'est pour cela qu'il faut vérifier toutes les entrées).
Là, tu parles d'empêcher l'utilisateur de changer son interface (empêcher l'utilisateur d'avoir ses plugins): c'est comme si on empêchait quelqu'un de modifier sa configuration clavier de L4D, ou encore la sensibilité de sa souris (une souris qui va plus vite donnera un avantage au joueur) ou la taille de sa jauge voire même sa présence (je joue à Crysis sans interface car je le trouve plus immersif et pas plus dur à jouer comme cela). Dans L4D2, est-ce qu'on doit mettre toutes les souris à la même vitesse et à la même précision (ce qui doit alors se faire coté serveur et pas client)?
D'un point de vue technique c'est vrai: tu n'as pas le choix; mais ce n'est pas faute de l'implémentation (c'est pas par manque de fonctions et d'API dans javascript par exemple), mais c'est une question de concept; c'est sorti du serveur, c'est allé "ailleurs" (on ne sait pas où), et on n'a donc pas de contrôle dessus. Tu peux y mettre les sécurités que tu veux, même si javascript avait tout ce qu'il faut pour bloquer les plugins, tu ne pourras pas en avoir la certitude (c'est le client qui exécute ces lignes de code, donc tu ne peux pas savoir comment ces lignes seront exécutés).
Si tu fais une fonction foo() qui retourne un objet, tu ne peux pas empêcher l'appelant de cette fonction d'en faire ce qu'il veut: ce n'est plus dans tes cordes par conception.
C'est le fondement même de la sécurité d'ailleurs: si une donnée sort du système, le système n'a aucun idée de ce qu'elle devient (elle est en quelque sorte "publique", même chiffrée elle peut être lue, on a juste peu de risques qu'elle soit interprêtable), et à l'inverse, si une donnée rentre dans un système, le système n'a aucune idée d'où elle vient (et c'est pour cela qu'il faut vérifier toutes les entrées).