小编典典

如何在SQL中存储目标(认为是RPG Quest)

sql

今天有人问我他们应该如何在SQL数据库中存储任务目标。在这种情况下,请考虑一个RPG。目标可能包括以下一些目标:

  • Discover [Location]
  • Kill n [MOB Type]
  • Acquire n of [Object]
  • Achieve a [Skill] in [Skillset]
  • All the other things you get in RPGs

我能想到的最好的是:

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

这似乎有些笨拙-他们是否应该存储某个描述的查询(或公式或???)

任何建议表示赞赏


阅读 188

收藏
2021-04-28

共1个答案

小编典典

我会创建这样的东西。

对于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 | ...

QuestStep表

| 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 |

GoalFields表

| 0 | 0 | Place | "Castle" |
| 1 | 1 | Type | "firefly" |
| 2 | 1 | Amount | 2 |
| 3 | 2 | Type | "sword" |
| 4 | 2 | Amount | 1 |
2021-04-28