Сервер локальный и удаленный ?

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
144
Реакции
276
Помог
1 раз(а)
Приветствую.

Кто-нибудь разбирался, чем отличается работа локального и удаленного сервера при взаимодействии с клиентом ?

В своё время натыкался на интересные особенности. Допустим, на локальном сервере объекты с разными значениями movetype (в частности MOVETYPE_TOSS) двигаются более плавно при изменении оригинов в фуллпаке.

Та же клиентдата вызывается около 100 раз за кадр на локальном сервере и 60 на удаленном.

Какие ещё есть интересные различия и можно ли заставить удаленный сервер распознать в клиенте локального игрока (проще говоря, обмануть его) ?
 
Последнее редактирование:
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
SISA, локальный имеется ввиду запущеный через create server или отдельно hlds?
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
SISA, локальный это когда engine запускает одновременно clientdll и gamedll, при этом не используется сетевой код(обмен напрямую через буфер), а значит и придиктинг. Отсюда и плавность, так как игровая и клиентская dll работают последовательно и синхронно. Обмануть? :) Мы и так его обманываем, вопрос скорее всего в другом, как повысить частоту обмена данными между клиентом и сервером, да очень просто, кварами.Загвоздка в другом, при работе через сеть время прихода пакетов не гарантированно как и их сохранность, отсюда и необходимость в механизмах позволяющих клиенту и серверу работать асинхронно. Одним из таких механизмов является придиктинг. Он обеспечивает плавное не скачкообразное движение объектов опираясь на их скорость (квантует перемещение в зависимости от фпс клиента), а так же в случае потери пакета объект не фризит, если время между приходящими пакетами не привышает максимальное время придиктинга.
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
Локальный - в одной подсети с клиентом (в моем случае). Удаленный должен находиться в другой сети/подсети. Это имелось ввиду.

status->connected = NET_IsLocalAddress( cls.netchan.remote_address ) ? false : true;

На сколько я могу судить, эта фунция отвечает за условия отправки данных на клиент.
 
Последнее редактирование:
Сообщения
273
Реакции
424
Помог
5 раз(а)
status->connected = NET_IsLocalAddress( cls.netchan.remote_address ) ? false : true;
Нет эта часть клиентского кода, а не сервера. На сервере NET_IsLocalAddress применяется только в двух местах:
1. при одобрении подключения( если сервер локальный разрешает подключение без дополнительных проверок);
2. при проверке информации клиента (если сервер не локальный проверяет пароль)
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
bionext,

Да, не усмотрел этот момент. Однако разницы нет, но она проявляется между серверами на разных ОС.

Достаточно простой плагин показал, что клиентдата и фуллпак на WIN вызывается ~80 раз в секунду при 300FPS, а на Линуксе только ~29 раз...

Код:
#include <amxmodx>
#include <fakemeta>

new Float:fDelayData
new CallData
new Float:fDelayPack
new CallPack

public plugin_init()
{
    register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
    register_forward(FM_AddToFullPack, "fw_AddToFullPack_Pre", 0);
}

public fw_UpdateClientData_Post(id, SendWeapons, CD_Handle)
{
    if(get_gametime() > fDelayData)
    {
        console_print(0, "ClientData: %i | %f", CallData, get_gametime())

        CallData = 0
        fDelayData+=1.0
    }

    CallData++
}

public fw_AddToFullPack_Pre(esState, iE, pEnt, pHost, iHostFlags, iPlayer, pSet)
{
    if(pEnt == pHost)
    {
        if(get_gametime() > fDelayPack)
        {
            console_print(0, "FullPack: %i | %f", CallPack, get_gametime())
    
            CallPack = 0
            fDelayPack+=1.0
        }
    
        CallPack++
    }
}
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
SISA, про pingboost не забывай.
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
bionext, От PB3 нагрузка выросла разумеется, по сравнению с PB2, но работа фуллпака и клиентдаты осталась прежней. Те же самые 28-29 вызовов за секунду судя по плагину.

Кажись понял, что это зависит от cl_updaterate, sv_minupdaterate и sv_maxupdaterate

Занятно, что снижение того же sv_maxupdaterate со 100 до 60 например, может прилично снизить нагрузку на сервер.

Спасибо всем. Тему можно закрывать.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу