Aller au contenu

Sujets conseillés

Posté

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.

Posté

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)

Posté

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.

Posté

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

Posté (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é par captain_torche
Inutile de citer le message précédent; on vient de le lire.
Posté

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

Posté

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?

Posté

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.

Posté

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

Posté

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.

Posté

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

Posté

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.

  • 1 month later...
Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...