Skip to content

API Leistung

Marcel1853 edited this page Oct 10, 2026 · 3 revisions

🇬🇧 English version · ⬅ Für Mod-Autoren

Leistung

UTL ist auf viele Züge und hohe UPS ausgelegt und hält die Schnittstelle billig. Für die Leistung der eigenen Mod ist die Mod selbst zuständig – hier steht, wann UTL etwas aufruft und was teuer wird.

Was UTL aufruft

Was Wann Wie oft
Ereignisse zu Lieferungen beim Anlegen, bei jedem Zustandswechsel, am Ende einige Male je Lieferung
on_train_arrived / on_train_departed wenn ein Zug an einer UTL-Station hält bzw. abfährt je Halt einmal
on_train_idle wenn ein Zug frei im Depot steht je Depotbesuch einmal
on_train_rebuilt wenn ein Zug, den UTL kennt, umgebaut wird selten
on_job_finished am Ende eines Auftrags je Auftrag einmal
Stations-Ereignisse beim Bauen, Abreißen, Ändern einer Station selten
on_alert bei jeder UTL-Warnung (mit deren Wiederholsperre) selten
on_request_unserved wenn ein Abnehmer zu lange ohne Zug wartet je Anfrage höchstens einmal pro Minute
Zugfilter nur bei Fahrten von/zu einer Add-on-Rolle, einmal je Vermittlungsversuch findet sich kein Zug, alle paar Sekunden erneut
Abschnitt im Stationsfenster beim Öffnen oder Neuaufbau des Fensters selten
Reiter im Manager beim Wählen des Reiters oder ⟲ selten

Ohne Add-on kostet nichts davon etwas: Rückrufe gibt es nur, wenn etwas angemeldet ist. Ereignisse ohne Empfänger sind fast kostenlos. Es gibt keinen Aufruf in jedem Tick.

Tipps

  • Bei Ereignissen nur merken, später rechnen. Wer bei jeder Ankunft viel rechnet, bremst das Spiel. Besser die Daten merken und im eigenen on_nth_tick in kleinen Portionen abarbeiten (festes Budget je Durchlauf).
  • Zugfilter schnell halten: nur die Liste durchgehen und eigene, gespeicherte Daten nachsehen – keine Pfadsuche, keine Suche nach Entities im Filter.
  • Pfadsuchen bei Aufträgen und eingefügten Halten: send_job und add_delivery_stop prüfen per Pfadsuche, ob das Ziel erreichbar ist; bei einem Wegpunkt per Position (ohne rail_direction) bestimmt dieselbe Suche auch die Richtung. Auf großen Karten kann eine Suche einige Millisekunden dauern (gemessen: bis etwa 10 ms bei 384 Zügen und 880 Stationen). Wer das sparen will, gibt Gleis und Richtung direkt an und setzt skip_path_check = true, wenn das Ziel sicher erreichbar ist.
  • get_station für viele Stationen kopiert jedes Mal alle Einstellungen – in einer Schleife über hunderte Stationen lieber einmal get_stations holen und sich die nötigen Werte merken.
  • Listen nicht im Takt abfragen: get_stations, get_idle_trains, get_deliveries & Co. gehen durch alle Einträge und liefern Kopien. Einmal holen und dann mit den Ereignissen aktuell halten.
  • Fenster nur beim Öffnen befüllen; selbst auffrischen nur, solange es offen ist, und nur, was sich geändert hat.
  • Die eigene Last misst man mit /c remote.call("utl", "perf", 600) und dem Profiler von Factorio (F4 → show-time-usage).

Clone this wiki locally