JeuWeb - Crée ton jeu par navigateur
Déplacement temps réel - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Déplacement temps réel (/showthread.php?tid=6125)

Pages : 1 2


RE: Déplacement temps réel - Sephi-Chan - 12-06-2012

Y a-t-il une raison particulière qui te pousse à ne pas utiliser du push ?

Dans un cas comme le tiens, envoyer une requête Ajax lors d'un déplacement, le serveur effectue le mouvement en base de données (afin d'avoir de la persistence) et le notifie aux autres joueurs présents dans la région (via un push).

Ensuite, il reste l'affichage initial de la carte : il suffit alors de charger seulement la carte aux environs du personnage, et le reste est "streamé" au fil des déplacements du joueur (par exemple dans la réponse à la requête Ajax de déplacement).

Qu'en penses-tu ?


RE: Déplacement temps réel - Enlil - 12-06-2012


Je suis d'accord que le push est la méthode la plus appropriée et la plus élégante, et que je devrai y arriver tôt ou tard. Ça fait un moment que j'y pense déjà.

La principale raison qui me fait repousser l'échéance, c'est la nécessité pour ce faire d'avoir un serveur dédié (ou de payer pour un service mutualisé ou un cloud qui propose cette fonctionnalité) ; dans les deux cas, c'est payant (enfin je vais checker les liens proposés dans ce topic, on sait jamais). Je suis disposé à payer pour un serveur mais je veux au préalable pouvoir sonder dans quelle mesure mon projet rencontre ou non un succès même léger qui justifie des frais.

L'idéal serait quelque chose comme Google Appengine, gratuit jusqu'à un certain seuil de performances. Mais GAE ne permet pas d'utiliser de technologies asynchrones. Sad


RE: Déplacement temps réel - Sephi-Chan - 12-06-2012

Pubnub dispose d'un pallier gratuit de 1 million de messages par mois (puis ensuite, c'est $1 par million de message supplémentaire). Ça permet de voir venir.


RE: Déplacement temps réel - niahoo - 12-06-2012

(12-06-2012, 04:35 PM)Sephi-Chan a écrit : Pubnub dispose d'un pallier gratuit de 1 million de messages par mois (puis ensuite, c'est $1 par million de message supplémentaire). Ça permet de voir venir.

Et tu n'as pas besoin de dédié il me semble bien.


RE: Déplacement temps réel - Sephi-Chan - 12-06-2012

Oui, c'est un service à utiliser quand on ne dispose pas de serveur dédié. Par contre, même en payant on dirait bien qu'il y a une base forfaitaire en plus du "pay as you go", ce qui est un peu débile. M'enfin, le pallier gratuit est assez conséquent.


RE: Déplacement temps réel - niahoo - 12-06-2012

Au fait Sephi, ta préférence avec beacon push ? J'ai quelques trucs à faire en PHP avec pas beaucoup de traffic donc je pense tester un de ces deux services.
Les autres aussi hein, si vous avez testé les deux.


RE: Déplacement temps réel - Sephi-Chan - 12-06-2012

BeaconPush cesse sont activité de service Web.

L'autre alternative à PubNub est Pusher, dont le pallier d'utilisation gratuit autorise 100 000 messages par jour, avec 20 connexions concurrentes.


RE: Déplacement temps réel - Astarion - 12-06-2012

(12-06-2012, 01:02 PM)Enlil a écrit : Voici la solution que j'ai adopté pour ma part.

Frontend en js, qui, toutes les 100ms, envoie au serveur les déplacements du joueur, et récupère du même coup les infos des autres joueurs pour rafraîchir. Seules les infos concernant les joueurs ou éléments de décors qui doivent être affichés sont récupérées, pas celles concernant tous les éléments/joueurs de la map entière (vu que seule une partie de la map est visible à un temps donné). C'est le script côté serveur qui détermine quels éléments sont visibles par le joueur ou pas en fonction de sa position.

Je trouve l'envoi de requêtes toutes les 100ms relativement lourd pour le client, mais aussi au niveau de la bande passante ... Je ne sais pas quel protocole tu utilises, mais si c'est du HTTP, c'est vraiment pas performant ... (Envoi de l’entête HTTP à chaque requête !)

Il faut vraiment passer par des Websockets ou abstraction ... Comme dit plus haut, si tu n'as pas de dédié tu peux passer pas des services Web, sinon avec un dédié, un serveur node.js avec socket.io est très simple à mettre en place et vraiment performant !