JeuWeb - Crée ton jeu par navigateur
Système d'objectifs à remplir pour les quêtes - 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 : Système d'objectifs à remplir pour les quêtes (/showthread.php?tid=4861)

Pages : 1 2 3


RE: Système d'objectifs à remplir pour les quêtes - Sôbi - 15-04-2016

Bonjour,

Désolé de ressortir un peu ce sujet. Mais je suis intéressé par le principe et je vais vouloir faire un principe de progression de quête dans mon jeu.
Si je reprends l'exemple de Sephi-Cahn
Code :
quests :
      id
      title
      description

objectives :
      id
      quest_id
      type
      monster_to_kill_count
      monster_to_kill_id
      item_to_own_count
      item_to_own_id
      building_to_own_building_type_id
      building_to_own_level
      level_to_reach_level

porgressions :
      objective_id
      user_id
      count
      is_reached

1. Veuillez m'excuser de mon anglais pourris, mais où veux-tu/veut-il en venir en disant "building_to_own_building_type_id" ?

2. Ou veux-tu/veut-il en venir en disant "Type" dans quest également ?

3. Si je comprend bien je vais avoir une quête qui me demande de tuer : 5 loups et 5 poules. J'aurais donc :
Code :
quests :

     id : 1
     title : Tueur d'animaux
     description : Quête débutante

objectives :
     id : 1
     quest_id : 1
     type : ???
     monster_to_kill_count : 5
     monster_to_kill_id : 1 ( loup )
     item_to_own_count : NULL
     item_to_own_id : NULL
     building_to_own_building_type_id : NULL
     building_to_own_level : NULL
     level_to_reach_level : NULL

objectives :
     id : 2
     quest_id : 1
     type : ???
     monster_to_kill_count : 5
     monster_to_kill_id : 2 ( poule )
     item_to_own_count : NULL
     item_to_own_id : NULL
     building_to_own_building_type_id : NULL
     building_to_own_level : NULL
     level_to_reach_level : NULL
C'est bien ça ? 

4. Et si je veux que la quête te donne une arme/objet/level up à la fin de celle-ci, comment feriez-vous ?

Merci d'avance ! Smile


RE: Système d'objectifs à remplir pour les quêtes - Thêta Tau Tau - 15-04-2016

1. "building_to_own" = bâtiment à avoir, "building_type_id" : id du type de bâtiment (il le précise pour que ce soit clair que ce n'est pas une id d'instance de bâtiment qu'on doit mettre ici).

2.Je suppose que "type" c'est type d'objectif, par exemple "monster_to_kill". Cette colonne ne me semble pas indispensable, mais peut être que ça simplifie les requête.

3. Oui c'est ça.

4.Il faut ajoutter une table, dans le même style que la table objectives, par exemple :

rewards : id, quest_id, type, xp, gold, item_id, item_count...


RE: Système d'objectifs à remplir pour les quêtes - Sôbi - 15-04-2016

(15-04-2016, 03:21 PM)Thêta Tau Tau a écrit : 1. "building_to_own" = bâtiment à avoir, "building_type_id" : id du type de bâtiment (il le précise pour que ce soit clair que ce n'est pas une id d'instance de bâtiment qu'on doit mettre ici).

2.Je suppose que "type" c'est type d'objectif, par exemple "monster_to_kill". Cette colonne ne me semble pas indispensable, mais peut être que ça simplifie les requête.

3. Oui c'est ça.

4.Il faut ajoutter une table, dans le même style que la table objectives, par exemple :

rewards : id, quest_id, type, xp, gold, item_id, item_count...

Et bien je te remercie pour cette réponse claire et rapide.
Ça va m'avancer dans mes réflexions Smile

Edit : Youhou \o/ 100ième message Big Grin


RE: Système d'objectifs à remplir pour les quêtes - Sôbi - 24-06-2016

Bonjour,

Désolé pour ce double post, ça vaut le coup pour moi là Big Grin

Si je reprends ceci :
Code :
quests :


     id : 1
     title : Tueur d'animaux
     description : Quête débutante 

objectives :
     id : 1
     quest_id : 1
     type : ???
     monster_to_kill_count : 5
     monster_to_kill_id : 1 ( loup )
     item_to_own_count : NULL
     item_to_own_id : NULL
     building_to_own_building_type_id : NULL
     building_to_own_level : NULL
     level_to_reach_level : NULL

objectives :
     id : 2
     quest_id : 1
     type : ???
     monster_to_kill_count : 5
     monster_to_kill_id : 2 ( poule )
     item_to_own_count : NULL
     item_to_own_id : NULL
     building_to_own_building_type_id : NULL
     building_to_own_level : NULL
     level_to_reach_level : NULL

Maintenant ma question :
Je veux faire des quêtes sous forme d'étape et les étapes sont une liste d'objectifs, comment feriez-vous vous ?

Exemple : 
Quêtes de découvertes.

Etape 1 à 2 objectifs :
- Tuer 5 loups
- Tuer 5 poules 

Etape 2 à 1 objectif :
- Parler à quelqu'un ...

Etc...

J'imaginais moi du coup ceci:
Quests <--> Steps <--> Objectives <--> Progressions
==> Mais je me demande comment faire la jointure des 4 quetes

Egalement, si je veux savoir la progression de la quête de base, il faudrait que j'ai une table genre "progession_quest" pour dire si la quête est fini ou en cours, etc ... ? 

Not Idea ?


RE: Système d'objectifs à remplir pour les quêtes - Xenos - 24-06-2016

Salut,

Une table "quest" comme indiquée

Une table "quest_step (id, id_quest, step_index, fullfilled [bool])" + foreign key id_quest -> quest.id et primary key [auto_increment] (id_quest, step_index) pour pouvoir ordonner les étapes de quêtes et fullfilled histoire de savoir où on en est (je n'ai pas mis de contrainte sur l'ordre des fullfill, on peut faire des "trous" donc: charge à ton système d'insert/update dans la BDD de faire les checks si tu veux, ou charge à toi de poser le TRIGGER adéquate)

N tables d'objectifs, un par type (quest_objective_kill, quest_objective_find,...) car je suis contre les tables hyper-génériques avec des paquets de colonnes à NULL. Chacune de ces tables peut alors avoir une foreign key quest_objective_*.id_quest_step -> quest_step.id. Charge à toi là encore de voir si deux tables quest_objective_* peuvent référence le même quest_step (mais ce serait étrange), ou s'il te faut mettre des checks pour éviter cela.

Perso, je ne ferai pas de "progression" qui traine: je pense qu'il vaut mieux avoir 6 entrées dans "quest_objective_kill" pour tuer 1 sanglier, puis 1 autre, puis 1 autre etc plutôt que des objectifs qui se remplissent partiellement (et charge à ton affichage de faire le grouping). Après, tu peux mettre du progress avec une colonne "objective_total_count" et "objective_achieved_count" dabs quest_step: le total indique combien de fois cet objectif (donné par le quest_objective_* correspondant) doit être rempli, et le achieved_count indique le nombre de fois où cet objectif a été rempli. Les deux structures se valent, mais j'aime mieux la 1ere car elle limite les types de données à traiter.