Как сделать fastdl для garry s mod

Обновлено: 30.06.2024

Привет.
В этом гайде я подробно расскажу о создании FastDL на локальном GMoD сервере.

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

Внимание. Папки и файлы должны быть исключительно написанные на латинице, то есть папка «materials\models\Призрак\» будет серьезной ошибкой.

Создайте себе сайт и подождите, когда он будет готов.
По завершению, вам нужно будет сменить пароль от ftp, т.к. он изначально немного багованый и записать хост, логин и новый пароль от ftp на листочке или где-нибудь еще (или просто не закрывать вкладку.

Установите FileZilla. Неволнуйтесь, никаких угроз вашему ПК. Вводите ваши данные сверху в программе, заходите в папку public_html и переходим к следующему шагу.

2. Подготовка контента.
Это могут быть материалы, модели, карты, ресурсы, луа-скрипты, звуки и даже игровые режимы.
Создайте где-нибудь на своем ПК папку, скажем ‘dl’ и скиньте туда весь клиентский контент, который должен быть у пользователя. Но не забывайте представлять себе,
что эта папка ‘dl’ на самом деле будет папкой ‘garrysmod’ каждого игрока на вашем сервере, поэтому в ней нужно соблюдать порядок.

По завершении, делаем два действия с файлами из dl
1) Копируем их в папку вашего сервера
2) Затем вернитесь в dl и упакуйте карты и другие большие файлы (или просто все файлы) при помощи bzip2, который вы сможете найти в интернете или в других гайдах. После чего отправляем папку dl целиком через FileZilla на ваш сайт в папку public_html, чтобы получилось \public_html\dl\

3. Создание lua-скрипта и настройка server.cfg.
Открываем блокнот.

Копируем любительскую функцию поиска файлов в папках, т.к. тот что на gmod wiki не настроен для локальных серверов в целом.

for_, fdir in pairs(dirs) do
if fdir != ".svn" then
AddDir(dir.."/"..fdir)
end
end

fork,v in pairs(files) do
resource.AddFile(dir.."/"..v)
end

После чего вводим используемые папки в контенте. К примеру:

AddDir (“sound/mysound”) //Отправляет игрокам всю папку mysound из серверной sound
AddDir (“maps”) //Папка maps не будет отправляться целиком, но будет скачиваться с fastdl, если на сервере стоит карта,которой нет у клиента.
И так далее

Важные правила:
Даже если папка называется MySound,верхний регистр в коде нужно исключать и писать строго mysound.
Допускается только латиница (английский язык)
Делитель между папками строго должен быть “/” (слеш снизу-вверх)

После чего сохраняем в серверной папке garrysmod\lua\autorun\serverпод удобным для вас именем с расширением .lua (скажем fastdl.lua)

Копируем содержимое локальной папки dl в сервернуюпапку. dl по желанию можно удалить, но я бы советовал иметь ее про запас, а вдруг вам захочется, что-то поменять.

Теперь лезем в ваш server.cfg и дополняем следующие строки

Сохраняем и запускаем сервер. Желательно, не иметь серверного контента у клиента, чтобы удостоверится, что все работает.

Как сделать fastdl для garry s mod



1


2


1


1


1


10,930 уникальных посетителей
658 добавили в избранное















Garry's Mod игра 2004-го года из этого следует, что, хоть Facepunch частенько обновляет движок, всё же, некоторые вещи, которые может осуществить ваша видеокарта не реализованы в игре, например: батчинг или инстансинг. Если в вашем меню продвинутых видео настроек не наблюдается режима сглаживания CSAA, то лучше отключить его вовсе. То же самое касательно фильтрации текстур, куда лучше будет включить эти параметры в панели управления поставляемой с драйвером вашей видеокарты.
  • gmod_mcore_test 1: включает поддержку многоядерных/многопоточных процессоров.
  • cl_threaded_bone_setup 1: разрешает движку обрабатывать матрицы костей в отдельных потоках.
  • r_threaded_particles 1: разрешает движку обрабатывать частицы в отдельных потоках.
  • r_queued_ropes 1: разрешает движку обрабатывать веревки в отдельных потоках(плацебо, на сервере нет веревок).
  • cl_threaded_client_leaf_system 1: разрешает движку обрабатывать pvs (зоны видимости) в отдельных потоках.
  • r_threaded_renderables 1: разрешает движку обрабатывать режимы рендера (opaque/translucent) в отдельных потоках.
  • mat_queue_mode 0: разрешает движку сортировать очереди текстур уменьшая количество свайпов (ротации текстур) на видеоадаптере. При условии большой нагрузки на GPU лучше использовать значение 1. (0, а не -1 или 2, потому что на некоторых билдах игры наблюдается повышение потребление ЦПУ (до 9 раз), при асинхронной сортировке текстур спустя некоторое время)

Некоторые консольные переменные не имеют флага сохранения, посему придется создать файл автозапуска.
Открываем параметры запуска игры и добавляем ко всему существующему +exec autoexec.
Далее переходим в папку с игрой, далее в garrysmod/cfg, открываем autoexec.cfg.
Пишем консольные команды точно так же, как пишем их в консоль разделяя переносом строки (Enter) и/или точкой с запятой(;).

Пример:
r_3dsky 0;
rate 30000;

  • -novid: отключает функцию декодирования видео графическго конвеера. Незначительно повышает FPS (отключает кодек, а не заставку; это никак не повлияет на работу видео в сендбокс и синема, так как в Garry's Mod интегрирован awesomium/chromium).
  • -malloc=system: позволяет системе выбирать размер выделяемых блоков памяти (memory allocator). Система создает рабочие списки и списки низкого приоритета. Возрастает потребление ОЗУ, но незначительно улучшается быстродействие.
  • -high: запуск с высоким приоритетом.
  • -swapcores: позволяет системе менять потоки для систем частиц и материалов.
  • -r_emulate_gl(может стать причиной краша игры) или -gl: эмулирует DirectX на OpenGL. Очень мощный буст фпс, при условии поддержки Vulkan API вашим устройством.
  • -softparticlesdefaultoff: запрещает фильтровать глубину частиц. Дает прирост фпс, но частицы выглядят не очень.

Мои параметры запуска: +fps_max 61 +menu_cleanupgmas -high -swapcores -preload -novid -nojoy -noforcemaccel -noforcemspd -useforcedmparms -softparticlesdefaultoff +exec autoexec +mat_softwarelighting 0

Перед переходом на 64-х разрядную версию стоит понимать все риски: внезапные вылеты и черные экраны.

На практике, все кажется не так плохо. Вылеты происходят только по вине разработчиков аддонов, чьи руки растут не очень-то из плеч.
Стоит отметить факт того, что на 64-х разрядной версии Garry's Mod перестают наблюдаться некоторые фризы, которые возникают на 32-х разрядной версии. Так же помнится, что Face Punch заявляли что-то про оптимизацию этого бранча.

Подводные камни: максимальное исчислимое целочисленное число меняется с 2 ^ 32 на 2 ^ 64 из-за чего некоторые аддоны (вроде PAC3, на примере boneclipping) не могут использовать те хаки, которые использовали для этого; сервера использующие устаревший !cake anticheat могут забанить вас за использование 64х разрядной версии.

  • math.huge = 1 + 2 ^ 64: исправление boneclipping в PAC3 и схожих методов. Лучше всего приживётся в /lua/includes/extensions/math.lua

С приходом Windows 10, звуковая система семейства определенно стала шустрее и приятнее. Но, тем не менее с этими улучшениями нам дали и уйму "свистоперделок", которые расходуют ресурсы процессора, прежде чем донести информацию до кодека.
Эти процессы преображения звука мы пожалуй отключим.

Переходим в "Пуск" (логотип Windows на панели задач) > Параметы (Иконка шестерни в панели слева) > Система (Иконка лаптопа слева вверху) > Звук > Листаем содержимое в самый низ и выбираем "Панель управления звуком".
Далее отключаем все мониторы (если конечно же вы не имеете встроенных в монитор динамиков) посредством нажатия на них правой кнопкой мыши и "Отключить" в открывшемся контекстном меню. Находим аудиоустройства, например "Динамики". Как правило в строке элемента имеется пометка с названием установленой аудиокарты или встроенного кодека, например "Realtek High Definition Audio". Кликаем правой кнопкой мыши по элементу, в контекстном меню выбираем "Свойства". Затем переходим во вкладку "Улучшения" (в некоторых выпусках Windows 10 отсутствует локализация этого элемента, потому может называться "Enhancements"). Ставим галочку перед "Отключение всех звуковых эффектов".

Даже имея 300-500 FPS, могут быть ощутимы задержки управления и изображения. Причиной тому является HPET ("Hight Precision Event Timers" - высокоточный таймер событий). Это утилита для высокоточных замеров времени. Я не встречал софта использующего этот метод, кроме как некоторые программы для бенчмарка или мультимедиа.
Т.к. Garry's Mod создан на движке Source, что является уважаемым старичком на поприще игр, он адаптирован для более старого аналога HPET, а именно PIT. Из-за использования новой технологии возникают неточности при расчете разницы между фреймами и, как следстве, визуальные задержки.

Выключить высокоточный таймер событий можно в BIOS материнской платы (HPET Support) или же внутри системы.
Из операционной системы это осуществляется достаточно просто:
"Пуск" (Логотип Windows в панели задач) > Ищем "Диспетчер устройств"
В ракрывающемся списке "Системные устройства" находим "Высокоточный таймер событий", кликаем на него правой кнопкой мыши, в контекстном меню выбираем "Отключить устройство".
После отключения HPET потребуется перезапуск.

Стоит отметить, что на большинстве выпусков Windows 10 изначально может быть включен "энергосберегающий" или "оптимальный" режим питания, что в свою очередь запрещает ротацию ядер процессора и эксплуатацию высокочастотных режимов работы (Turbo Boost).

Для решения этой проблемы переходим в Пуск > Система > Питание и спящий режим > Дополнительные параметры питания
Далее, выбираем "Максимальная производительность" и переходим "Настройки схемы электропитания", затем в "Изменить дополнительные параметры питания
В списке ищем "Управление питанием процессора"
Значение "Максимальное состояние процессора" меняем на 100%, если в первоначальной схеме это не было сделано.
Так же можно отключить "Управление питанием состояния связи" в "PCI Express", что позволит видеокарте шустрее обмениваться данными при некоторых обстоятельствах.

Помимо описанных выше процедур, в оптимизации могут помочь различные аддоны.
В процессе изучения аддонов на воркшоп, я нашел в основном кучку бесполезных аддонов которые вводят за вас консольные и копируют друг друга.
Частично изучив бесконечный перечень "фпс бустеров" написанных на коленке, являющихся сборкой из украденного кода и других таких же бустеров состоящих, в основном, из 70 тысяч строк интерфейса и более (Матерь Божья!) и, в лучшем случае, хотя бы 30 строк полезного кода.
Всё же, среди всего разнообразия находятся и полезные экземпляры.
Данные аддоны будут полезны только для одиночной игры или владельцев серверов.

FAQ по FastDL

Часто нам приходится использовать FastDL систему для ускорения загрузки аддонов, ведь 20 кб/сек — не скорость для игрока, вряд ли кто-то будет ждать, пока с такой скоростью скачается карта весом 50 Мб.

Особенность FastDL в Garry's Mod состоит в том, что при изменении любого файла/добавлении/удалении и др. операции, сервер генерирует кэш-файл с описанием всего, что на данный момент находится.
Это что-то вроде md5-суммы дополнительных данных сервера.


Так вот, если вы что-то изменяете на сервере и перезапускаете, то он начинает проверку новых аддонов.
Если найдены отличия от того дампа кэша, что был создан в момент А (условно), то он начинает гененировать дамп кэша за момент Б (тоже условно). Так у нас получается подсчёт всех данных сервера.
Для успешной работы сервера и клиента второму нужен этот кэш.


Самая главная проблема для администраторов с FastDL — дампы кэша.

Когда вы используете FastDL, то закачиваете все данные, в т.ч. /maps/, /cache/, /data/.
Настройка очень проста:

1. Залить
2. Проверить всё
3. Проверить папку /cache/
4. В параметре sv_downloadurl указать полный путь к папке, т.е.:

Так, в папке должно появиться /bin/, /addons/, /cfg/, /cache/ и остальные папки.

Обратите внимание, что если вы что-либо изменили на сервере, то непременно должны загрузить изменённые файлы на хостинг FastDL, в т.ч. и дамп кэша!


Если вы не загрузите дамп или обновлённые файлы, то FastDL будет реагировать на старые файлы и обновления в папке с сервером будут игнорироваться или качаться клиенту со скоростью 20 кб/сек.

Настройка FastDL на VDS (ubuntu,debian)

@Dmitry Ahipov, в идеале да. Каждый сервис должен висеть на своём пользователе.
Только в таком случае придётся немного поморочиться с правами. 777 выставлять на всё - крайне не рекомендую.
Совсем недавно знакомому тоже делал подобную систему. Он тоже за основу взял этот гайд, пришлось многое переделывать.
Потом, возможно, оформлю человеческим языком, и выложу тоже.

P.S.: Я не против подобных гайдов, но когда встречается такое, оно начинает мигрировать с сервера на сервер, перерастая в массовую проблему безопасности.
И уж тем более бить по рукам за удаление sites-* папок. Лучше отредактировать default-конфигурацию.

panikajo
Участник

@Dmitry Ahipov, в идеале да. Каждый сервис должен висеть на своём пользователе.
Только в таком случае придётся немного поморочиться с правами. 777 выставлять на всё - крайне не рекомендую.
Совсем недавно знакомому тоже делал подобную систему. Он тоже за основу взял этот гайд, пришлось многое переделывать.
Потом, возможно, оформлю человеческим языком, и выложу тоже.

P.S.: Я не против подобных гайдов, но когда встречается такое, оно начинает мигрировать с сервера на сервер, перерастая в массовую проблему безопасности.
И уж тем более бить по рукам за удаление sites-* папок. Лучше отредактировать default-конфигурацию.

Да, так можешь как мне сделать гайд< для всех удобно будет.
местный клоун

@Dmitry Ahipov, в идеале да. Каждый сервис должен висеть на своём пользователе.
Только в таком случае придётся немного поморочиться с правами. 777 выставлять на всё - крайне не рекомендую.
Совсем недавно знакомому тоже делал подобную систему. Он тоже за основу взял этот гайд, пришлось многое переделывать.
Потом, возможно, оформлю человеческим языком, и выложу тоже.

Читайте также: