Dictionar

Pentru intelegerea corecta a unor termeni, vi-i descriu mai jos.

  • server fps (+fps_max): numarul care arata de cate ori pe secunda serverul de css verifica daca exista si primeste pachetele de date care sosesc de la jucatori.
  • tickrate (66): indica numarul de simulari pe secunda pe care le face serverul.
    pe durata unui tick serverul proceseaza informatiile primite de la toti jucatorii, efectueaza o simulare a jocului, verifica regulile jocului si actualizeaza starea tututor obiectelor din joc.
    dupa fiecare tick serverul decide daca si care jucator trebuie sa primeasca un update.
  • sv_maxrate (0): cantitatea maxima de date pe care serverul o va trimite unui jucator in interval de o secunda (bytes/s).
    de asemenea, indica cantitatea maxima de date pe care serverul o va primi de la un jucator in interval de o secunda.
    acest parametru al serverului va modifica automat parametrul rate setat de jucator in consola daca valoarea rate a jucatorului este mai mare decat sv_maxrate.
  • sv_minrate (3500): cantitatea minima de date pe care serverul o va trimite unui jucator in interval de o secunda (bytes/s).
    de asemenea, indica cantitatea minima de date pe care serverul o va primi de la un jucator in interval de o secunda.
    acest parametru al serverului va modifica automat, cu aceasta valoare, parametrul rate setat de jucator in consola, daca valoarea rate a jucatorului este mai mica decat sv_minrate.
  • sv_maxupdaterate (66): numarul maxim de update-uri pe secunda pe care serverul le va trimite unui jucator.
    acest parametru va modifica automat, cu aceasta valoare, parametrul cl_updaterate setat de jucator in consola, atunci cand valoarea cl_updaterate este mai mare decat sv_maxupdaterate.
  • sv_minupdaterate (10): numarul minim de update-uri pe secunda pe care serverul le va trimite unui jucator.
    acest parametru va modifica automat, cu aceasta valoare, parametrul cl_updaterate setat de jucator in consola, daca valoarea cl_updaterate este mai mica decat sv_minupdaterate.
  • sv_maxcmdrate (66): numarul maxim de update-uri pe secunda pe care serverul le va accepta de la un jucator.
    acest parametru va modifica automat, cu aceasta valoare, parametrul cl_cmdrate setat de jucator in consola atunci cand valoarea cl_cmdrate este mai mare decat sv_maxcmdrate.
  • sv_mincmdrate (10): numarul minimde update-uri pe care serverul le va accepta de la un jucator.
    acest parametru ca modifica automat parametru cl_cmdrate setat de jucator in consola atunci cand valoarea cl_cmdrate este mai mica decat sv_mincmdrate.
  • client fps (fps_max) : numarul care arata de cate ori pe secunda computerul unui jucator verifica input-urile, respectiv de la tastatura, mouse, pachetele de date care sosesc de la server, practiv orice operatiune in/out
  • rate: cantitatea maxima de date pe care un jucator o cere de la server (bytes/s).
    valoarea setata de jucator (in consola sau cfg) nu se va modifica daca este cuprinsa intre valorile setate de adminul serverului pentru sv_maxrate si sv_minrate.
  • cl_updaterate: numarul maxim de update-uri (pachete de date) pe secunda pe care un jucator le cere de la server.
    valoarea setata de jucator nu se va modifica daca este cuprinsa intre sv_maxupdaterate si sv_minupdaterate.
  • cl_cmdrate: numarul maxim de update-uri (pachete de date) pe secunda pe care un jucator le va trimite serverului.
  • choke: numarul de update-uri pe care serverul a intentionat sa le trimita jucatorului, dar nu a putut, din diverse motive ce pot tine de client sau server.

Nota:
In paranteze sunt valorile default ale parametrilor
.

Pentru exemplificare voi analiza datele semnificative din graficul de mai jos, obtinut cu net_graph 4 in consola, fiind conectat la un server de 64 slots, extern.
Serverul si setarile jucatorului au fost alese special pentru demonstratia de mai jos.

Prima linie:

  • fps: 114 – numarul de fps-uri ale jucatorului.
  • ping: 72ms – ping-ul cu server-ul respectiv
  • 80/s – valoarea cl_updaterate setata de jucator in consola sau cfg

A doua linie:

  • in: 253 – dimensiunea pachetului de date primit de jucator de la server.
  • 18.18 k/s – viteza cu care jucatorul primeste date de la server (kbytes/s).
  • lerp: 100.0 ms – valoarea in milisecunde a interpolarii folosita de jucator.
  • 55.0/s – valorea reala pentru numarul de update-uri pe secunda (cl_updaterate) pe care jucatorul le primeste de la server in acel moment.

A treia linie:

  • out: 74 – dimensiunea pachetului de date trimis de jucator catre server.
  • 6.21 k/s – viteza cu care jucatorul trimite date catre server (kbytes/s).
  • 66.6/s – valoarea reala pentru numarul de update-uri pe secunda (cl_cmdrate) pe care jucatorul le trimite catre server in acel moment.

A patra linie:

  • loss: 0 – indica pachetele pierdute intre jucator si server.
  • choke: 4 – indica update-urile pe care serverul a iontentionat sa le trimita catre jucator dar nu a reusit.
  • 90/s – valorea cl_cmdrate setata de jucator in consola sau cfg.

A cincea linie:

  • sv:  48.4 – fps-urile serverului in acel moment.

Iar acum, analiza datelor din graficul de mai sus.

  • fps: 114 – valorea este foarte buna, avand in vedere ca este mult mai mare decat cea mai mare valoare de moment dintre cl_updaterate (55.0/s) si cl_cmdrate (66.6/s)
  • ping: 72ms – inca o valoare acceptabila, devenind deranjanta la valori peste 100ms.
  • 80/s – valoarea setata in consola pentru cl_updaterate este setata inutil de mare, avand in vedere ca serverul de css ruleaza la un tickrate maxim de 66, motiv pentru care adevarata valoare la care functioneaza computerul jucatorului este 66.
  • in: 253 – ultimul pachet de date primit de computerul jucatorului a avut 253 bytes.
  • 18.18 k/s – viteza in kbytes/s la care computerul jucatorului a primit recent pachetele de date.
  • 55.0/s – computerul jucatorului a primit 55 update-uri pe secunda.
    avand in vedere ca aceasta valoare este de aproximativ 20 la inceput de runda si ajunge la 66 la sfarsitul rundei, indica o incarcare excesiva a serverului, acesta neputind face suficiente simulari la inceputul rundei, cand numarul jucatorilor activi si al evenimentelor este maxim.
  • out: 74 – dimensiunea in bytes a ultimului pachet de date trimis de computerul jucatorului catre server.
  • 6.21 k/s – viteza in kbytes/s cu care computerul jucatorului trimite datele catre server.
  • 66.6/s – numarul de updateuri trimise de jucator catre server fiind egal cu tickrate-ul serverului si avand o valoare aproximativ constanta, indica faptul ca conexiunea dintre jucator si server este buna.
  • loss: 0 – nu se pierd pachete in comunicarea bidirectionala dintre jucator si server, conexiunea fiind buna.
  • choke: 4 – arata ca sunt update-uri care nu ajung fie de la server la jucator, fie invers.
    pentru a determina care este cauza choke-ului, ne uitam la valoarea de moment a numarului de update-uri primite de la server, care este de 55 si care variaza mult intre inceputul si sfarsitul rundei, precum si la parametrul sv, de valoare 48.4, care si acesta variaza foarte mult intre inceputul si sfarsitul rundei (intre 30 si 900).
    toate acestea indica fara indoiala o incarcare excesiva a serverului, care nu poate sa livreze datele in ritmul impus de sv_maxupdaterate, care este 66 in acest caz.
    choke-ul se observa in graficul colorat prin spatiile goale intre barele verticale.
  • 90/s – valoarea setata de jucator in consola pentru cl_cmdrate.
    este excesiv de mare, recomandat fiind ca valoarea sa maxima sa fie egala cu tickrate-ul serverului, in acest caz 66.
  • sv: 48.4 – este un indicator critic privind calitatea functionarii serverului, care arata de cate ori pe secunda serverul primeste date de la jucatori.
    fiind o valoare mai mica decat tickrate, arata ca uneori serverul face simulari cu date neactualizate, deci jocul va fi imprecis.
    valoare normala pentru acest parametru este cuprinsa aproximativ intre 200 si 900.
    ceea ce este cel mai important la acest parametru este ca valoarea sa sa varieze putin intre inceputul si sfarsitul rundei.
    este parametru care indica cel mai evident buna functionare a serverului.
    in cazul de fata, parametru variaza intre 30 si 900, indicand fara gres o supraincarcare a serverului, ceea ce duce la o calitate slaba a jocului.

Concluzii:
Serverul in cauza necesita scaderea numarului de sloturi, avand in vedere ca nu poate efectua in timp real simularile necesare, fapt indicat de valorea foarte mica a sv la inceputul rundei, de valoarea mica a update-urilor pe secunda la inceput de runda, si de variatia mare a acestor doi parametri intre inceputul rundei si sfarsitul sau.
O alta rezolvare a problemei ar fi scaderea valorii parametrului sv_maxupdaterate la valoarea 50.
Computerul jucatorului si conexiunea acestuia sunt in regula, fapt demonstrat de valoarea relativ constanta a update-urilor trimise catre server, de valorea foarte buna a fps-urilor, si mai ales de demonstratia ca problema este de la server.
Pentru atenuarea efectelor jucatorii ar trebui sa-si reduca valoarea cl_updaterate.

About the Author