Forums Développement Multimédia

Aller au contenu

- - - - -

Jeu multijoueur en Actionscript - Quel serveur pour du temps réel ?

MULTIJOUEUR AS2 AS3 CODE SERVEUR

2 réponses à ce sujet

#1 Tatsuo

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 10 June 2016 - 15:59 PM

Bonjour !

Je programme en AS2 et j'ai, il y a quelques temps, utilisé le serveur de Socket Aquaserver pour pouvoir faire un jeu multijoueur.

Au début je ne voulais faire qu'un jeu tour par tour mais j'ai par la suite essayé de faire un jeu plus dynamique du style Bomberman en multijoueur.

Le problème est que malgré quelques anticipations de lags par quelques fonctions annexes je suis confronté à un décalage au cours du jeu. Sur certains clients les personnages sont décalés de quelques pixels.

Le problème est qu'après une gestion de collisions, les personnages ne sont plus aux mêmes endroits sur les différents clients.

Sur http://www.extinction.fr les personnages se déplacent par exemple de manière fluide et sans lags.Auriez-vous des serveurs à me proposer qui visent plus une utilisation "temps réel" des positions des personnages ?

Je souhaite à termes me rapprocher d'un jeu type "battle royale" ou tout du moins du 2v2.

Est-il plus conseillé de le programmer en AS3 ou faire ce genre de jeu multijoueur peu être largement réalisable en AS2 ?

Je m'en remets à vos conseils !

Merci d'avance !

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6994 messages

Posté 11 June 2016 - 13:53 PM

Bonjour,

Je recommande AS3, quand aux problèmes de collisions, c'est le client ou le serveur qui gère les calculs de collisions ?

#3 Tatsuo

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 11 June 2016 - 17:52 PM

Bonjour,

En réalité j'ai fait deux tests:

Le premier jeu que j'ai fait, fonctionne avec des déplacements "case par case" comme pour les premiers jeux Pokemon, les rpg,... Lorsqu'un joueur désire aller à droite le client le fait se déplacer et l'empêche de changer de direction tant qu'il n'est pas sur la case de droite.

Les autres clients connectés au serveur reçoivent l'action du joueur qui est d'aller à droite et leurs clients calculent également le déplacement.

Les collisions sont détectées par le client qui exécute l'action. La touche "DROITE" n'est envoyée que si elle est réalisable (pas de mur à droite).

Lorsque le joueur 1 relâche toutes ses touches cette information est aussi transmise.

Cependant, un petit décalage semble se créer sur différents clients et ils ne sont plus synchronisés.


Le deuxième jeu fonctionne également en envoyant les touches du client 1 aux autres (une fois appuyées et relâchées).

Cependant, cette fois le déplacement n'est pas limité à des cases il peut se faire avec des positions absolues, c'est simplement l'incrémentation ou non de la position x et y.

J'ai pensé que si un décalage survenait c'était par ce que dans le premier jeu un problème pourrait survenir le temps qu'un joueur soit entre deux cases mais que le client reçoit une autre information de direction.

Or même dans le deuxième jeu ou je ne fais que déplacer le personnage librement un petit décalage se présente.


Le serveur que j'utilise est Aquaserver donc il ne fait que recevoir l'information puis la renvoie aux autres clients qui doivent parser le message reçu pour récupérer les informations.

Le problème est-il dû au serveur ? Si oui, y-a t-il des serveurs gratuits plus optimisés pour ce genre d'utilisation ?


Merci d'avance !




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP