JeuWeb - Crée ton jeu par navigateur
Reflexions sur un système d'achievements - 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 : Reflexions sur un système d'achievements (/showthread.php?tid=6133)

Pages : 1 2 3 4


RE: Reflexions sur un système d'achievements - Maks - 20-05-2012

On ne peut pas écouter le comportement d'un objet en Javascript malheureusement, sinon c'est sûr que ça aurait beaucoup plus simple... ^^


RE: Reflexions sur un système d'achievements - Sephi-Chan - 20-05-2012

Les librairies pour le faire son légions. Ne serait-ce que le composant Events de Backbone.


RE: Reflexions sur un système d'achievements - Maks - 20-05-2012

J'ai du mal chercher car j'ai pas trouvé grand chose ^^

J'ai essayé avec ton lien en ajoutant Backbone & Underscore : http://jsfiddle.net/K4k6q/11/

Mais je dois toujours passer par la méthode trigger() ce qui revient au même que mon log.trace(); qui appelle checkAchievements()

Ca sépare déjà plus la logique c'est sûr.

L'idéal ça serait (mais je doute que ça soit possible)



instance.addEventListener('callMethod', function(action) {

log.trace(action);
checkAchievements();

});


Ton code Backbone c'est le pattern observer non ?


RE: Reflexions sur un système d'achievements - Maks - 20-05-2012

Bon sinon j'ai installé CouchDB plutôt que MongoDB ou Redis tout simplement parce que ça se met direct avec Apache et en service Windows et du coup pas de prise de tête pour l'installation, sinon je savais pas trop quoi choisir.

http://couchdb.apache.org/

Rendez-vous sur : http://127.0.0.1:5984/ après installation

De la doc' en français : http://www.couchdb-fr.net/documentation/api/document

Donc ça marche pas requête HTTP, on peut facilement faire le lien vers Javascript avec XMLHttpRequest.

Par contre ça revient un peu au même si je créé un JSON avec tous mes achievements dedans. Du coup je me demande si ça alourdit pas mon architecture pour rien ?


RE: Reflexions sur un système d'achievements - Sephi-Chan - 20-05-2012

MongoDB et CouchDB ne sont pas interchangeables comme ça, ils ont des avantages et inconvénients différents.
En l'occurrence, pour un scénario avec plein d'écritures, c'est plutôt pour MongDB.

En l'occurrence on s'en fout car on a des volumétries très faibles, mais il faut quand même saisir le concept. Smile


RE: Reflexions sur un système d'achievements - Maks - 20-05-2012

Ouep dans mon cas il y aurait un faible volume. Quoique que je pourrais ajouter pour chaque joueur un document avec les ID des succès déjà débloqués.
Et donc beaucoup de lecture de donnée plus que d'écriture dans mon cas, les succès n'étant pas appelés à être modifiés tous les jours.

L'implémentation Javascript : http://wiki.apache.org/couchdb/Getting_started_with_JavaScript

edit : Y'a une interface graphique sur http://127.0.0.1:5984/_utils/ j'avais pas vu ^^


RE: Reflexions sur un système d'achievements - Sephi-Chan - 20-05-2012

C'est pour stocker les logs de toutes tes actions avec des données arbitraires que tu utilises un système de stockage par document.

De plus, l'interface de requêtes de CouchDB n'est pas forcément très pratique pour ce cas d'utilisation.


RE: Reflexions sur un système d'achievements - Maks - 20-05-2012

Ah d'accord je voyais pas ça comme ça. Dans mon esprit, le log était vidé dès la partie terminée Wink


RE: Reflexions sur un système d'achievements - Maks - 21-05-2012

Pour Node.js il y a le module Cradle. Mais pour la partie cliente, le manque d'informations pour CouchDB est affolante, il n'y a quasiment rien...

Pourtant les possibilités sont intéressantes. Plus que le client fasse quelquechose, que je passe l'info à Node.js grâce à une socket puis que je mette à jour MySQL, je pourrais directement depuis le client mettre à jour CouchDB.


RE: Reflexions sur un système d'achievements - Maks - 22-05-2012

J'ai enfin réussi à y accéder via JS, le problème c'est que CouchDB est sur le port 5984 mais ne gère pas les CORS... Du coup obligé de passer par un proxy Apache.

La gestion par requête HTTP rend peut être CouchDB un peu plus lent que MongoDB, mais quand même on peut faire une application uniquement côté client et stocker des données, je trouve ça quand même impressionnant.

J'ai installé MongoDB aussi. Encore une fois peut d'infos pour JS : http://www.mongodb.org/display/DOCS/Javascript+Language+Center

Avec Node, faut utiliser mongoose : http://mongoosejs.com/

Tuto : http://www.atinux.fr/2011/10/15/tutoriel-sur-mongoose-mongodb-avec-node-js/#more-417