Организация текстовых MMO игр на PHP - PullRequest
1 голос
/ 19 октября 2011

Я занимаюсь разработкой php текстовой игры.Я организую задачи в играх.В основном задания улучшают понимание игры.

Задача - это группа небольших действий в игре.

Например:

ЗАДАЧА Описание: Вам необходимо украсть велосипед, отремонтировать его и отправить в другой город.

Включает 3 действия.

  1. Кража велосипеда
  2. Ремонт велосипеда
  3. Отправка его в другой город (скажем, в Лондон)

Эти 3 действия возможны на одном из разныхстраницы.

Я создал таблицу для TASK (task_id, title, description (TASK Description Above), STATUS), но я не уверен, как хранить и выполнять действия задачи.

У меня естьодна идея, использовать связанную таблицу TASK_ACTIONS (task_id, action_id, action (?), done)

Но я не уверен, в какой форме хранить действия action (?):

SQL-оператор для проверки действий, как следующие три пункта.

  1. Велосипед был украден или нет.Если да, пометьте действие как DONE
  2. Велосипед был отремонтирован или все еще поврежден.В случае ремонта Mark Action DONE
  3. Велосипед был отправлен в Лондон или нет.Если поставлено, пометьте Действие ВЫПОЛНЕНО

Если все вышеперечисленное помечено как ВЫПОЛНЕНО, отметьте СОСТОЯНИЕ ЗАДАНИЯ как ЗАВЕРШЕННОЕ, покажите следующую задачу.

1 Ответ

1 голос
/ 19 октября 2011

Дешевый способ сделать это будет выглядеть так:

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 (украсть велосипед и починить его) Затем, если все эти идентификаторы действий находятся в таблице user_actions для вашего текущего пользователя. это означает, что пользователь выполнил задачу.

Только не так, что ваша таблица user_actions будет действительно очень быстро расти, если у вас есть пара пользователей.

...