Umfrage: Was nutzt Ihr
Diese Umfrage ist geschlossen.
X-Engine
0%
0 0%
Y-Engine
100.00%
1 100.00%
Gesamt 1 Stimme(n) 100%
∗ Sie haben diese Antwort gewählt. [Zeige Ergebnisse]

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
X-Engine vs. Y-Engine
#1
Star 
Hallo liebe OpenSim Gemeinde,

Habe diesen Thread eröffnet, weil ich mal Meinungen sammeln wollte und vielleicht auch ein paar Erfahrungen erlesen.
Ich habe von X-Engine auf Y-Engine gewechselt und kann für meinen Teil sagen es läuft viel schneller und finde auch besser.
Nun habe ich von einigen gehört, daß sie Probleme hatten, daß wohl einige Scripte nicht liefen.
Nun habe eine Info bekommen, wenn man so ein Script hätte sollte man ( ' ) durch ( " ) ersetzen, dann Würden sie laufen.
Ich bin mal auf Eure Erfahrungen und Berichte gespannt.

Euer
Tigger Puschelpaw
Antworten }
Thanks given by:
#2
Schon mit herumgespielt, YEngine läuft bei mir sehr gut Smile

opensim.ini

[Startup]
...
    DefaultScriptEngine = "YEngine"
...

[YEngine]
    ;; Implementiert nicht praemptives Microthreading, um Probleme wie llSleep oder Long Event Handler zu beheben.
    ;; Aber diese werden unter Zeitverschiebung leiden, also werden sie langsamer sein.
    ;; Warnung: Der Status der Skripte geht bei einem TP verloren oder stoppt an Xengine Regionen (Autos halten an usw.)
    Enabled = true
    
    ;; maximum stack, den ein Skript in KB verwenden kann.
    ;ScriptStackSize = 2048
    
    ;; maximum heap memory, den ein Skript in KB verwenden kann.
    ;ScriptHeapSize = 1024

    ;; Anzahl der Threads, die Skripte ausfuhren sollen. Zu viele Threads konnen sich negativ auf andere Regionsvorgange auswirken.
    ;NumThreadScriptWorkers = 2

    ;; Prioritat der Threads (Lowest, BelowNormal, Normal, AboveNormal or Highest).
    ;; Hohere Prioritaten konnen sich negativ auf andere Regionen auswirken
    ;Priority = Normal

    ;; binary Vergleichsquellen mit Hash Codes oder Volltext wiederzuverwenden.
    ;UseSourceHashCode = true

    ;MinTimerInterval = 0.1

    ;; Skriptstatus und Cache Speicherort des ubergeordneten Ordners.
    ;ScriptBasePath="ScriptEngines"

[XEngine]
    Enabled = false
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:
#3
Also ich nutze immer noch auf dem gesamten Grid XEngine,

da ich absolut keine Probleme mit dieser Scripting Engine habe, und alle meine Scripte darunter entwickelt wurden.

Wichtig dürfte bei beiden Engines die Einstellungen sein- die Problem schaffen oder verhindern.

Dazu zu meiner Policy:

1. Die Priorität der Scripte auf die allergeringste Stufe setzen, damit nie Instanzen durch Scripte in den Boden geschossen werden

2. Den Scripten etwas mehr zugestehen als der Standard ist, damit diese nicht per Zufall an die Limits kommen.
3. Werden meinen höher gesetzten Limits erreicht wird jedes Script hart gekillt. Denn dann hat es sich offenbar "verlaufen".

4. Scripte werden bei jedem Sim/Instanz Neustart neu kompiliert und zurückgesetzt. Dazu sind auch entsprechende Passagen im Script nötig. Ausserdem resette ich jedes Sitz Script sofern der Nutzer aufsteht. So wird verhindert das Scripte immer mehr Speicher hinzufressen.

Hier die XEngine Settings die sich bei mir bewährt haben:  (getestet unter 08.2 und 09.0.1 und 09.1.0)


[XEngine]
    Enabled = true
    MinThreads = 2
    MaxThreads = 500
    IdleTimeout = 120
    MinTimerInterval = 0.1
    ;# {Priority} {Enabled:true} {Priority for script engine threads?} {Lowest BelowNormal Normal AboveNormal Highest} BelowNormal
    ;; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest")
    Priority = "Lowest"
    MaxScriptEventQueue = 350
    ThreadStackSize = 512000
    AppDomainLoading = true
    ScriptStopStrategy = abort
    DeleteScriptsOnStartup = true
    CompactMemOnLoad = false
    DefaultCompileLanguage = "lsl"
    AllowedCompilers = "lsl"
    EventLimit = 300
    KillTimedOutScripts = true
    ScriptDelayFactor = 1.0
    ScriptDistanceLimitFactor = 50.0
    NotecardLineReadCharsMax = 1024
    SensorMaxRange = 512.0
    SensorMaxResults = 16
    DisableUndergroundMovement = true



Und hier nun ein paar Erklärungen zum Verständnis:

    IdleTimeout = 120
Wie lange darf ein Script ununterbrochen etwas machen (hier 120 Sekunden), bevor es schlafen geht. Beispiel Gesamtfahrzeit einer Seilbahn zwischen 2 Stops. Dies Limit gilt nur wenn ein Script niemals der Engine die "CPU" freigibt- also zum Beispiel llWait benutzt für Pausen, anstelle Timer zu programmieren. Für Scripte die zwischen Befehlen mit llTimer warten gilt dieses Limit nicht.

    MinTimerInterval = 0.1
Dies ist die kürzeste Zeit die im Script für Timer eingestellt werden kann. Dies bedeutet das jede 0,1 Sekunde ein Timerevent aufgerufen werden kann. Gute Scripter nehmen aber minimal 1,0 sec pro timer, was für Fahrzeuge gut ausreicht um Steuerbefehle anzunehmen. Die nötige Überbrückung stellt man im Fahrzeug Motor ein. Bei kleinerer Wartezeit ist llwait efizienter was die Last angeht.

  Priority = "Lowest"
Bei den CPU Ressourcen wetteifern verschiedenen Dienste. Niemand will das spontan steigende Scriptlast zum Rucken, bis hin zum Absturz der Sim führt, also sollte man hier die CPU Zeit für Scripte begrenzen. Dies hat eh nur eine Bedeutung falls es zum Engpass kommen sollte.

   ScriptStopStrategy = abort
was tun mit Scripten die die Engine als defekt erkennt? Zum Beispiel weil sie sich nicht mehr melden.-> hart abbrechen

    DeleteScriptsOnStartup = true
Compiliert alles Scripte neu beim Neustart einer Instanz.  Verlängert Startzeit, aber verhindert das Scripte in undefinierten Zugang gestartet werden. Bereinigt automatisch Scripte zum Beispiel nach Simcrash wegen Sciptfehlern.

    DefaultCompileLanguage = "lsl"
    AllowedCompilers = "lsl"
Prinzipiell kann auch code in anderen Programmiersprachen genutzt werden, nur hat keiner dann mehr eine Chance zu sehen was dieser Code tatsächlich macht. Daher sollte diese Option nur genutzt werden wenn sichergestellt ist das alle Scripte vertrauenswürdig sind- also auch die eingeschleppten von HG Usern!

    KillTimedOutScripts = true
Marodiernde Scripte die sich zu lange nicht bei der Scripting Engine gemeldet haben killen. Sicher hängen die.

    ScriptDelayFactor = 1.0
dies macht Scripte pauschal langsamer oder schneller. Ist also der "Basistakt" an dem sich Scriptlaufzeit orientiert.

    ScriptDistanceLimitFactor = 50.0
Kommt aus SL: Die maximale Entfernung die ein Objekt (oder AVA) von einem Script in einem Schritt bewegt werden darf.
Also zum Beispiel einen Schneeball maximal in einem Schritt 50m werfen. Danach müsste der Bewegen Befehl ein weiteres Mal mit 50m aufgerufen werden um den Ball 100m insgesamt zu bewegen. Gilt in Opensim nicht überall. OSSL Befehle umgehen dies Limit teilweise.

    NotecardLineReadCharsMax = 1024
Leider sind Notecards im Standard Grid die einigen dauerhaften Speicher und werden oft für statische Werte gebraucht.
So können pro Notecard maximal 1024Bytes gespeichert werden, was meist reicht.
Nur sind Scripte die Notecards bearbeiten unter den übelsten Lasterzeugern.
Wer nun auf die Idee kommt weniger Bytes pro Notecard zuzulassen zwingt Scripter mehreren Notecards zu verwenden was noch schlimmer ist.

    SensorMaxRange = 512.0  
Dieses Mass ist meiner Simgröße von 512m geschuldet- ich will abfragen über die gesamte Sim machen können, nach dem Muster: hat jemand die Sim betreten.

    SensorMaxResults = 16
Gehört zum Obigen Komplex. Meist benötigt man eh nur eine Abfrage nach dem Motto: Ist jemand da - oder nicht. Daher wird bis maximal 16 gezählt um Last zu begrenzen.

    DisableUndergroundMovement = true  
Verhindet das Bewegungsscripte (aus versehen) Objekte unter Land bewegen und vergraben.
Antworten }
Thanks given by:


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste