基于PHP文本的MMO游戏任务组织

时间:2011-10-19 11:25:42

标签: php mmo

我正在开发基于php文本的游戏。 我在游戏中组织任务。基本上任务增加了对游戏的理解。

任务是游戏中的一组小动作。

例如:

任务描述:您需要偷自行车,修理并运送到另一个城市。

它包括3个动作。

  1. 偷自行车
  2. 修理自行车
  3. 将它送到另一个城市(比如伦敦)
  4. 这三个动作可以在一个不同的页面上进行。

    我为TASK创建了一个表(task_id,title,description(TASK Description Above),STATUS),但我不确定如何存储和执行任务操作。

    我有一个想法,使用相关表TASK_ACTIONS(task_id,action_id,action(?),done)

    但我不确定以哪种形式存储动作动作(?):

    检查操作的sql语句类似于以下三点。

    1. 自行车是否被盗。如果是,请将行动标记为已完成
    2. 自行车已经修好或仍然受损。如果修复,请执行Mark Action DONE
    3. 自行车是否已运往伦敦。如果发货,请执行Mark Action DONE
    4. 如果以上所有标记为DONE,则将TASK STATUS标记为COMPLETED,显示下一个任务。

1 个答案:

答案 0 :(得分:1)

这样做的便宜方式如下:

tasks
{
    user_id
    has_theft_bike
    has_repaired_bike
    ... 
}

然而,这不容易扩展。更正确的方法是在动作表中定义所有动作

 actions // defines all possible actions (also actions not part of a task)
 {
      action_id
      description
 }

 user_actions // has one record for every action a user commits
 {
      user_id
      action_id
      date // possible extra
 }

 tasks // all possible tasks
 {
     task_id
     name
 }

 task_actions // all actions linked to a task
 {
     task_id
     action_id
 }

这样您就可以记录用户执行的每个操作。你可以做一个偷自行车动作和修理自行车动作。

现在您可以检索完成任务5所需的所有操作(偷自行车并修理它)。然后,如果所有这些操作ID都在当前用户的user_actions表中。这意味着用户已完成任务。

如果你有几个用户,那就不是你的user_actions表真的会非常快。