今天有人问我他们应该如何在SQL数据库中存储任务目标。在这种情况下,请考虑一个RPG。目标可能包括以下一些目标:
我能想到的最好的是:
Quest 1-* QuestStep QuestStep 1-* MobsToKill QuestStep 1-* PlacesToFind QuestStep 1-* ThingsToAcquire QuestStep 1-* etc.
这似乎有些笨拙-他们是否应该存储某个描述的查询(或公式或???)
任何建议表示赞赏
我会创建这样的东西。
对于Quest表:
| ID | Title | FirstStep (Foreign key to GuestStep table) | etc.
QuestStep表
| ID | Title | Goal (Foreign key to Goal table) | NextStep (ID of next QuestStep) | etc.
当然,这是最困难的部分,我们如何描述目标?我想说的是在目标表中为目标创建一条记录,并将目标的每个字段(例如,要杀死多少种小怪,要访问的位置等等的小怪)保存在目标表中,因此:
目标表:
| ID | Type (type is one from an Enum of goal types) |
GoalFields表
| ID | Goal (Foreign key to goal) | Field | Value |
我知道这可能有点含糊,所以这是数据库中dat可能看起来像的一个示例。
任务表
| 0 | "Opening quest" | 0 | ... | 1 | "Time for a Sword" | 2 | ...
| 0 | "Go to the castle" | 0 | 1 | ... | 1 | "Kill two fireflies" | 1 | NULL | ... | 2 | "Get a sword" | 2 | NULL | ...
目标表
| 0 | PlacesToFind | | 1 | MobsToKill | | 2 | ThingsToAcquire |
| 0 | 0 | Place | "Castle" | | 1 | 1 | Type | "firefly" | | 2 | 1 | Amount | 2 | | 3 | 2 | Type | "sword" | | 4 | 2 | Amount | 1 |