Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

Важная информация

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.05.2014, 19:54   #1
worldqq
Гость
 
Сообщений: n/a
Вопрос Сетка Mangos

Всем привет! Я занимаюсь изучением Mangos и не могу понять:
Mangos использует сетку для загрузки объектов в мирах клиентов, но я не могу определить:
1) Какого размера эта сетка?
2) Какой реальный размер одной ячейки в масштабе карты?
3) Размер сетки одинаков или зависит от размера карты?

Последний раз редактировалось worldqq; 10.06.2014 в 12:19.
  Ответить с цитированием
Старый 25.05.2014, 21:37   #2
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Все константы геометрии карты заданы в
src/game/GridDefines.h

условно размер считается в ярдах, но учитывая
(1 ярд = 0.9144 метра), можно и метрами обзывать
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 26.05.2014, 09:20   #3
worldqq
Гость
 
Сообщений: n/a
По умолчанию

С размером сетки/ячейки я разобрался. Но как Mangos переводит XYZ в ярды – непонятно.
Вот тут начинается преобразование XY персонажа в CellPair:
Код:
void Map::MessageDistBroadcast(WorldObject const* obj, WorldPacket* msg, float dist)
{
    CellPair p = MaNGOS::ComputeCellPair(obj->GetPositionX(), obj->GetPositionY());
Далее:
Код:
inline CellPair ComputeCellPair(float x, float y)
    {
        return Compute<CellPair, CENTER_GRID_CELL_ID>(x, y, CENTER_GRID_CELL_OFFSET, SIZE_OF_GRID_CELL);
    }
Далее:
Код:
template<class RET_TYPE, int CENTER_VAL>
    inline RET_TYPE Compute(float x, float y, float center_offset, float size)
    {
        // calculate and store temporary values in double format for having same result as same mySQL calculations
        double x_offset = (double(x) - center_offset) / size;
        double y_offset = (double(y) - center_offset) / size;

        int x_val = int(x_offset + CENTER_VAL + 0.5);
        int y_val = int(y_offset + CENTER_VAL + 0.5);
        return RET_TYPE(x_val, y_val);
    }
Всю суть преобразования я ещё не понял, но кое-что становится ясным:
Код:
double x_offset = (X персонажа - половина размера ячейки) / размер ячейки;
int x_val = int(x_offset + 512 + 0.5);
где 512 - CENTER_GRID_CELL_ID - ID центральной ячейки?

Последний раз редактировалось worldqq; 26.05.2014 в 10:35.
  Ответить с цитированием
Старый 27.05.2014, 15:18   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Это вычисляется Cell к которой относится координата - карта порезана на 64x64 или меньше Grid-ов и каждый из них порезан еще на 8x8 Cell.

Grid - минимальная ячейка хранения и загрузки геометрии
Cell - минимальная ячейка обработки активности объектов в мире
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 10.06.2014, 09:10   #5
worldqq
Гость
 
Сообщений: n/a
По умолчанию

Константы в src/game/GridDefines.h заданы такие же как и в клиенте?
И ещё: в какую сторону направлен X сетки мангоса?

Последний раз редактировалось worldqq; 11.06.2014 в 09:54.
  Ответить с цитированием
Старый 11.06.2014, 15:23   #6
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Кроме максимального размера карты остальное чисто серверные заморочки.
Сетка клиента как вы нарисовали в удаленном посте. Но координаты в файлах данных используют другие ориентации осей.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 11.06.2014, 15:43   #7
worldqq
Гость
 
Сообщений: n/a
По умолчанию

В удалённом посте я сетку не рисовал. То, что размер клетки - это "серверные заморочки" я не согласен, так как map файлы созданы на базе ADT файлов клиента.

Последний раз редактировалось worldqq; 11.06.2014 в 15:46.
  Ответить с цитированием
Старый 11.06.2014, 16:11   #8
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Вы там оси координат рисовали (я могу смотреть удаленные посты )
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 11.06.2014, 16:49   #9
worldqq
Гость
 
Сообщений: n/a
По умолчанию

Т.е Вы хотите сказать, что направление XY сетки совпадает с направлением XY координат wow?
  Ответить с цитированием
Старый 11.06.2014, 17:12   #10
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

http://www.pxr.dk/wowdev/wiki/index.php?title=ADT/v18
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 11.06.2014, 17:24   #11
worldqq
Гость
 
Сообщений: n/a
По умолчанию

А, ну это я читал. Но из этой инфы непонятно почему в названиях ADT файлов XY стоит обратном порядке по отношению к .map файлам.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
trinity (world) to mangos (mangos) Timmy-kr Корзина 1 02.06.2010 04:51


Текущее время: 04:29. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot