Jump to content

.map файлы не кэшируются на стороне клиента


Recommended Posts

Про .map'ки возник небольшой вопрос.

Допустим, в моем моде их штук 10. Но игроки постоянно возмущаются, что им каждый раз при входе надо качать их заново. Учитывая размеры современных карт, это резонное возмущение со стороны игроков. Допустим карта тачек для всей карты на 1000 штук, карты всяких объектов, островов и прочей лабуды. Получается все эти, допустим, 4 Мб карт нужно качать каждый раз при входе. Они же не сохраняются, не кэшируются и не ведут себя так, как скрипты. Карты нужно скачивать каждый раз, даже если они не изменились на сервере.

Нашел весьма частичное решение - на сервере парсить карты и создавать элементы вручную. Это немного помогает, т.к. передается всё уже пакетами в более сжатом виде и иногда не все сразу.

Собсна, сабж. Как сделать так, чтобы эти карты тоже кэшировались?

Link to comment
Нашел весьма частичное решение - на сервере парсить карты и создавать элементы вручную. Это немного помогает, т.к. передается всё уже пакетами в более сжатом виде и иногда не все сразу.

В общем-то это то что МТА и делает, она не посылает мапы, она их парсит и создает элементы, и все элементы из мапы посылаются в одном пакете (так что свою идею брось, то что делает мта - быстрее и легче).

И собственно поэтому кэширование не возможно, т.к. нельзя кэшировать отдельные элементы. Но как вариант, статичные элементы как например объекты, маркеры и т.д. которые не требуют последующей синхронизации можно засунуть в отдельную мапу которая будет передаваться клиенту файлом, а следовательно кэшироваться, а далее парсить эту мапу на стороне клиента.

Link to comment

я специально смешной тест провел (:

берем карту с кучей тачек созданную редактором, весом в 588 кб. Запускаем сервер только с ней. При входе на сервер клиент всегда качает 786 Кб

берем эту же карту, но поиском и заменой убираем из нее лишние стандартные значения параметров, типа plate, interior, dimension, сокращаем слегка названия элементов. Файл карты худеет и уже весит 412 Кб. И при входе на сервер, клиент всегда качает 586 Кб.

Ну и мой вывод - элементы те же, но зависимость такова, как будто-то качается простой текст файла + данные об элементах.

Беру и добавляю в ресурс серверный скрипт, который из карты читает данные и создает элементы. В мете указываю карту как конфиг серва. Вес файла карты 588 Кб. Запускаю серв с этим ресурсом одним и при конекте всегда качает 155 Кб. Ставлю "очищенный вариант этой же карты" в 412 Кб - при коннекте качает также 155 Кб.

Вот В ЭТОМ НИЖНЕМ примере передаются только данные элементов, а в ТОМ ВЕРХНЕМ примере что клиент качает? Желающие могут провести этот эксперимент у себя на компе.

И это только 1 файл карты с тачками. Есть еще карта со статичными пикапами для всей карты; карт 5-6 со статичными объектами островов вокруг основной карты; еще карта, которая закрывает в общей карте дырки, куда игрок может провалится под землю. Думаю, это не предел. Таким макаром и набирается объем, который игрок вынужден качать каждый раз при входе на сервер, хотя эти файлы карт даже не изменились.

Что касается статичных объектов, есть вариант, схожий со вторым примером выше. Только нужно указать, что файл карты это конфиг клиента. Я не проверял, но думаю он не будет качаться каждый раз при входе (это предположение) на сервер, если он уже скачан ранее и не изменился. На стороне клиента скрипт всегда читает этот файл и создает чисто клиентские объекты. Таким образом, у каждого клиента свои (несинхронизированные), но одни и те же объекты как и у других игроков.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...