Benutzername:

Passwort:

Autor Thema: Tipps für Testen + Performanz von Event-Missionen  (Gelesen 4493 mal)

niCe Diesel

  • Platin Member
  • ******
  • Beiträge: 3216
  • Vorstand/ArmA2-BeLtr a.D.
    • Profil anzeigen
Tipps für Testen + Performanz von Event-Missionen
« am: 02. Oktober 2021, 22:30:08 »
## Überwachen der Serverperformanz

Aus aktuellem Anlass (ausgefallene Mission 2021-10-02 aufgrund von Unspielbarkeit):

Weitere Tests haben eindeutig bestätigt: Die Serverkonfiguration ist in Ordnung und sehr performant. Die Mission selber, konkret das "Objekte auf Karte löschen" beeinträchtigt die Serverperformance so signifikant dass ein Spielen schon mit 4 Personen effektiv nicht möglich ist.
Mit neuen Servereinstellungen kein Problem auf Trainingslager, server-FPS (#monitor 5) 166: https://steamuserimages-a.akamaihd.net/ugc/1620724107038002141/D5C561FB55C791D607AF8D0CB5E7312F1578C611/
Originale Event-Mission: server-FPS 0 (!): https://steamuserimages-a.akamaihd.net/ugc/1620724107038001899/854DD6C8F3D1517BDDEDF2BA0F9E0A4FF819EB07/
Korrigierte Event-Mission "test2", keine "Kornfeld-Löschung" server-FPS 50, nicht optimal, evtl. auch zu wenig für 50 Spieler:
https://steamuserimages-a.akamaihd.net/ugc/1620724107038000975/090BDCD16FC0E0AC2233FE39E34341A0193BB5B6/

Deswegen, einfaches Vorgehen: Mission auf Server laden (nicht nur lokalen PC), als Admin einloggen, Kommando eingeben

#monitor 5

und Serverperformanz prüfen. Server-FPS sollte deutlich über 30 FPS, besser über 50 FPS liegen

## FPS-Notfallturbo
Meine Vermutung ist dass Spieler mit sehr geringen FPS, sagen wir mal unter 20, für Probleme auf dem Server sorgen können weil z.B. dieser Client nicht mehr alle Nachrichten des Servers zeitnah beantworten kann und dann der Server selber nicht mehr mit der Aktualisierung für alle Spieler nachkommt. Um das zu verhindern kann sollte es möglich sein notfalls die Sichtweite der Spieler hart zu begrenzen. Das kann über die "Extended Debug Console" auch während der Mission gemacht werden. Mein Vorschlag per Skript:

if !(hasInterface) exitWith{};
niCe_autoViewDistance = true;
0 spawn {
  fps = [100, 101, 102, 103, 104, 105, 106, 107];
  _maxDistance = viewDistance;
  while { uiSleep 0.3; niCe_autoViewDistance } do {
    fps pushBack diag_fps;
    fps sort true;
    median_fps = fps deleteAt 4;
    _distance = viewDistance;
    if (median_fps < 30) then { _distance = _distance - 100 };
    if (median_fps > 45) then { _distance = _distance + 100 };
 if ((_distance min _maxDistance) <= _maxDistance) then { setViewDistance _distance };
 };
};

mit GLOBAL EXEC ausführen. Zum Ausschalten:

niCe_autoViewDistance = false;

Zum Testen und Entwickeln:
Spoiler: zeige


TODO:
* Also set `setObjectViewDistance _distance`
* use diag_fps directly, no array

# Anfangswerte setzen und bisherige Hintergrundskripte beenden
setViewDistance 6000;
niCe_autoViewDistance = false;
sleep 0.3;
# Debugausgabe innerhalb der Schleife
systemChat format ["median FPS: %1, viewDistance: %2, %3", median_fps, viewDistance, fps];

Version 1:

missionNamespace setVariable ["_automaticViewDistance", true];
0 spawn {
  _fps = [60];
  _maxDistance = viewDistance;
  while { uiSleep 0.3; missionNamespace getVariable "_automaticViewDistance" } do {
    _fps pushBack diag_fps;
    _fps sort true;
    _median_fps = _fps deleteAt 5;
    _distance = viewDistance;
    if (_median_fps < 30) then { _distance = _distance - 100 };
    if (_median_fps > 45) then { _distance = _distance + 100 };
    if ((_distance min _maxDistance) <= _maxDistance) then { setViewDistance _distance };
 };
};

Zum Ausschalten:

missionNamespace setVariable ["_automaticViewDistance", false];

Zum Testen und Entwickeln:
[spoiler]
# Anfangswerte setzen und bisherige Hintergrundskripte beenden
setViewDistance 6000;
missionNamespace setVariable ["_automaticViewDistance", false];
sleep 0.3;
# Debugausgabe innerhalb der Schleife
systemChat format ["median FPS: %1, viewDistance: %2, %3", _median_fps, viewDistance, _fps];
« Letzte Änderung: 08. Dezember 2021, 23:08:54 von niCe Diesel »

niCe BerlinerCoach

  • Silver Member
  • ****
  • Beiträge: 822
    • Profil anzeigen
Re: Tipp für Testen von Event-Missionen
« Antwort #1 am: 07. Oktober 2021, 16:11:59 »
So mit. Danke
Currahee!