Группа: Пользователи
Собщений: 2
Замечания : 0%
Твои бесплатные модели убивают сервер. И ты даже не знаешь об этом...
Я устал смотреть, как владельцы серверов ставят бесплатные паки с сайтов по типу all-cs.ru , а потом удивляются, почему сервер лагает, чокает и «вязнет», не регистрирует попадания. Эта статья - не про то, что бесплатное плохо. Она про то, что ты, как владелец, ставишь на сервер, не понимая, что именно. И это убивает твой сервер.
Откуда берутся бесплатные модели?
- Первые- те, кто импортирует. Берут готовую модель из CS:GO, Source, другой игры, прогоняют через конвертер и выкладывают как «свою». Часто даже не открывают Милкшейп или Blender. Просто конвертнули - и в паблик.
- Вторые — те, кто моделирует с нуля. Строят сетку вручную, рисуют текстуры, продумывают скелет и анимации. Именно они делают модели, которые не убивают сервер.
Проблема в том, что 90% бесплатных паков - это первый тип и я это докажу ниже. И ты, владелец сервера, ставишь их, потому что «красиво» и «бесплатно». А потом жалуешься на лаги или кривые плагины.
Что происходит, когда ты ставишь такую модель?
1. OpenGL в GoldSrc работает в immediate mode Это значит, что движок отправляет всю геометрию на GPU заново каждый кадр. Нет кэширования, нет буферов, нет оптимизации. GPU «забывает» всё при переходе к следующему кадру.
Последствия:
- AMD/ATI видеокарты страдают сильнее всего
- NVIDIA справляются быстрее, но не идеально
- Современные Intel iGPU тоже проседают
Именно поэтому мощная видеокарта не помогает. Узкое место - не GPU, а CPU и драйвер.
2. Каждая текстура - отдельный draw call Draw call - это команда на отрисовку. Если у модели 10 текстур - это 10 draw calls только для одной модели. В GoldSrc нет автоматического объединения материалов. Каждый draw call в immediate mode требует отправки всех данных заново. 15 draw calls вместо одного - это 15-кратное увеличение объёма данных, которые CPU отправляет в GPU каждый кадр.
3. Лимиты формата MDL Официальные ограничения на один SMD-меш:
- Треугольников: 4080
- Вершин: 2048
Формально модель на 30 000 треугольников возможна. Но это не значит, что так делать нужно, но авторы с сайтов так и делают.
Доказательство: железо не спасает
Пользователь c гитхаба issue 3452 сообщает (https://github.com/ValveSoftware/halflife/issues/3452): «Я использую высокопроизводительный компьютер (Intel i7-12700H + RTX 3060 Laptop + 16 ГБ DDR5). Когда я заменяю модель, у которой более 20 000 полигонов, FPS в игре сильно падает, когда на сервере много игроков. При этом загрузка оборудования низкая. Та же ситуация на компьютере среднего уровня (Intel i7-8750H + GTX 1050 Ti + 8 ГБ DDR4).» Обрати внимание: загрузка оборудования низкая, а FPS падает. Это ключевой момент. Проблема не в том, что видеокарта не тянет. Проблема в том, как GoldSrc использует OpenGL.
Чем это грозит твоему серверу?
Для игрока:
- Падение FPS. Даже с RTX 3060 игрок получит просадку.
- Чоки (choke). Клиент не успевает отправлять пакеты на сервер.
- Проблемы с освещением. Фонарик, гранаты, ночное видение - всё это вызывает ещё более резкие просадки.
Для сервера:
- Рост нагрузки на CPU. Сервер получает хаотичный поток «запоздалых» пакетов.
- Падение тикрейта. Когда сервер перегружен, его частота обновления падает.
- Ухудшение регистрации попаданий. Страдают все игроки, даже те, у кого нет чоков.
The303, автор известного туториала по экспорту моделей GoldSrc, пишет (https://the303.org/tutorials/gold_mdl.htm):«Чтобы скомпилировать модели с более чем 4080 треугольниками, вы должны разбить свои SMD на части и дать им отдельные строки $body для компиляции. Также, РАДИ ВСЕГО СВЯТОГО, ПОЖАЛУЙСТА, НЕ СХОДИТЕ С УМА С КОЛИЧЕСТВОМ ТРЕУГОЛЬНИКОВ; помните, это GoldSrc, а не Source Engine. Превышение 9000 треугольников - это чрезмерно, а прямые порты из Source/других игр неэффективны, расточительны и вызывают проблемы с производительностью для старого рендерера.»9000 треугольников - это максимум. Не рекомендация. Не «желательно». Максимум.Как проверить модель на оптимизацию за 2 минуты:1. Вручную проверяйте .mdl на оптимизацию и коротко я покажу как это сделать в этой же статье на примере этого же сайта и что на таких сайтах вас кормят красивым на обложке, но второсортным по производительности. Разберём две модели с одного сайта.2. Устанавливаем Jed's Half-Life Model Viewer и устанавливаем необходимую .mdl В моём случае Нож-бабочка Лор по ссылке (https://all-cs.ru/cs16/weapon-skins/knives/butterfly-knife-lore.html) и AWP пустынная гидра (https://all-cs.ru/cs16/weapon-skins/awp/awp-desert-hydra.html)3. ПКМ по v_knife.mdl и открываем с помощью установленной программы. Сразу под вьюпортом мы видим треугольные полигоны, которые составляют 24 592. Это подтверждает, что лимиты по mdl из пункта 3 мягко говоря превышены. Теперь представьте, что такой ножи не у одного игрока, а сразу у нескольких и это только одна модель... Для сравнения всегда можете открыть стандартную модель v_knife.mdl. В спойлере можете убедиться и посмотреть куда именно смотреть. У AWP модели картина обратная - 4 054, что является порогом, но приемлемо.4. Переходим во вкладку "Текстуры" у ножа и тут мы видим те draw calls из 2 пункта. Раскройте выпадающий список. Каждая строка - вызов draw call. Их 5 - это нормально. Три .bmp для рук, четвёртый для ножа, а второй известный костыльный метод 64х64 для имитации chrome и т.п. Переходим во вкладку "Текстуры" у AWP и тут мы видим тихий ужас - 18 .bmp = 18 текстур = 18 draw call.
ЗаключениеОбе модели плохие в плане оптимизации и каждая по-своему плохая. Повторюсь, что OpenGL узкое горлышко и исправить его никак нельзя. Бесплатные модели при ручной проверке - это не всегда плохо. Но слепое доверие к ним убивает сервер. Ты можешь поставить красивую модель из CS:GO, и она будет выглядеть отлично. Однако через неделю игроки скажут "не регает" и они будут правы, потому что играть станет невозможно. Помните, как раньше сервера были по маслу и это был обычная сборка HLDS? Раньше не было кастомных моделей А вот пример того, как должна выглядеть правильная модель. Я сделал её как антитезис всему, что описал выше: один атлас для ножа, дефолтные HD руки и перчатки, минимум трисов. Можете сравнить с теми, что я разбирал. Его можно найти на этом же сайте https://dream-x.ru/files/cs_1_6_modeli_oruzhija/knife/novogodnij_nozh_masichka_custom_2026_hd_ruki_i_perchatki/73-1-0-1087
|