Jump to content
Sign in to follow this  
jeremanemo

Jeux multijoueurs

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 ;)

Share this post


Link to post
Share on other sites

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.

Edited by captain_torche
Inutile de citer le message précédent; on vient de le lire.

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 :P )

Si tu as une autre solution je t'écoute attentivement.

Merci

Share this post


Link to post
Share on other sites

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.


<?php
set_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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...