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 - 18-05-2012

Merci pour vos réponses les mecs Wink

Pour le serveur j'utilise Node.

Donc l'idée ça serait d'avoir un log contenant le plus d'infos possibles, permettant d'avoir un succès genre "effectuer une attaque de plus de 100 dégâts sur un boss du jeu", donc en loggant l'action attaquer(), le type de la cible, et les dégâts.

Ensuite on vérifie si cela correspondrait à un succès existant ?

Seulement il faudrait traduire la String "effectuer une attaque de plus de 100 dégâts sur un boss du jeu" en un schéma d'action à valider car on peut pas comparer "effectuer une attaque de plus de 100 dégâts sur un boss du jeu" à log('attaque', 'boss', degats);

L'idéal ça serait d'avoir des succès enregistrés dans une BDD, pas une suite de if dans un fichier à part Smile


RE: Reflexions sur un système d'achievements - niahoo - 18-05-2012

ben si tu log le type d'action, l'id de la cible, l'id de l'attaquant, et que tu log ça dans une table au lieu d'un fichier, c'est quand même beaucoup plus simple à parser :p


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

Le plus simple est de stocker du JSON, comme ça rien à parser : tu codifies l'informations en objets prêts à l'emploi.
Je dirais même que c'est un bon cas d'utilisation de MongoDB.


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

En effet ca m'etait aussi venu a l'esprit Smile
Je ferai un feedback d'une implementation JS/Node si ca interesse Wink


RE: Reflexions sur un système d'achievements - archANJS - 19-05-2012

Ça intéresse Confusediffle:


RE: Reflexions sur un système d'achievements - Dexyne - 19-05-2012

Aussi. (pour l'intérêt Tongue)


RE: Reflexions sur un système d'achievements - Ter Rowan - 19-05-2012

Ça intéresse, mais avec un peu plus d explications que le post que tu viens d envoyer sur l installation :p je sais je suis faignant concernant les recherches Confusediffle:


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

J'ai gratouillé ça à 3h du mat', je viens de rajouter un petit bout pour toi sur l'installation ^^


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

Une ébauche à tester ici : http://jsfiddle.net/K4k6q/10/



var achievements = {

'1' : {

'name' : 'Bourrin !',
'description' : 'Vous avez attaqué 5 fois de suite',
'unlock' : {

'1' : 'attaquer',
'2' : 'attaquer',
'3' : 'attaquer',
'4' : 'attaquer',
'5' : 'attaquer'

}
},

'2' : {

'name' : 'Stratège',
'description' : 'Belle stratégie pour survivre',
'unlock' : {

'1' : 'attaquer',
'2' : 'soin',
'3' : 'attaquer',
'4' : 'soin'

}
}
};

function Log() {

this.queue = [];

}

Log.prototype.trace = function(action) {

this.queue.unshift(action);
this.checkAchievements();

};

Log.prototype.checkAchievements = function() {

for (var id in achievements) {

var unlock = achievements[id].unlock;
var completed = 0;
var i = 0;

for (var step in unlock) {

var action = unlock[step];

(this.queue[i] === action) ? ++completed : null;

++i;

}

if (completed === parseInt(step)) {

alert('achievement unlocked : ' + achievements[id].name);

delete achievements[id];

}
}
};

function Personnage() {


}

Personnage.prototype.attaquer = function() {

log.trace('attaquer');

};


Personnage.prototype.soin = function() {

log.trace('soin');

};

var perso = new Personnage();
var log = new Log();

/*
* Tests
*/

/*

perso.attaquer();
perso.soin();
perso.attaquer();
perso.soin();

*/

/*

perso.attaquer();
perso.attaquer();
perso.attaquer();
perso.attaquer();
perso.attaquer();

*/


/*

perso.attaquer();
perso.soin();
perso.attaquer();
perso.attaquer();
perso.soin();

*/




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

J y intègrerais bien un systeme événementiel :

L achèvement ne fait pas partie du log, mais l écoute. Comme ça tu peux avoir un autre module qui capte des infos du log pour en faire autre chose, sans mettre le foutoir dans ton code de log