代码之家  ›  专栏  ›  技术社区  ›  Basic

如何在SQL中存储目标(比如RPG任务)

  •  1
  • Basic  · 技术社区  · 15 年前

    今天有人问我,他们应该如何在SQL数据库中存储任务目标。在这种情况下,想想RPG。目标可包括以下部分:

    • 杀死n[怪物类型]
    • 获取[对象]的n
    • 在[技能集]中获得[技能]
    • 你在RPG里得到的所有其他东西

    我能想到的最好办法是:

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

    这似乎有点笨重-他们应该存储一个查询的一些描述,而不是(或公式或??)

    2 回复  |  直到 15 年前
        1
  •  4
  •   Pim Jager    15 年前

    我会创造这样的东西。

    对于任务表:

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

    QuestStep表

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

    当然,这是困难的开始,我们如何描述目标?我要说的是在GoalFields表中为目标创建一条记录,并将目标的每个字段(即,要杀死多少类型的怪物,访问什么位置等)保存在GoalFields表中,这样:

    目标表:

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

    | 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 | 
    
        2
  •  9
  •   Damir Sudarevic    15 年前
    • 用户可以执行许多任务。
    • 一个任务有很多目标,一个目标只属于一个任务。
    • 每个目标都是一个可能的目标。
    • PossibleGoals 表列出了所有允许的操作和对象组合。
    • 目标按顺序排列 StepNo 在一次任务中。
    • Quantity
    • Object 是所有可能对象的超级类型。
    • Location , MOBType ,和 Skill

    alt text