28-08-2007, 07:00 PM
Je travaille sur un jeu utilisant le même truc et le principe de base est plutôt simple mais son application peut être un peu ardue à mettre en place.
En fait, il te faut des données communes que chacun modifie. Personnellement, j'utilise un fichier XML (car je bosse avec du Flash) mais ça marche aussi très bien avec une base de données. Après, tu dois créer un script php (ou une autre technologie, si tu choisis d'effectuer le traitement sur le poste client plutôt que sur le serveur) qui te génère ta carte chez les deux utilisateurs en fonction du fichier de données commun. Dès qu'un joueur modifie ce fichier, l'autre verra les modifications à chaque fois qu'il rechargera la carte.
Le problème, c'est que l'ensemble reste asynchrone : il faut recharger la page (ou des éléments de la page) pour voir les modifications du joueur adverse. Dans bien des cas, ce n'est pas trop gênant et c'est la solution la plus facile à mettre en place, d'autant que tu peux te rapprocher d'un jeu synchronisé en réactualisant les infos à intervalles réguliers (toutes les 30 secondes, par exemple). Mais si tu veux véritablement une partie vraiment synchronisée, il faut utiliser un serveur socket, c'est à dire une sorte de noeud auquel sont connectés tous les joueurs de la partie et qui renvoie des informations à tout le monde à chaque fois qu'un utilisateur lui envoie des données. Par contre, pour un serveur socket, il faut payer un certain prix ou bien disposer d'un serveur dédié pour en installer un. De plus, si je sais comment l'utiliser avec Flash, je serais bien incapable de te dire si cette dernière solution est valable en PHP ou Javascript.
Enfin bref : le principe à appliquer, c'est deux affichages pour un même fichier de données...
@+
En fait, il te faut des données communes que chacun modifie. Personnellement, j'utilise un fichier XML (car je bosse avec du Flash) mais ça marche aussi très bien avec une base de données. Après, tu dois créer un script php (ou une autre technologie, si tu choisis d'effectuer le traitement sur le poste client plutôt que sur le serveur) qui te génère ta carte chez les deux utilisateurs en fonction du fichier de données commun. Dès qu'un joueur modifie ce fichier, l'autre verra les modifications à chaque fois qu'il rechargera la carte.
Le problème, c'est que l'ensemble reste asynchrone : il faut recharger la page (ou des éléments de la page) pour voir les modifications du joueur adverse. Dans bien des cas, ce n'est pas trop gênant et c'est la solution la plus facile à mettre en place, d'autant que tu peux te rapprocher d'un jeu synchronisé en réactualisant les infos à intervalles réguliers (toutes les 30 secondes, par exemple). Mais si tu veux véritablement une partie vraiment synchronisée, il faut utiliser un serveur socket, c'est à dire une sorte de noeud auquel sont connectés tous les joueurs de la partie et qui renvoie des informations à tout le monde à chaque fois qu'un utilisateur lui envoie des données. Par contre, pour un serveur socket, il faut payer un certain prix ou bien disposer d'un serveur dédié pour en installer un. De plus, si je sais comment l'utiliser avec Flash, je serais bien incapable de te dire si cette dernière solution est valable en PHP ou Javascript.
Enfin bref : le principe à appliquer, c'est deux affichages pour un même fichier de données...
@+