Структура таблиц

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Структура таблиц

Сообщение Williams » 22.06.2009 (Пн) 21:02

Пишу мини онлайн-игрушку. В ней локации. В каждой локации могут быть игроки, монстры, предметы. У каждого игрока могут быть параметры, предметы.
Как лучше организовать структуру таблиц? База MS SQL.
И вы думаете, что вас оставят в живых после прочтения этого поста?

trash
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 113
Зарегистрирован: 28.01.2009 (Ср) 12:09

Re: Структура таблиц

Сообщение trash » 23.06.2009 (Вт) 10:46

Так, чтобы она была оптимизирована под наиболее частые запросы.

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Структура таблиц

Сообщение VBTerminator » 23.06.2009 (Вт) 11:01

Таблицы: "Локации", "Персонажи" (в ней хранятся игроки и монстры, их различия только в значении поля "Тип"), "Предметы".
Связи:
  • Локации->Персонажи (много-ко-многим)
  • Локации->Предметы (много-ко-многим)
  • Персонажи->Предметы (много-ко-многим)

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Структура таблиц

Сообщение Ramzes » 23.06.2009 (Вт) 16:53

Таблица локаций
Таблица игроков
таблица монстров
таблица предметов
таблица параметры

таблица Локация-Игроки
таблица Локация-Монстры
таблица локация-пердметы
таблица игрок-предметы
таблица игрок-параметры

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Структура таблиц

Сообщение karlex » 23.06.2009 (Вт) 17:18

Код: Выделить всё
Локации (м)<->(м) Игроки

Один игрок может находиться сразу же на нескольких локациях?
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Структура таблиц

Сообщение VBTerminator » 23.06.2009 (Вт) 18:05

Ramzes писал(а):таблица игрок-параметры

Если я правильно понял, а именно что таблица "параметры" включает в себя такие поля, как "здоровье", "статус", "координаты" и т. д., получается, что один игрок может, к примеру, иметь несколько "здоровий" и находиться в нескольких местах (поле "координаты")? Или если одному игроку соответствует одна такая запись параметров, то смысл разделять игрока и данные о нём на две таблицы?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Структура таблиц

Сообщение Ramzes » 24.06.2009 (Ср) 9:14

VBTerminator это уточнялось? если да, то я что-то пропустил. И Если таки ты прав, то ты прав не имеет смысла создавать отдельную таблицу для параметров. Но я подумал, что раз параметры указаны отдельно их можно рассматривать как объекты, а значит для них нужно использовать отдельную таблицу

karlex Это тоже не уточнялось. И если игрок может находится только на одной локации, тогда разумнее сделать поле в таблице игроков (ИДЛокации)

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Структура таблиц

Сообщение Williams » 24.06.2009 (Ср) 14:22

Еще момент - монстры, по мере истребления игроками, должны переодически появляться в лице новых экземпляров.

Упомянули оптимизацию под частые запросы. Как это реализуется?
И вы думаете, что вас оставят в живых после прочтения этого поста?

trash
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 113
Зарегистрирован: 28.01.2009 (Ср) 12:09

Re: Структура таблиц

Сообщение trash » 24.06.2009 (Ср) 16:01

Индексами и разделением данных. Допустим, если к какой-то таблице происходит много обращений, но часть полей затрагивается сравнительно редко, то имеет смысл вынести эти поля в отдельную таблицу. А вообще, для всего этого нужно детально знать механику игрового процесса, особенно в части клиент-серверного обмена данными.

Что касается структуры данных, нужны ответы на такие вопросы:
- могут ли быть в одной локации два и более игрока?
- монстра?
- предмета?
- игрок и монстр?
- монстр и предмет?
- любая комбинация объектов?
Последний раз редактировалось trash 24.06.2009 (Ср) 16:18, всего редактировалось 1 раз.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Структура таблиц

Сообщение Williams » 24.06.2009 (Ср) 16:12

trash писал(а):Индексами и разделением данных. Допустим, если к какой-то таблице происходит много обращений, но часть полей затрагивается сравнительно редко, то имеет смысл вынести эти поля в отдельную таблицу. А вообще, для всего этого нужно детально знать механику игрового процесса, особенно в части клиент-серверного обмена данными.


Смысл ясен. А игрушка браузерная. Самые частые обращения к таблицы локаций, т.к. перемещение являются наиболее важным действием в игре.
И вы думаете, что вас оставят в живых после прочтения этого поста?

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Структура таблиц

Сообщение VBTerminator » 24.06.2009 (Ср) 17:32

Williams писал(а):Самые частые обращения к таблицы локаций, т.к. перемещение являются наиболее важным действием в игре.

А точнее, к таблице локаций, игроков и монстров (если последние выделены в отдельную таблицу), т. к. в таблице локаций есть ключевое поле "ИД локации", по которому ищутся персонажи. А координаты персонажей - это поля таблицы "игроки".

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Структура таблиц

Сообщение Williams » 25.06.2009 (Чт) 22:23

Слушайте, а как быть с трупами, которые в локации могут лежать некоторое время после заваливания игрока, а потом должны исчезнуть?
И вы думаете, что вас оставят в живых после прочтения этого поста?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Структура таблиц

Сообщение Williams » 25.06.2009 (Чт) 23:35

еще, кто напомнит, как в VS 2008 сгенерировать диаграму базы? Говорят через server explorer, правый клик на соединении с базой, "New Diagram". Но там этого или похожего пункта нету.

Все, нашел, надо было добавить объекты, необходимые для построения диаграм.
И вы думаете, что вас оставят в живых после прочтения этого поста?

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Структура таблиц

Сообщение karlex » 26.06.2009 (Пт) 5:52

Williams писал(а):Слушайте, а как быть с трупами, которые в локации могут лежать некоторое время после заваливания игрока, а потом должны исчезнуть?

Если Health = 0, то "труп".
И по какому-то алгоритму нужно обрабатывать таблицу игроков, удаляя всех, кто "труп".
Например, если игрок может возрождаться, то "тело" по сути итак будет перемещено туда, где он возрождается.
Или при приближении другого персонажа к "телу" проверить как долго (запомнить время и сравнить с текущим) это "тело" находится в состоянии "труп", вынести вердикт: убирать или не убирать.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Структура таблиц

Сообщение Ramzes » 26.06.2009 (Пт) 11:31

Как вариант фиксировать в таблице время смерти, и удалять по нему

trash
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 113
Зарегистрирован: 28.01.2009 (Ср) 12:09

Re: Структура таблиц

Сообщение trash » 26.06.2009 (Пт) 12:01

Williams писал(а):Слушайте, а как быть с трупами, которые в локации могут лежать некоторое время после заваливания игрока, а потом должны исчезнуть?
Странный вопрос. Кто идеолог и разработчик, ты или потусторонний разум? Как хочешь, так и будь. Техническая реализация тривиальна.

В Ultima Online труп игрока вообще можно было расчленить ножиком, а куски зажарить. По интерактиву и всяким лулзам WOW рядом не стоит.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Структура таблиц

Сообщение Williams » 26.06.2009 (Пт) 14:04

trash писал(а):Кто идеолог и разработчик, ты или потусторонний разум?


не, я бог этой игры :)

Трупов может быть сколько угодно. Убитый игрок становится призраком. Труп лежит в той локации, где игрока убили, вместе с предметами, если такие были у игрока. Призрак может воскресится при помощи спец. предметов или магии.
И вы думаете, что вас оставят в живых после прочтения этого поста?


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68

    TopList