JeuWeb - Crée ton jeu par navigateur
Vitesse d'un RPG AJAX : la faute au serveur ? - 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 : Vitesse d'un RPG AJAX : la faute au serveur ? (/showthread.php?tid=5268)

Pages : 1 2 3 4 5 6


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Sephi-Chan - 20-02-2011

Il faut utiliser Ajax et le Push en complément. Ici, quand on se déplace, ça envoie une requête Ajax à l'URL /characters/:character_id/move_to/:x/:y", qui exécute la méthode move que j'ai présenté.

L'appel current_character.move_to lance la méthode move_to sur un objet Character, qui est mapé avec la base de données.

Et oui, il y a un éditeur basique sur http://demo-vegetaland.heroku.com/map/edit, car je voulais t'illustrer le principe des sprites CSS : tout ça ne nécessite qu'une seule image (/images/sprite.gif).

Note aussi que les feuilles de style sont générée avec SASS (en l'occurrence, j'utilise le moteur SCSS). Tu peux voir la veuille originale (/stylesheets/sass/map.scss) pour avoir une idée du potentiel de cet outil : j'ai accès à des variables, à des boucles, etc.

Pour utiliser BeaconPush avec PHP, je te conseille plutôt d'utiliser un simple wrapper à cURL, tel que curl.


Sephi-Chan


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Cawrotte - 20-02-2011

Merci beaucoup, je regarde cela !
Si tu veux tester mon jeu à tout moment :

http://vegetaland.yann-p.fr/testgame.php?key=b7t5d6d&site=jeuweb
Je ne sais pas qui a cliqué sur le lien, mais celui ci se déplace drôlement vite ! :o
Moi j'ai une intervalle de 3 secondes entre les cases (en même temps je suis à 33k/s en connexion...)
Sephi Chan, ton éditeur de map est au dessus de mes espérences... je jubile...
Tu es vraiment très doué Smile
Bon... par où commencer ? ^^


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Cawrotte - 20-02-2011

Bon... je vais commencer doucement.

1) Essayer de faire le script pour actualiser le div...

Oulala je ne sais pas par ou commencer... JS est mon pire ennemi...
De plus la structure de Vegetaland est différente : ce n'est pas x(num) et y(num) mais x(num)y(alpha)

Donc la coordonnée ne sera pas 1 ; 1 mais a ; 1
Déjà un obstacle...

Ensuite, on ne peut pas se déplacer sur toutes les cases mais sur les 4 cases alentours...

Bref, je fonce dans le mur, je n'y connais rien à JS ! =(


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Cawrotte - 20-02-2011

Bon je réfléchis à ca pendant les vac's. Merci beaucoup Sephi, tu m'apprends plein de trucs !
Moi je vais partir au ski.

Tu pourrais laisser les pages dispo Sephi Chan, s'il te plaît, pour que je puisse les retrouver si j'ai un peu de temps sur le PC en vacances ?

Merci d'avance !


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Sephi-Chan - 20-02-2011

Effectivement, il va falloir apprendre à utiliser Javascript.

Te devrais utiliser des coordonnées numériques, c'est plus efficace et simple en terme de traitement des données (surtout en PHP, qui ne permet pas de faire "A".next).

A la limite, tu peux utiliser des lettres à l'affichage. Au lieu d'afficher le nombre pour l'axe Y, tu fais :


$letters = array(null, 'A', 'B', 'C', ...); // Pour que 1 => 'A'
echo $letters[$y];

Je modifierai le script pour n'autoriser que les cases alentours, mais ça n'est pas bien difficile. Smile

Et ne t'inquiète pas, le site reste en place (Heroku powa).


Sephi-Chan


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Cawrotte - 20-02-2011

Merci beaucoup tu es génial !

Ce que je vais faire c'est donner un identifiant numérique unique à chaque case (1 => 170) et appliquer ton script (en plus les déplacement sont fluides, ultime summum !)
Quand je pense à la petite chose qu'aurait été Vegetaland sans vous !
Et l'éditeur ! Rapide et puissant ! Franchement, je suis sco-tché Smile

Je vais donc réfléchir à cela.

Seul truc : comment détecter que la connexion Beaconpush est établie ?
C'est secondaire, mais il est bon de le savoir. Parce que moi j'actualisais pour que ca vienne ^^

J'ai aussi regardé les données transférées : pour 10 déplacements, moins d'1KO ! Moi j'arrivais à 1 MO en 15 mn sans toucher au jeu...
Ca déchire le béton ca :p

Bonne soirée sur ce.
Bonnes vacances pour ceux qui le sont Wink


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Sephi-Chan - 20-02-2011

Chaque case a un identifiant, un X, un Y et un typ de terrain.
L'éditeur est tout à fait basique !? Qu'est-ce que tu utilises pour faire tes cartes ? :o

Je ne sais pas s'il est possible de déterminer quand la connexion est établie. D'après mes tests, c'est très rapide (moins d'une seconde).
Et comme je te l'expliquais, actualiser plusieurs fois ne change rien. Certains navigateurs semblent charger la page jusqu'à ce qu'un mouvement survienne : c'est un effet lié au long polling, il ne faut pas s'y fier.


Sephi-Chan


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Cawrotte - 20-02-2011

Moi pour faire mes cartes je fais deux boucles emboitées :

boucle de 1 à 17
donne abscisse;
boucle de a à j
donne ordonée
abscisse.ordonnee donne coordonnee
recupere les infos de la map (sous forme 000_111_222_333_444 dans 170 champs de la BDD)
découpe les infos de la map
avec elles, génère les textures, objets, etc... chaque donnée a un rôle précis
on met ca dans un tableau, on génère les possibilités de move, on affiche les autre joueurs...
finboucle
finboucle

Voilà en gros


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Sephi-Chan - 20-02-2011

Peux-tu montrer le script qui génère ta map ?


Sephi-Chan


RE: Vitesse d'un RPG AJAX : la faute au serveur ? - Zack - 24-02-2011

Comme on parlait de beaconpush à un moment donné, je me permet de demander si leur serveur n'avait pas un problème depuis mercredi ? Parce que dès que j'essai d'ouvrir un canal ou d'envoyer quelque chose, j'ai le droit à 504 Gateway Time-out.

2 jours que ça dure, c'est pas vraiment sérieux leur truc. Ou alors c'est moi, mais j'ai pourtant rien changer depuis.

Donc vegetaland, je commence à comprendre pourquoi tu disais que t'arrivais pas à le faire fonctionner ^^