[GT] Karabas - Сегодня в 15:47
основная идея - хранить разведданные.
Ну вот хорошую же я идею предлагал - чтобы только лично посещенные сервера отображались. ну или если ты в гильде то сервера посещенные согильдийчами (и может быть союзниками)
типа разведанные
за актуальностью конечно трудно следить
но в принципе можно если заморочиться, алгоритмы не сложные =)
сложнее хранить всю инфу о том кому что известно
это чуть ли не отдельную БД поднимать.
ты там был вчера, а я сегодня - тераформинг менялся - карты у нас должены быть разные = моя инфа свежее =)
основная проблема - хранить, в максимальном пределе, такое количество разных вариантов карты мира сколько всего есть персов на сервере в БД
это много инфы
это конечно можно сильно урезать - по одной на гильдию хранить или на альянс гильдий
но по одной на каждого бомжа хранить всеже придется
я понимаю что это отдельная работа - отслеживать кто где и когда побывал....
скорее всего технически это потребует ресурсов... не сразу сможет быть реализовано
Но это возможно - если только отойти от хранения тераформинга в виде последовательности его изменений и перейти к хранению только в виде цвета точки на карте... в конечном виде хранить версии карты
идет тераформинг - текущие изменения не сохраняются.
Наступает событие - персонаж покидает сервер .
Для этого перса карта должна сохраниться в виде какой он ее запомнил типа - записывается версия.
и так на каждое покидание сервера
и обновлять связку перс-версия в базе
при каждом уходе с серва любого перса
при этом проверть из какой он гильды/альянса и не писать если из этой гильды ктото еще остался на сервере (ну или писать раз в час принудительно)
на словах - легко
даже можно прикинуть объем такой БД:
1500 * 1500 * 7 * 7 * на 1 байт глубины цвета на миникарте === это немного больше 100 мегабайт..... чето както дохрена....
и * на количество персов бомжей + количество альянсов + количество безальянсных гильдий
активность работы с ней - одно сохранение при каждом уходе с серва
я эту цифру не знаю, а вы, разработчики, знаете наверняка
а читать оттуда можно неспеша - при логине и раз в час например
тоесть максимальная теоритически возможная база будет по 100 мегов на перса.... это около 100 терабайт на лям персов = в принципе не то чтобы прям супер дохрена....
Можно замутить ченить типа распределенного хранения..... и хранить на клиентах а не на сервере. На сервере хранить до момента отдачи клиенту, а потом удалять освобождать место. Между клиентами по принципу торрента ее раздавать.
главное соорудить быстрый производительный алгоритм превращения снимка тераформинга в миникарту
и работать он может асинхронно, если будет слегка опаздывать - это не критично, пусть опоздает на минуту, за минуту критично ничего не изменится в тераформинге.
П.С. забыл сказать - думаю, что делать карту с клаймами как сейчас сразу известной всем - огромная ошибка! бедные "овечки" этого не переживут, к ним очень быстро прибежит стая полных писцов и будет навещать регулярно. И одинокие писцы тоже.
--
Karabas