18-06-2013, 12:24 AM
Je vais essayer de répondre du mieux que possible avec l'expérience de mon jeu Interstellaires en temps réel.
Déjà comme la dit Xenos découpe ta map en arbre ou tableau ( ou tableau d'index de nom, libre a toi de faire un choix mais les nombres sont toujours traitaient plus vite que les chaines
Exemple : tab[3] est plus rapide en lecture que tab['nom_index']
Après tu boucle les joueurs et envoient les messages à chacun, la y a pas trop vrai solutions pour faire ça mieux =/
Tu peux aussi faire une partit du calcule chez le client et éviter l'envoi au serveur.
1 - Si le client connait le nombre de joueur qu'il y a sur la map alors et si il y a aucun joueur sur la carte actuel ou se trouve le personnage, tu n'es pas obligé de contacter le serveur pour signaler une position vue que au final les autres joueurs ne te verrons pas te déplacer vu qu'il y à personne ^^.
2 - Calculer la vision chez le client !, le client reçoit toutes les positions des joueurs de sa map ( grâce à la boucle d'envoient du serveur ) mais calcule qu'il devra afficher ou pas ( ca évite énormément de calcule du coter serveur ). le problème c'est que un joueur pourrais modifier le javascript client et voir tout le monde .... et la faut te pauser la question si cette exploitation de beug pourrais faciliter le joueur ?, ou si c'est juste pour faire un effet joli en jeu ?
3- Te déplacer à la souris que au clavier, un Click souris = 1 position envoyé au serveur qui sera renvoyer au autre joueur. Comparer au déplacement clavier qui va nécessiter plein de requête et beaucoup de puissance perdue ( ou avoir un super serveur ^^ ).
Ah rajouter aussi que tu dois prendre en compte la technologie que tu va utiliser : si c'est node.js + socket.io tu va être confronté au problème que node n'utilise qu'un processus et pas possible d'avoir des threads ou autres processus pour alléger les calcules ... )
Bref, personnellement j'ai adapté le gameplay de Interstellaires au capacitée que peux fournir un jeu temps-réel sur navigateur.
tout ce qui est en temps-réel client -> socket.io
temps-réel serveur -> socket.io + node.js + SQL
( le SQl est a éviter sur le serveur, a cause des temps de réponse un peu long, le must est une requête à la connexion et une à la déconnexion )
les informations statique client -> PHP + SQL
la générations des fenêtres de jeu : ajax + template js( j'utilise mustache pour les Template ).
Voilà j’espère que ça t’éclairera =3
Déjà comme la dit Xenos découpe ta map en arbre ou tableau ( ou tableau d'index de nom, libre a toi de faire un choix mais les nombres sont toujours traitaient plus vite que les chaines
Exemple : tab[3] est plus rapide en lecture que tab['nom_index']
Après tu boucle les joueurs et envoient les messages à chacun, la y a pas trop vrai solutions pour faire ça mieux =/
Tu peux aussi faire une partit du calcule chez le client et éviter l'envoi au serveur.
1 - Si le client connait le nombre de joueur qu'il y a sur la map alors et si il y a aucun joueur sur la carte actuel ou se trouve le personnage, tu n'es pas obligé de contacter le serveur pour signaler une position vue que au final les autres joueurs ne te verrons pas te déplacer vu qu'il y à personne ^^.
2 - Calculer la vision chez le client !, le client reçoit toutes les positions des joueurs de sa map ( grâce à la boucle d'envoient du serveur ) mais calcule qu'il devra afficher ou pas ( ca évite énormément de calcule du coter serveur ). le problème c'est que un joueur pourrais modifier le javascript client et voir tout le monde .... et la faut te pauser la question si cette exploitation de beug pourrais faciliter le joueur ?, ou si c'est juste pour faire un effet joli en jeu ?
3- Te déplacer à la souris que au clavier, un Click souris = 1 position envoyé au serveur qui sera renvoyer au autre joueur. Comparer au déplacement clavier qui va nécessiter plein de requête et beaucoup de puissance perdue ( ou avoir un super serveur ^^ ).
Ah rajouter aussi que tu dois prendre en compte la technologie que tu va utiliser : si c'est node.js + socket.io tu va être confronté au problème que node n'utilise qu'un processus et pas possible d'avoir des threads ou autres processus pour alléger les calcules ... )
Bref, personnellement j'ai adapté le gameplay de Interstellaires au capacitée que peux fournir un jeu temps-réel sur navigateur.
tout ce qui est en temps-réel client -> socket.io
temps-réel serveur -> socket.io + node.js + SQL
( le SQl est a éviter sur le serveur, a cause des temps de réponse un peu long, le must est une requête à la connexion et une à la déconnexion )
les informations statique client -> PHP + SQL
la générations des fenêtres de jeu : ajax + template js( j'utilise mustache pour les Template ).
Voilà j’espère que ça t’éclairera =3