2010-09-08 4 views
1

Quelqu'un m'a demandé aujourd'hui comment ils devraient stocker les objectifs de quête dans une base de données SQL. Dans ce contexte, pensez à un RPG. Des objectifs pourraient inclure certains des éléments suivants:Comment stocker les objectifs (pensez RPG Quest) dans SQL

  • Découvrez [Localisation]
  • Tuer n [Type MOB]
  • Acquire n [Objet]
  • obtenir un [compétence] dans [Skillset]
  • Toutes les autres choses que vous obtenez dans les jeux de rôle

Le mieux que je pouvais trouver est:

Quest 1-* QuestStep 
QuestStep 1-* MobsToKill 
QuestStep 1-* PlacesToFind 
QuestStep 1-* ThingsToAcquire 
QuestStep 1-* etc. 

Cela semble un peu maladroit - devraient-ils être le stockage d'une requête d'une certaine description au lieu (ou une formule ou ???)

Toutes les suggestions appréciées

Répondre

3

je voudrais créer quelque chose comme ça.

Pour la table Quête:

| ID | Title | FirstStep (Foreign key to GuestStep table) | etc. 

La table QuestStep

| ID | Title | Goal (Foreign key to Goal table) | NextStep (ID of next QuestStep) | etc. 

Ofcourse c'est là le début dur partiel, comment pouvons-nous décrire les objectifs? Je dirais créer un enregistrement pour le but dans la table Goal et enregistrer chacun des champs du goal (IE combien de monstres de quel type tuer, quel endroit visiter, etc.) dans une table GoalFields, ainsi:

table Objectif:

| ID | Type (type is one from an Enum of goal types) | 

le GoalFields tableau

| ID | Goal (Foreign key to goal) | Field | Value | 

Je comprends que cela peut être un peu vague, alors voici un exemple de ce dat dans la base de données pourrait ressembler.

Table Quest

| 0 | "Opening quest" | 0 | ... 
| 1 | "Time for a Sword" | 2 | ... 

table QuestStep

| 0 | "Go to the castle" | 0 | 1 | ... 
| 1 | "Kill two fireflies" | 1 | NULL | ... 
| 2 | "Get a sword" | 2 | NULL | ... 

table Goal

| 0 | PlacesToFind | 
| 1 | MobsToKill | 
| 2 | ThingsToAcquire | 

Table GoalFields

| 0 | 0 | Place | "Castle" | 
| 1 | 1 | Type | "firefly" | 
| 2 | 1 | Amount | 2 | 
| 3 | 2 | Type | "sword" | 
| 4 | 2 | Amount | 1 | 
+0

Je vous remercie d'excellentes réponses. – Basic

8
  • L'utilisateur peut se lancer dans de nombreuses quêtes.
  • Une quête appartient à un seul utilisateur (dans ce modèle).
  • Une quête a plusieurs buts, un but appartient à une seule quête.
  • Chaque objectif est l'un des objectifs possibles.
  • Un but possible est une combinaison autorisée d'une action et d'un objet de l'action.
  • PossibleGoals Le tableau répertorie toutes les combinaisons d'actions et d'objets autorisées.
  • Les objectifs sont classés par StepNo dans une quête.
  • Quantity définit le nombre d'objets sur lesquels une action doit agir (kill 5 MOBs).
  • Object est un super-type pour tous les objets possibles.
  • Location, MOBType et Skill sont des sous-types d'objet, chacun avec des propriétés différentes (colonnes).

alt text

+0

Merci pour une excellente réponse - Les réponses sont fondamentalement la même approche donc j'ai attribué à Pim comme sa réponse était la première. Cela dit, merci d'avoir fait l'effort de faire un si joli schéma de schéma. +1 – Basic

+0

Il devrait y avoir une table de jointure entre les utilisateurs et les quêtes puisque le nom et la description ne changeront probablement pas d'un joueur à l'autre. – Stephen

Questions connexes