Performance-Verbesserungen

Warnung

These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!

Sponge beinhaltet mehrer Einstellungen um einem zu helfen die Performance zu verbessern und somit auch unter Belastung einen lagfreien Server zu haben.

Bemerkung

Die performance Gewinne hängen von dem verwendeten Setup ab, dementsprechend ist es empfehlenswert die Einstellungen zu testen um sicherzustellen, dass der Sponge Server die beste Performance erreicht!

Kreaturen Aktivierungsreichweite

Diese Einstellung verändert das Laden von Objektion in der Nähe von Spielen. Bei niedrigen Werten werden unr nahe Objekte geladen, wenn man den Wert erhöht, werden auch Objekte geladen, die vom Spieler weit entfernt sind. Verringere es, um die Performance deines Servers zu verbessern, vor allem mit hohen Objekt- und Spieleranzahlen. Um die Aktivierungsreichweite für bestimmte Objekte zu deaktivieren, setzte den Wert auf 0.

Tipp

Es ist möglich diese Einstellung für jede Kreatur einzustellen. Wenn auto-populate auf true gesetzt ist wird Sponge automatisch alle Kreaturen zur Liste hinzufügen, wobei es empfohlen ist diese Einstellung wieder zu deaktivieren wenn die Liste einmal gefüllt wurde. Um neue Kreaturen hinzuzufügen können die oberen Schritte wiederholt werden und die neuen Kreaturen werden der Liste hinzugefügt.

entity-activation-range {
    # If enabled, newly discovered entities will be added to this config with a default value.
    auto-populate=false
    # Default activation ranges used for all entities unless overridden.
    defaults {
        ambient=32
        aquatic=32
        creature=32
        misc=16
        monster=32
    }
}

Asynchrones Ausleuchten

Diese Option sorgt dafür, dass die Beleutungsüberprüfung auf einem anderen Thread passiert, um die Performance zu verbessern.

optimizations {
    # Runs lighting updates async.
    async-lighting {
        # If enabled, runs lighting updates async.
        enabled=true
        # The amount of threads to dedicate for async lighting updates. (Default: 2)
        num-threads=2
    }
}

Cache von Besitzern von gezähmten Kreaturen

Diese Einstellung speichert die UUIDs, von den Besitzern von zähmbaren Kreaturen, zwischen um das Regelmäßige nachsehen dieser zu sparen.

optimizations {
    # Caches tameable entities owners to avoid constant lookups against data watchers. If mods cause issue, disable.
    cache-tameable-owners=true
}

Fallen gelassene Gegenstände vormischen

Diese Einstellung sorgt dafür, dass Gegenstände, die gedroppt werden, bereits zusammengeführt werden bevor extra Objekte für diese erschaffen worden sind.

optimizations {
    # If enabled, block item drops are pre-processed to avoid
    # having to spawn extra entities that will be merged post spawning.
    # Usually, Sponge is smart enough to determine when to attempt an item pre-merge
    # and when not to, however, in certain cases, some mods rely on items not being
    # pre-merged and actually spawned, in which case, the items will flow right through
    # without being merged.
    drops-pre-merge=true
}

Panda Redstone

Ein alternativer Redstone-Update-Algorithmus, der dazu führt, dass weniger Block Updates geschehen, wenn Redstone sich ändert.

optimizations {
    # If enabled, uses Panda4494's Redstone implementation which improves performance.
    # See https://bugs.mojang.com/browse/MC-11193 for more information.
    # Note: This optimization has a few issues which is explained in the bug report. We are not responsible for any issues this may cause.
    panda-redstone=false
}

Anpassung des Automatischen Speicherintervalls

Vanilla Minecraft speichert Chunks alle 900 Ticks (45 Sekunden). Wenn du diesen Intervall verändern möchtest kannst du dies in der global.conf des Servers ändern:

world {
    # The auto-save tick interval used when saving global player data.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-player-save-interval=900

    # The auto-save tick interval used to save all loaded chunks in a world.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-save-interval=900
}

Den Intervall zu verringern erhöht zwar die Last auf die Server CPU und den Speicher des Servers, verringert allerdings den Datenverlust, sollte der Server abstürzen oder der Strom ausfallen. Dementsprechend sorgt eine Erhöhung des Speicherintervalls dafür, dass die Last auf die Hardware geringer ist allerdings auch der Datenverlust bei einem Serverausfall größer ist.

Echtzeit

Diese Option zu aktiveren verbessert das gefühlte Spielerlebnis, wenn die Tickrate niedrig ist, es verbessert nicht wirklich die Performance. Eine beschränkte Anzahl von Entities, Tile-Entities und die Welt-Zeit benutzen Echtzeit anstatt der Ticks zur Aktualisierung.

modules {
    # Use real (wall) time instead of ticks as much as possible
    realtime=false
}

Ein Beispiel hierfür sind Tierbabies. Normalerweise brauchen diese 20 Minuten um erwachsen zu werden. Aber, wenn der Server lagt, erhält jedes Tier weniger Ticks und dadurch erhöht sich die Zeit, die sie zum Aufwachsen benötigen. Diese Einstellung ändert einen Teil dieser Logik so ab, dass die tatsächlich vergangene Zeit verwendet wird, statt der Ticks, die der Server gezählt hat. Dies trifft auch auf das abhacken von Blocken zu, also kein „Blöcke mehrfach abhacken“ mehr.

Chunk requests ablehnen

Warnung

Dies ist eine Experimentelle Einstellung für mehr Performance, wir empfehlen nicht sie einzuschalten wenn du Mods auf dem Server hast und deaktiviere sie bei Bugs.

world {
    # If enabled, any request for a chunk not currently loaded will be denied (exceptions apply for things like world gen and player movement).
    # Note: As this is an experimental setting for performance gain, if you encounter any issues then we recommend disabling it.
    deny-chunk-requests=false
}

Wenn diese Option aktiviert ist, wird Mods nicht erlaubt Chunks zu laden. Das kann nur der Spieler.