12-03-2013, 09:52 AM
(Modification du message : 12-03-2013, 01:07 PM par Sephi-Chan.)
(12-03-2013, 02:24 AM)php_addict a écrit : euh oui mais sauf que là ca va pas du tout...surtout pas d'ajax, faut un serveur push, j'y connais rien mais lit ceci: http://www.jeuweb.org/search.php?action=...order=desc
Même si la communication se fait plus vite (ce qui n'est pas forcément sûr), le traitement côté serveur prends forcément du temps. Il faudrait coupler ça à un serveur de jeu qui répond extrêmement vite (soit un micro-serveur HTTP comme Sinatra, mais l'idéal serait de mettre un hook dans un serveur de push comme Faye) couplé à un stockage in-memory type Redis (ou dans le process ? Mais attention à la stabilité du truc !).
Selon moi — n'ayant jamais fait ça en vrai, ça vaut ce que ça vaut — il faudrait commencer par abandonner le mouvement case par case puisque ça n'a pas de sens dans le cas de petits mouvement pour un système de coordonnées. Tant que le doigt est appuyé sur la touche de déplacement, on envoie (avec un throttling de X ms (disons 100 ms, des fonctions existent déjà pour l'implémenter) un ordre de mouvement (up, right, down, left) et le serveur se débrouille pour les résoudre quand il en reçoit.
Du coup, très peu de validation à faire, on peut tester très efficacement la disponibilité de chaque case en modélisant les zones indisponibles sous forme d'un hash rapide à accéder.
Côté implémentation, je partirais sur une implémentation sans application Web classique : mais plutôt à base de daemon qui fait évoluer le monde de jeu de manière autonome. La couche Web sert uniquement d'interface (edit : merci Niahoo pour avoir pointé ma phrase pas finie).
Idéalement avec un langage taillé pour ça (Erlang ou Scala) mais en restant sur du Ruby on peut utiliser Celluloid, qui implémente pas mal de concepts d'Erlang (sur la concurrence et la tolérance à la faute) et qui fonctionne pas mal. Ses extensions comme Reel permettraient à priori de faire ce que tu veux, mais je ne sais même pas comment j'utiliserais chaque composant.
A mon avis, tout ça peut marcher dans une certaine mesure, mais ça va forcément poser des soucis de mise à l'échelle. L'inconnue, c'est le nombre de personnes à partir duquel ça va devenir problématique : je ne sais même pas l'ordre de grandeur avec des machines pas chères (je serais curieux de voir les chiffres pour la Dedibox à 12 € et celle à 30 € par mois).
Après, te concernant Argorate, je te déconseille de partir là dessus : ça demande d'y mettre un peu d'argent et requiert vraiment beaucoup de recherches et d'expérimentations. Vu comme tu galères à trouver l'info avec Rails (pour lequel il y a de l'aide à la pelle, même en français), tu vas te perdre dans ce genre de technologies plus complexes et qui sort des sentiers battus. C'est peut-être le plus constructif des conseils de ce message.