jeremanemo Posté 7 Décembre 2009 Posté 7 Décembre 2009 Bonjour je cherche à faire un jeux dans lequel les membres s'affronteront les uns contre les autres. Seulement je ne sais pas comment faire communiquer deux machines entre elles(ou en passant par le serveur). J'ai entendu parler de la possibilité d'un serveur flash, seulement je n'ai pas d'expérience avec ce genre d'infrastructure. Alors avant de me lancer la dedans par obligation, je voudrais savoir si il existe une alternative. Merci d'avance pour vos réponses.
captain_torche Posté 7 Décembre 2009 Posté 7 Décembre 2009 A mon avis, il faudrait passer par le serveur : tu enregistres chaque action dans ta base de données, actions que tu télécharges régulièrement sur chaque client. Par contre, cela implique que tu ne fasses pas de temps réel, mais plutôt du tour par tour (Quel que soit le temps que tu alloues pour chaque tour)
jeremanemo Posté 7 Décembre 2009 Auteur Posté 7 Décembre 2009 Merci pour votre réponse, c'est justement ça le problème , c'est un jeux de voiture en temps réels. Et j' ai déjà essayer de charger des fichiers textes X fois par sec mais j'ai peur de surcharger le serveur.
captain_torche Posté 7 Décembre 2009 Posté 7 Décembre 2009 Le souci, c'est que si tu ne veux pas ruiner ta bande passante en appels de coordonnées pour tous tes concurrents en lice, il te faut des algorithmes prédictifs, qui estimeront en fonction de certains paramètres (vitesse de la voiture, position, etc) le comportement que pourrait avoir le joueur. Ca peut aussi occasionner pas mal de bugs lors de la synchronisation (voitures qui avancent de 10 mètres d'un coup, par exemple). C'est loin d'être facile
jeremanemo Posté 7 Décembre 2009 Auteur Posté 7 Décembre 2009 (modifié) Je suis bien d'accord avec vous . Donc sauf serveur flash il n'y aurait pas de solution convenable pour le temps réel? Merci encore. Modifié 7 Décembre 2009 par captain_torche Inutile de citer le message précédent; on vient de le lire.
captain_torche Posté 7 Décembre 2009 Posté 7 Décembre 2009 Je ne m'y connais pas du tout en serveur flash, mais j'imagine que la problématique restera la même quoi qu'il arrive. C'est comme ça que fonctionne tous les jeux de course (à ce que j'en sais).
jeremanemo Posté 7 Décembre 2009 Auteur Posté 7 Décembre 2009 Je suppose que si je suis sur rps ou serveur dédié le problème de bande passante ne se pose plus, donc ma technique de fichier txt serait possible?
captain_torche Posté 7 Décembre 2009 Posté 7 Décembre 2009 Après, le facteur limitant, c'est la qualité de connexion des clients. Tu peux avoir la meilleure infrastructure du monde, un gars avec un vieux modem tout pourri n'arrivera pas à renvoyer suffisamment vite ses données actualisées.
jeremanemo Posté 7 Décembre 2009 Auteur Posté 7 Décembre 2009 Ha oui j'y avais pas pensé... Je peut peut-être tester leur bande passante et les avertir? En tous cas merci énormément pour vos réponses. A bientôt
SStephane Posté 8 Décembre 2009 Posté 8 Décembre 2009 Hello, Passer des coordonnées ne posera à priori pas trop de problème de connexion une fois l'appli chargée. Pour ton truc, tu as la solution d'utiliser un serveur dans le langage que tu souhaites (j'en avais fais un en c# à une époque) et communiquer avec ce serveur en socket. Ca t'évitera de sortir l'artillerie lourde d'un Red5 pour faire uniquement fonctionner un jeu. Sinon, combien de joueurs à ton appli ? 2 ou plus ? S'il sont uniquement 2 il y a peut être mieux à faire.
jeremanemo Posté 8 Décembre 2009 Auteur Posté 8 Décembre 2009 Merci pour ta réponse. Je pensais utilisé aquaserver. T'en pense quoi? Sinon je pensait commencer par du tour par tour (2-4 joueurs), puis du temps réel à deux joueurs, puis plus.(J'ai beaucoup de jeux à faire ) Si tu as une autre solution je t'écoute attentivement. Merci
SStephane Posté 9 Décembre 2009 Posté 9 Décembre 2009 Aquaserver est un serveur de socket ? pourquoi pas s'il est fiable, il en vaut surement un autre, ça revient au même que de le coder, autant ne pas refaire ce qui existe déjà Sinon peut-être vaut -il mieux directement passer par une solution faite pour flash : - red5 : pas si chiant à installer qu'on le dit, et franchement pas mal - smartfoxserver : payant et supercomplet (pas très cher) - FMS : super si t'as les moyens L'avantage d'utiliser ce type de serveur est que tu peux passer des objets flash sans t'embêter à formater des chaînes dans ton code. Tu peux aussi faire un serveur socket simple en PHP, tiens, voici ce que j'avais utilisé, j'avais préféré le décliné en c# pour gérer des thread, mais il est utilisable en l'état. Le principe, il récupère les infos que tu envoi d'un client et effectue un broadcast, enfin tu vois l'idée. <?phpset_time_limit(0);$adresse = 'xxx.xxx.xxx.xxx';$port = xxxx;$conn = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);socket_set_option($conn, SOL_SOCKET,SO_REUSEADDR, 1);$ret = socket_bind($conn, $adresse, $port);$ret = socket_listen($conn, 5);$aSoc = array($conn);while (true){ $soc = $aSoc; socket_select($soc, $write = NULL, $except = NULL, NULL); foreach($soc as $s) { if ($s == $conn) { if (($client = socket_accept($conn)) < 0) continue; else array_push($aSoc, $client); } else { $flux = socket_recv($s, $buffer, 2048, 0); if ($flux == 0) { $i = array_search($s, $aSoc); unset($aSoc[$i]); socket_close($s); } else { $acs = $aSoc; array_shift($acs); cbroadcast($acs, $s, $buffer); } } }}function cbroadcast($cls, $s, $datas){ foreach($cls as $c) { socket_write($c, $datas); }}?> En cherchant un peu tu trouveras facilement des trucs analogues en perl ou python, ce sera peut-être plus efficace si tu as beaucoup de jeux. Mais mon sentiment est que tu devrais passer sur red5 ou un FMS, tu gagnerais du temps à développer tes jeux je pense et il y aura moins de traitement côté client.
jeremanemo Posté 16 Janvier 2010 Auteur Posté 16 Janvier 2010 Bonjour à tous et à toutes, aujourd'hui je me suis enfin décidé, je souhaite utiliser red5. Cependant je voudrais savoir si il est possible d'installer red5 sur mutualisé pour faire des tests, à terme il sera bien entendu sur dédié. Merci beaucoup
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant