This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Оптимизация клиента

nafanya100

нафаныч
BackEnd developer
FrontEnd developer
25 Ноя 2023
146
27
65
Всем привет
Когда я держал свой сервер, игроки иногда жаловались, что у них меньше фпс на моем сервере, чем на других.
Рефакторил код, ничего такого серьезного я не нашел, но думаю, что проблема может быть в render'ax, которые я постоянно делаю, хоть и пытаюсь не использовать их

Пример кода:
JavaScript:
mp.events.add('render', () => {
    if (mp.players.local.isInWater()) {
        //какой та код
    };
});

Это я почти нигде не использую, у меня на сервере был батл пасс и, если у игрока есть задание "Поплавайте в воде", то он должен был его выполнить.
Я веду к тому, что я использую render ради 1-2 игроков и то на один раз, а у остальных 30-40 игроков этот рендер крутится просто так.

Может ли быть проблема в FPS'e из за таких множественных рендеров?
Я думал это переделать в интервал, в нем бы вызывалась функция, но это вроде одно и то же...​
 
Реакции: enotit

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,255
233
5
Привет! Да, частые вызовы render могут негативно повлиять на производительность сервера, особенно если в них содержится сложный или ресурсоемкий код. Попробуйте заменить render на использование setInterval с меньшей частотой вызова функции, чтобы снизить нагрузку на сервер и улучшить производительность.
 

nafanya100

нафаныч
BackEnd developer
FrontEnd developer
25 Ноя 2023
146
27
65
да, я и говорю, почему у меня сервер то лагает, хотя это клиент..
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
да, я и говорю, почему у меня сервер то лагает, хотя это клиент..
Лишний раз рендер лучше не используй. Скрипт выполняется каждый кадр, что может приводить к задержкам.
Используй обработчики событий, которые будут включать и отключать рендеры когда они необходимы
 

nafanya100

нафаныч
BackEnd developer
FrontEnd developer
25 Ноя 2023
146
27
65
Спасибо.
Можно какой то пример? Не совсем понятно
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
Спасибо.
Можно какой то пример? Не совсем понятно
Как то вот так:
JavaScript:
class RenderHandlerClass {
    private renderHandler: (() => void) | null = null;

    //Функия которая запускает рендер
    public createRender() {
        this.renderHandler = () => {
            //Здесь код, который выполняется в рендере
        };
        mp.events.add("render", this.renderHandler);
    }

    //Функция которая останавливает рендер
    public removeRender() {
        if (this.renderHandler) {
            mp.events.remove("render", this.renderHandler);
            this.renderHandler = null;
        }
    }
}

export const renderHandlerClass = new RenderHandlerClass();
 

youngBeaver

Покинул форум.
BackEnd developer
24 Янв 2023
1,173
463
171
Вообще на js (ts) рендер клиентский эвент и клиентский код выполняется лишь у одного клиента не влияя на других клиентов (некоторые методы на клиенте, на сколько я помню, умеют синхронизацию с сервером самостоятельную). И собственно, если ФПС у всех игроков стабильно плохой, при условии, что все они заняты чем то своим, то проблема не в рендере воды. Может быть есть более крупные рендеры, которые выполняются с момента начала выполнения всего клиентского кода.
 
Реакции: nafanya100

nafanya100

нафаныч
BackEnd developer
FrontEnd developer
25 Ноя 2023
146
27
65
Спасибо вам, понял на что отталкиваться.
 

sonnyk

Участник портала
26 Ноя 2022
53
9
43
На проекте могут быть:
"backdrop-filter и -webkit-backdrop-filter"
Они криво работают в цефе ragemp и из за них могут быть жесткие просадки в фпс.
 

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
708
319
161
30
В каком-то смысле да. Но на сколько я сталкивался, на сам фпс они не особо влияют, а вот на плавность анимаций в интерфейсе очень даже.
Проблему можно выявить путем отключения модулей(Если архитектурой это предусмотрено конечно.)
 
Реакции: FireFeed