1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Fr: 23 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Hilfeforum

    In wie fern/ab wann sind zu viele get/Set -Variable Befehle auf dem Server spürbar?

    • maltepower99
    • 9. Dezember 2021 um 13:51
    • Erledigt
    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 9. Dezember 2021 um 13:51
      • #1

      Hey, ich habe vor ein neues sehr umfangreiches Feature zu programmieren, wozu ich aktuell schon mit der Planung so gut wie durch bin.

      eine Frage hätte ich aber vorab eventuell noch.

      Und zwar sagen wir ich würde nun anfangen pro Minute ca 10-100 setVariable/getVariable Befehle auszuführen, würde sich dies auf die Serverperformance negativ auswirken? Oder wäre das eurer Meinung nach noch komplett verkraftbar? (als Info dazu: Die Vars wären geschachtelte arrays mit ca 1000 Zeichen)

      Ich komme zurzeit leider wenig zum Testen direkt daher dachte ich mir, mache ich mal hier einen Beitrag ;)

      Oh und noch ein kleines anderes Anliegen was damit aber auch zusammenhängt:

      Ist es möglich den getVariable/setVariable Befehl so anzupassen, dass man im Falle eines Arrays bestimmte Datensätze des Arrays nur selektieren kann ohne vorab den ganzen Array laden/empangen zu müssen?

      Also habe ich zb eine Variable in einem Objekt wie folgt gespeichert: [[1,2,3],["W","Q","R","S"]] und ich möchte sozusagen nur den 1. Array im Array abfragen und nun so wenig unnötige Daten empfangen wie möglich.

      das würde meines Wissens bisher aber nur so gehen:

      _arrMain = _object getVariable "ArrMain";

      _arrSub = _arrMain select 0;

      Danke für euer Feedback schonmal vorab und

      MfG Malte

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 9. Dezember 2021 um 14:10
      • #2

      Um auf deine zweite Frage einzugehen.

      Um eine Variable zu verwenden muss diese natürlich erst vollständig vorhanden sein. Denn wie soll das Programm sonst wissen was alles darin enthalten ist.

      Ob 10-100 setVariable-Befehle pro Minute kritisch sind hängt an einigen Kritieren ab.

      Redest du hier nur von einer Variable, die sich immer wieder ändert, oder von vielen Variablen die nur ab und an geändert werden?

      Weiter ist natürlich auch die Spieleranzahl entscheidend, denn davon ist dann der Traffic abhängig.

      Wobei es natürlich auch wichtig ist sind es nur 10 oder wirklich 100 Aufrufe pro Minute.


      Da du ja nichts genaueres über die Funktion geschrieben hast, kann man auch nur raten ob andere Varianten für das System besser/schlechter wären.

      So ist es möglich die Werte nur auf Anfrage per remoteExec zu senden (leichte Verzögerung bei der Bearbeitung, dafür nur notwendiger Traffic).

      Weiter ist es möglich die Werte nur an Spieler zu senden, die sie auch gerade benötigen (weniger Traffic).

      Ebenso ist es möglich die Werte Eventbasierend zu senden/laden.

      Je nach Aufbau der Arrays ist es auch möglich auf Hashmaps zu wechseln, die nicht direkt einen performance Vorteil bieten, aber bei der Handhabung angenehmer sind.

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 9. Dezember 2021 um 14:38
      • #3

      grundsätzlich sollte getVariable unproblematisch sein, da es nur lokal arbeitet. Wie Henne schon sagte ist der Netzwerktraffic dein Feind in dem Falle.

      Verwendest du setVariable auch nur lokal (= kein true als 3. Parameter) sollte das quasi kein Problem sein. Wenn die doch global sind könnte das ab gewissen Spielerzahlen durchaus zu Problemen (desyncs etc) führen. Ist mir aber nicht bekannt, dass da schonmal jemand quantitativ getestet hat wo es Probleme macht. Hängt sicher auch von vielen Faktoren (Anzahl Clients, Server Hardware, Bandbreite der Spieler etc) ab

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 9. Dezember 2021 um 21:41
      • #4

      Ich nutze ja bereits sehr viel Variablen in diesem Stil für diverste Fahrzeugerweiterungen / Speicherungen etc. Dabei sind diese meist global, damit andere Spieler diese bei bedarf abfragen können.

      10-100 sagte ich, um direkt eine Spielerzahl von 10-100 darzustellen. Also bei 10 wären es so 10 pro Min und bei ca 100 Spielern so 100 pro Min würde ich schätzen.

      Desweiteren würde ich die Variable meist auslesen und weniger setzen, soweit möglich. Jedoch wird der Array samt SubArrays eventuell da länger. Zudem kann es am Ende in Verbundenheit damit ca 100 neue gespawnte Objekte geben(simpleObjects bestenfalls), die diese Variablen beinhalten sollen.

      Aber gut das würde auf Dauer eventuell auch in 100-1000 Befehlen pro Min ausaten also muss da schon möglichst reduzieren :D

      Ist halt ein etwas umfangreicheres Feature damit geplant, was denke ich oder meines Wissen nicht wirklich anders effizienter wäre.

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 10. Dezember 2021 um 00:05
      • #5

      Man könnte alles auch in einem einzigen array speichern aber keine Ahnung wird dann ein sehr verschachtelter langer array. Aber machbar, wäre dass denn Performance technisch sinnvoller?

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 10. Dezember 2021 um 02:14
      • #6

      Wie gesagt, es kommt ganz darauf an was du erreichen möchtest.
      Wenn immer das vollständige Array geupdated wird, dann ist eine Variable vielleicht sinnvoll.

      Wird eher nur ein Teil aktualisiert, dann lieber mehrere Variablen, da ansonsten immer das vollständige Array übertragen wird.

      Wie auch schon angesprochen, kannst du das Array auch auf dem Server belassen und der Client fragt dann nur den benötigten Teil des Arrays ab und bekommt diesen gesendet.

      Ist dann vorallem davon abhängig wie oft der Wert abgefragt wird.

      Es gibt auch Möglichkeiten die beiden Funktionen zu kombinieren und so ein an die Erfordernisse optimierte Ressourcennutzung zu erreichen.

      Bisher kennst aber nur du deine geplante Funktion und wir können dir daher eigentlich nur einige Vorschläge bringen. Dich aber nicht zur optimalen Kombination beraten.

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 10. Dezember 2021 um 13:28
      • #7

      Okay, ja klar letzten Endes muss ich es eh selbst hinkriegen hab auch schon recht viel Code dazu aber schon geschrieben.

      Aktuell würde ich 1. dann doch getServerVariable/setServerVariable nehmen, da dies den Traffic nochmal senken sollte.

      Zudem möchte ich eine Timeupdate verfahren einbinden,

      sprich jeder Nutzer fragt die Daten ab, wenn benötigt, hierbei aber unterteilt in:

      1. Abfrage: Sind Daten aktueller, oder habe ich bereits die neusten Daten? Falls keine neuen Daten vorhanden, exit...

      2. Abfrage Was wurde aktualisiert?

      3. -> Aktualisierte Beiträge empfangen/laden

      Wichtig ist nur, dass ich bei 1. nicht in jeden Array gleich Werte reinpacke die sich automatisch/passiv über Zeit ändern, sonst wäre das mehr oder weniger sinnlos. Sollte so aber passen.

      Ansonsten muss ich erstmal bevor ich jetzt groß weiter mache ein paar Events programmieren für PropertyChanged usw und die genaue Array Strukturen ausarbeiten, dann kann ich weiter mit dem Funktionellen machen,

      aber schonmal vielen Dank für die Hilfe :)

    • nox 10. Juni 2022 um 02:43

      Hat das Thema aus dem Forum ArmA 3 nach Hilfeforum - ArmA 3 verschoben.

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Tags

    • Arma3
    • Dedicated Server
    • Root Server
    • windows server
    • setvariable
    • getvariable
    • 3.1.4.8.
    • GlobalVar

    Benutzer online in diesem Thema

    • 1 Besucher

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™