Vous pouvez recruter des acolytes afin d'aller chercher des composants qui vous serviront à crafter des objets.
Envoyer des gens coûte de l'or, rechercher une recette coûte aussi de l'or. Soyez donc un bon gestionnaire de vos ressources. Et le temps passe...
Plus, la zone explorée par vos acolytes est dangereuse plus cela vous coûtera cher.
Mais s'ils sont courageux, ils vous rapporteront de fantastiques composants. Et le courage se forge à mesure des promenades aventureuses.
Les recettes sont générées automatiquement selon l'algorithme du Deux ex machina, et elles sont innombrables.
Pour crafter, il faut connaître des recettes.
C'est en cherchant qu'on devient un meilleur chercheur. Plus un chercheur de recettes sera compétent, meilleures seront ses recettes, mais elles seront aussi plus compliquées (beaucoup de composants variés).
Les objets que vous créez peuvent être utilisés pour aider vos acolytes dans leur quêtes.
Où encore vous aider vous-même à rester en ce monde.
Développé sans framework, ni bases de données. Tout est sauvegardé sous forme de fichiers. Les fichiers de monstres et lieux
sont modifiables durant une partie. Quasiment pas de JavaScript. HTML 5 (mais sous-utilisé).
Réalisé par David Lafourcade (ArtFX)
Principe des combats
Un personnage (dit 'acolyte' dans le jeu) dispose de 6 caractéristiques : ATTaque, DEFense, ARMure, COUrage, Point De Vie, RAPidité. On définir un jet sous une caractéristique comme un tirage aléatoire entre 0 et la valeur de cette caractéristique. Par exemple si ATT=10, un jet sous ATT sera une valeur tirée aléatoirement entre 0 et 10. On note dans la suite une telle valeur JET(ATT).
Lors d'un combat, en premier lieu est déterminé l'ordre de frappe des individu (acolytes + monstres) selon la RAP décroissante. L'acolyte/monstre le plus rapide frappera donc en premier. L'attaque consiste à comparer JET(ATT) de l'attaquant à JET(DEF) de la cible. Si JET(ATT) <= JET(DEF), l'attaque a échoué. Dans le cas contraire, l'attaque touche, les dégats infligés sont la différence entre l'attaque et la défense à laquelle on soustrait un jet d'armure du défenseur : (JET(ATT) - JET(DEF)) - JET(ARM). Cette valeur est déduite des PDV du défenseur. Si ceux-ci tombent à 0 ou moins le défenseur est mort.
Le combat se déroule en un maximum de 20 rounds. Le combat se termine si une des trois conditions suivantes est vérifiée : 1) tous les monstres sont éliminés, 2) tous les acolytes sont éliminés ou 3) les acolytes encore vivants fuient. Au début du combat, la VOLonté du groupe est calculée comme la somme du COUrages de chaque membre. On appelle VOLMAX cette VOLonté de départ. La VOLonté évolue au cours du combat selon les modalités suivantes :
- -1 en début de chaque round (pour simuler la fatigue)
- -1 quand un membre du groupe se fait toucher
- +1 quand un membre du groupe touche un ennemi
- +1 quand un membre du groupe tue un ennemi
La VOL ne dépasse jamais la VOLMAX. A chaque fin de round un JET(VOLMAX) est réalisé et comparée à la VOL courante. Si le jet est supérieur, le groupe s'enfuit.
L'objet de la VOLonté est d'obtenir des groupes pouvant fuir si la situation est tendue, sans pour autant ne jamais finir un combat (et donc ne jamais rapporter de récompense).
Principe du Craft
Le joueur est invité à crafter des objets dont les acolytes peuvent être équipés. Ces objets fournissent des bonus plus ou moins importants aux caractéristiques (ATTaque, DEFense, ARMure, COUrage, Point De Vie, RAPidité) des acolytes les portant. L'intêret est de rendre les acolytes plus puissants, ils pourront donc survivre à des lieux d'exploration plus dangereux et rapporter des composants plus rares pour pouvoir 'crafter' de meilleurs objets afin de rendre les acolytes plus forts.. (d'accord ! ça se mord la queue, mais c'est un jeu...).
Le joueur ou la joueuse qui incarne un apprenti crafteur a la possibilité moyennant un peu d'or de rechercher de nouvelles recettes de craft. Chercher une nouvelle recette prend un peu de temps (le personnage veillit) et aboutit à la découverte d'une recette ayant les caractéristiques suivantes :
- construction possible d'un type d'objet parmi : arme, bouclier, plastron, anneau, chausse
- bonus fourni par cet objet, par exemple : points de vie +5 et attaque +7
- liste de composants nécessaires pour réaliser la recette. Par exemple : queue de chat × 1 | dard de frelon × 1
- un nom d'objet, correspondant à une unique configuration de type et des bonus. Par exemple : Charoze correspond à des chausses aux bonus points de vie +6 | defense +5
Pour effectivement réaliser la recette et obtenir l'objet, il faut disposer des composants qui seront consommées. On rappelle ici, que les composants sont les récompences rapportées par les acolytes à l'issue de leurs missions.
Le nom d'un craft (de sa recette en fait) est généré automatiquement en fonction de son type et de ses bonus (qui eux, sont générés aléatoirement lors de la recherche de la recette). Le nom suit le schéma suivant :
- un préfixe de trois lettres pour le type: PEE pour les armes, BOU pour les boucliers, PLA pour les plastrons, ANO pour les anneaux, et CHA pour les chausses ;
- des syllables de deux lettres, une par bonus. Le nombre de bonus est limité à 12 et peut donc être redondant ;
- Pour chaque syllable chaque voyelle (AEYUIO) correspond à une caractéristique. Par exemple, O correspond aux points de vie
- Pour chaque syllable chaque consonne (de B à Z) correspond à un bonus. Par exemple, R correspond a +6.
Ainsi, il est possible d'affubler automatiquement les objets de noms qui correspondent à leur nature. Par exemple, on dispose d'objets tels que :
- bouclier Bouru : armure +6.
- anneau Anoropoqiqura : points de vie +6 | points de vie +8 | courage +9 | armure +9 | attaque +6
- casque Kaszeriqopito : defense +5 | courage +6 | points de vie +9 | courage +8 | points de vie +7
- casque Kastosisidisyrozu : points de vie +7 | courage +10 | courage +10 | courage +11 | rapidite +10 | points de vie +6 | armure +5
- arme Peezirypu : courage +5 | rapidite +6 | armure +8
A chaque recherche de nouvelles recettes, il y a une petite chance que le niveau de 'craftitude' de l'apprenti crafteur augmente. Plus ce niveau est élevé, plus la recette recherchée a des chances d'être celle d'un objet puissant. Ainsi, il est aventageux de rechercher autant de recettes possibles afin, pour un objet donné, d'avoir celle dont les composants sont les plus faciles à obtenir (ceux-ci sont complètement tirés au hasard). Cependant, cette recherche fait vieillir le crafteur et coûte des pièces d'or. L'or peut s'obtenir en vendant une partie de son inventaire (qui est rempli par les acolytes lors des missions). On ne 'loot' jamais de l'or.
Perdre et gagner
On gagne tant qu'on ne perd pas :)
On perd si une des conditions suivantes est réalisée :
- atteindre l'age de 100 ans ;
- être ruiné : avoir un inventaire vide et plus assez d'or pour envoyer au moins un acolyte explorer le lieu le moins cher.
Interface utilisateur
Ci-dessous, une capture d'écran commentée de la page principale de jeu (redirection automatique après la connexion par login/mdp).
Difficultés rencontrées
- Equilibrage du niveau des lieux, des monstres (encore en cours) ;
- Conception UI et retours d'informations (merci aux testeurs) ;
- Gestion des combats (problèmes d'intégrité des données) ;
- Trier par priorité les multiples retours de bugs et demandes multiples des joueurs testeurs (environ une dizaine).
On notera que l'approche consistant à ne faire qu'un seul fichier source (crafty.php) est volontaire, et ce afin de garder le projet le plus simple possible. Les autres fichiers sont exclusivement des fichiers de données sans code php.
Développements restants
- Un hôtel des ventes entre joueurs (aspects multi-joueur) ;
- Ajout de lieux et monstres ;
- Amélioration/simplification de l'interface (avec plus de JavaScript) ;
- Mieux documenter le code ;
- Arène et tests HDV ;
- Trouver causes de différence de comportement entre Chrome et FF...
Correctifs (à partir du 21/03/2019)
- 21/03/2019 modification de cette documentation en ligne ;
- 21/03/2019 couleur de fond différente selon la nature de l'objet dans l'inventaire (demande joueurs) ;
- 22/03/2019 tri des objets de l'inventaire par quantité décroissante (demande joueurs) ;
- 23/03/2019 ajout de possibilité de monstre unique par niveau (marqueur * dans fichier de monstres) ;
- 23/03/2019 essai d'équilibrage et création de 3 niveaux ;
- 23/03/2019 failsafe 'scolopendre' si erreur de monstre inexistant dans fichier lieux ;
- 24/03/2019 information et lieux et évaluation auto de leur difficulté ;
- 24/03/2019 repliage/dépliage info acolyte ;
- 24/03/2019 affichage du nb de lieux total ;
- 24/03/2019 qq lieux en plus ; 21 lieux au total ;
- 24/03/2019 bug css sous Chrome ;
- 24/03/2019 qq limitations pour les loots ;
- 15/05/2019 ajout de qq sons lors des actions - juste pour tester l'effet - pas encore de bouton de désactivation des sons ;
- 15/05/2019 ajout d'onglets (pour accomoder futurs HDV et Arène) ;
- 16/05/2019 ajout v1.0 d'un HDV ;
- 30/05/2019 correction bug de craft si recette affichée statiquement
Source du projet
http://www.jeuxdemots.org/CRAFTY/SOURCES/ (l'extension du fichier a été changée en .nophp pour pouvoir l'ouvrir depuis un navigateur sans être interprété comme un fichier php)
Source des fichiers de données :
•
monstres
•
lieux
•
images
Dernière mise à jour : 30 avril 2019.