Page 1 sur 1
Jeux multijoueurs Connexion entre deux machines client
#1
Posté 07 décembre 2009 - 15:16
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.
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.
#2
Posté 07 décembre 2009 - 15:28
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)
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)
#4
Posté 07 décembre 2009 - 15:38
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
#5
Posté 07 décembre 2009 - 16:48
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.
Merci encore.
Ce message a été modifié par captain_torche - 07 décembre 2009 - 16:55.
Raison de l'édition : Inutile de citer le message précédent; on vient de le lire.
#6
Posté 07 décembre 2009 - 16:59
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).
#8
Posté 07 décembre 2009 - 17:39
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.
#10
Posté 08 décembre 2009 - 16:57
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.
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.
_AT_Montpellier
Création de site internet
Comment installer Subversion + USVN sans trop galérer
Comment installer un serveur Teamspeak 3 sous linux
Création de site internet
Comment installer Subversion + USVN sans trop galérer
Comment installer un serveur Teamspeak 3 sous linux
#11
Posté 08 décembre 2009 - 18:29
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
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
#12
Posté 09 décembre 2009 - 02:51
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.
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.
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.
_AT_Montpellier
Création de site internet
Comment installer Subversion + USVN sans trop galérer
Comment installer un serveur Teamspeak 3 sous linux
Création de site internet
Comment installer Subversion + USVN sans trop galérer
Comment installer un serveur Teamspeak 3 sous linux
Partager ce sujet :
Page 1 sur 1


Haut











