Programmation d'un site de jeu d'échecs en direct !

Nouveau WRInaute
Bonjour,

Je viens vers vous car je pense que l'expérience sera enrichissante pour tous les programmeurs php/mysql/ajax et également pour vous demander de l'aide sur la réalisation d'un club d'échecs en ligne avec possibilité de jouer des parties en direct avec du temps et un classement élo !

Jusque là j'ai réussi à programmer mon interface "statique" complète en php/mysql et javascript, les règles du jeu sont respectées, et il y a de nombreuses fonctionnalités (proposer nulle, reprendre son coup, visualiser une partie terminée, etc), par contre là où je bloque c'est pour passer mes paramètres en live, donc de transformer les pages statiques en pages interactives avec AJAX (rafraichissement chaque seconde) !

J'ai fait un plan que je vous détaille (merci de le commenter, car j'ai sûrement fait des erreurs) :

-Salle d'attente, on peut défier les joueurs en voyant leur classement et leur pseudo (pour vérifier qu'un joueur est là, je fais un update de time dans la bdd chaque seconde, si il n'y a pas d'update pendant 1 seconde pour un joueur, alors il n'y a plus de possibilité de défier ce joueur car il est considéré comme "absent". Evidemment lorsqu'un joueur arrive sur la page je fais un insert avec le pseudo et j'insère le time pour que l'update se mette à tourner. Ca me parait très lourd niveau serveur, mais je ne vois pas quelle alternative sérieuse je peux utiliser pour vérifier à la seconde près qu'un joueur est connecté ou pas en utilisant seulement php/mysql/ajax.

-Salle de jeu, j'update chaque seconde par rapport au time dans la bdd pour les horloges de jeu, là aussi niveau serveur ça me parait très lourd mais ça me semble être la seule sécurité au cas où un joueur se déconnecte et se reconnecte avant 30 secondes (après il est déclaré perdant), pour le reste le jeu se déroule normalement, toutes les règles sont respectées et une vérification est faite que l'adversaire est bien connectée à la partie grâce au même update que cité précédemment dans une nouvelle table (celle de la salle de jeu et non pas celle de la salle d'attente) ! A la fin de la partie les joueurs peuvent l'analyser grâce au chat et à la possibilité de revenir au début de la partie et de la faire défiler etc.

Evidemment lorsqu'un jour passe de la salle de défi à celle de jeu (soit parce qu'un de ses défis a été accepté ou parce que lui-même a accepté un défi) on supprime tous les défis qu'il a lancés ou reçus dans la bdd et la page de jeu se lance.

Pour le reste mon plus gros souci réside dans le fait que mes variables innerhtm (échiquier et fonctionnalités autour) sont codées en JS, je n'arrive par conséquent par à les faire passer dans du xAJAX par exemple, étant donné que mes connaissances s'arrêtent à passer du php dans une fonction AJAX, du javascript couplé à du php je n'y arrive pas...

Pour plus de précision, voilà une sorte de schéma :

1) Mon code php (très long) qui fait appel à toutes les requêtes dans ma bdd.
2) Mon code javascript qui va définir les div en innerhtm suivant le php précité.
3) Div dans le body.

Je n'arrive pas en AJAX à faire en sorte de prendre en fonction le code php et le javascript afin de réactualiser avec Setinterval (ou prototype, ou autre...) pour les afficher avec un innerhtm dans le body afin d'actualiser la position sur l'échiquier quand c'est au tour de l'adversaire (pour voir s'il a joué et quoi). Et plus je bosse sur ce code, plus j'ai l'impression que ce n'est simplement pas possible...

Si quelqu'un a une idée je suis preneur ! Je détaillerai point à point l'avancée du jeu et comment j'ai fait (en suivant vos conseils !

Merci de vos réponses et de votre intérêt !
Luc.
 
Nouveau WRInaute
Merci de ta réponse, en fait le jeu est déjà fait, j'ai les graphismes etc, tout est déjà en place et fonctionne en différé !

Tu penses que je dois recommencer à zéro en incluant des sockets où il y a moyen d'adapter ce qui est déjà fait et de le coupler à un langage dynamique (hors flash et java), comme les websockets dont tu m'as parlé par exemple (couple node.js/Express + socket.io)

Les autres langages dont tu m'as parlé, ce sont uniquement pour les graphismes, non ?

Luc.
 
WRInaute accro
bobbyfischer a dit:
Les autres langages dont tu m'as parlé, ce sont uniquement pour les graphismes, non ?
Architecture surtout, en AJAX tu vas flooder ton serveur.
Avec l'AJAX tu peux juste faire du pull (un timer pour refresh toutes les secondes, je t'assure ton serveur va vite crouler). Et pour un jeu multijoueurs il me semble qu'il faut aller clairement vers les websockets.
http://fr.wikipedia.org/wiki/Server_push
 
Nouveau WRInaute
Bonjour à tous!!!!

Me revoilà après 2 ans d'absence les yeux qui brillent et le coeur qui bat la chamade! Merci pour vos conseils, j'ai enfin terminé mon projet, le voici : http://www.les-echecs.com.

Et voici la vidéo mode d'emploi de mon site : http://youtu.be/gA3QRhDkANU?list=UUz1_0D8zLi5N1jjG2ufvrgw

Merci pour vos conseils grâce à vous j'ai réussi mon projet et j'en suis plus qu'heureux!!!!

Luc Pitallier
 
Membre Honoré
Bonjour,

Merci pour la présentation de votre nouveau site.

Quelques avis :
- L'URL a une redirection vers un autre site : playchesseveryday
- Le design en haut du site est cool, mais après c'est moins réussi
- Il semble manquer les informations de l'entreprise qui a le site
- Pour le slide, des boutons seraient mieux que le glisser avec la croix

Cordialement.
 
Nouveau WRInaute
Bonjour,

-Comme expliqué dans la vidéo, les 2 sites sont les mêmes, les-echecs.com étant référencé, je redirige jusqu'à racheter le nom de domaine sur mon autre hébergeur comme ça plus de redirection!
-en bas du haut sur la page d'accueil c'est moins réussi? Ou sur toutes les pages le design sous la bannière est moins réussi? Le design et moi ça fait 2 c'est clair!
-Euh bah l'entreprise? C'est juste un site personnel lol je n'ai pas d'entreprise! Les pubs me rapportent 0 euro curieusement! un peu pris de cours j'avoue concernant ce point, l'important pour moi c'était que le site soit en ligne et marche (plate-forme de jeu)!
-Pour le slider merci car j'avais aucun retour là-dessus et je me demandais ce qu'on pourrait en penser... ok je vais voir ça! Merci d'avoir pris le temps de visiter mon site et de me faire un retour dessus.

Merci pour ton retour qui m'aidera grandement!!

Luc.
 
Discussions similaires
Haut