Kraftstoffverbrauchsmechanik
Ein realistisches Treibstoffsystem sorgt für eine wesentliche Immersionsebene und schafft eine natürliche Geldsenke, die dazu beiträgt, die Wirtschaftlichkeit deines Servers auszugleichen. Die Kernmechanik besteht darin, den Kraftstoffstand jedes Fahrzeugs als Gleitkommawert zwischen 0 und 100 zu verfolgen und ihn basierend auf der Motoraktivität und dem Fahrverhalten zu senken. Speichere den Kraftstoffstand mithilfe von Entity-State-Bags mit Entity(vehicle).state.fuel, sodass der Wert auf allen Clients erhalten bleibt und auch bei Änderungen des Netzwerkeigentums erhalten bleibt. Berechne die Verbrauchsrate pro Tick basierend auf der aktuellen Drehzahl des Fahrzeugs, die über GetVehicleCurrentRpm erhalten wurde, der Drosselklappenposition aus GetControlNormal und dem klassenspezifischen Verbrauchsmultiplikator des Fahrzeugs. Sport- und Supersportwagen sollten deutlich schneller Kraftstoff verbrauchen als Economy-Fahrzeuge, während Lkw und SUV irgendwo dazwischen liegen. Wende zusätzliche Verbrauchsmodifikatoren für aggressives Fahrverhalten wie schnelle Beschleunigung, hohe Dauergeschwindigkeiten und Motorbremsung an. Wenn der Treibstoff den Wert Null erreicht, verringern du schrittweise die Höchstgeschwindigkeit des Fahrzeugs mit SetVehicleMaxSpeed, um ein Stottern zu simulieren, anstatt den Motor sofort abzuschalten, sodass der Spieler ein paar entscheidende Sekunden hat, um sicher anzuhalten.
Tankstellen-Benutzeroberfläche und Tanken
Das Tankstellenerlebnis sollte sich durch eine gut gestaltete NUI-Schnittstelle ausgefeilt und intuitiv anfühlen. Wenn ein Spieler in einem definierten Umkreis in der Nähe einer Kraftstoffpumpe parkt, wird eine Interaktionsaufforderung angezeigt. Öffne bei Interaktion eine Betankungs-Benutzeroberfläche, die den aktuellen Kraftstoffstand als Anzeige oder Fortschrittsbalken, die Tankkapazität des Fahrzeugs, den Preis pro Liter basierend auf der aktuellen Kraftstoffart und Optionen zum vollständigen Auftanken oder zum Pumpen eines bestimmten Dollarbetrags anzeigt. Die Betankungsanimation sollte sowohl auf dem Spielercharakter abgespielt werden, der mit TaskPlayAnim neben dem Fahrzeug steht und eine Treibstoffdüsenstütze in der Hand hält, als auch auf der Treibstoffpumpe selbst, wenn du ein benutzerdefiniertes Requisiten-Setup verwenden. Der Kraftstoff sollte in Echtzeit nach und nach aufgefüllt werden, anstatt sofort zu voll zu werden. Dadurch entsteht eine kurze Wartezeit, die für mehr Realismus sorgt und Spieler daran hindert, während der Verfolgungsjagden schneller aufzutanken. Zeige die gesamten Betriebskosten live als Kraftstoffpumpen an und ziehst du die Zahlung nur ab, wenn der Spieler aufhört zu pumpen oder der Tank voll ist. Unterstütze mehrere Kraftstoffarten an Premium-Tankstellen: Normales bleifreies Benzin zum Standardpreis, Premium-Kraftstoff, der eine kleine Leistungssteigerung bietet und mehr kostet, und Diesel für LKWs und Industriefahrzeuge, der separate Pumpen verwendet.
Kanister und Notbetankung
Der Treibstoffmangel auf der Autobahn ist ein realistisches Szenario, das dein System problemlos bewältigen sollte, ohne den Spieler zu zwingen, sein Fahrzeug zu verlassen. Implementiere einen Kanister, den du an Tankstellen oder im Baumarkt kaufen und an jeder Zapfsäule mit Kraftstoff füllen können. Der Kanister sollte als verwendbarer Inventargegenstand fungieren, wobei Metadaten den aktuellen Füllstand verfolgen und typischerweise 10–20 Liter fassen. Wenn ein Spieler einen Kanister in der Nähe eines leeren Fahrzeugs benutzt, spiele eine Ausgießanimation ab und füllen du Kraftstoff aus dem Kanister in den Tank des Fahrzeugs. Das Gewicht des Kanisters im Inventarsystem sollte proportional zu der darin enthaltenen Kraftstoffmenge sein, sodass eine volle Dose schwerer ist als eine leere. Füge einen Mechaniker hinzu, bei dem über das Telefon im Spiel Pannenhilfe angerufen werden kann, indem du gegst eine Gebühr einen NPC oder einen vom Spieler betriebenen Abschleppwagen mit einem Kraftstofflieferdienst schicken. Beim Eintauchen sollten die Spieler in der Lage sein, mithilfe eines Schlauchs Treibstoff aus anderen Fahrzeugen abzusaugen und den Treibstoff zwischen den Fahrzeugen unter Zeitaufwand und unter dem Risiko, auf frischer Tat ertappt zu werden, umzufüllen.
Unterstützung für Elektrofahrzeuge
Auf modernen Roleplay-Servern gibt es zunehmend Elektrofahrzeuge, die eine parallele Ladeinfrastruktur benötigen. Elektrofahrzeuge sollten kein Benzin verbrauchen und stattdessen einen Batterieladestand entladen, der genauso funktioniert wie die Tankanzeige, jedoch mit einer anderen Geschwindigkeit abnimmt. Der Verbrauch von Elektrofahrzeugen sollte pro Kilometer niedriger sein als bei Benzinfahrzeugen, was ihren tatsächlichen Effizienzvorteil widerspiegelt, aber das Aufladen sollte länger dauern als das Tanken, was zu einem anderen Spielrhythmus führt. Platziere Ladestationen an ausgewählten Orten auf der Karte, nicht unbedingt an herkömmlichen Tankstellen, um eindeutige Reisemuster für Besitzer von Elektrofahrzeugen zu schaffen. Implementiere eine Lade-Benutzeroberfläche, die den aktuellen Ladeprozentsatz, die geschätzte Zeit bis zur vollständigen Aufladung und die Kosten pro Kilowattstunde anzeigt. Füge an Premium-Stationen eine Schnellladeoption hinzu, die den Akku in der Hälfte der Zeit zu doppelten Kosten pro Einheit auflädt. Für die Fahrzeugkonfiguration klassifizierest du Elektrofahrzeuge nach ihrem Modell-Hash und speichern den Fahrzeugtyp in deiner Konfiguration, damit das System automatisch erkennt, ob ein Fahrzeug Benzin oder Strom benötigt. Unterstütze Hybridfahrzeuge, die beide Kraftstoffarten nutzen können, indem sie bei niedrigen Geschwindigkeiten zwischen Elektromodus und bei Autobahngeschwindigkeiten zwischen Benzinmodus wechseln und beide Ressourcen zu reduzierten Einzelsätzen verbrauchen.
Dynamische Kraftstoffpreiswirtschaft
Ein dynamisches Preissystem lässt den Kraftstoffverbrauch lebendig wirken und ermöglicht den Spielern interessante wirtschaftliche Entscheidungen. Basiere die Kraftstoffpreise auf einem konfigurierbaren Satz, der je nach Angebots- und Nachfragemechanismen schwankt. Verfolge den gesamten Kraftstoffeinkauf an allen Tankstellen über fortlaufende Zeitfenster. Wenn der Verbrauch hoch ist, steigen die Preise schrittweise an. Wenn der Verbrauch sinkt, sinken die Preise, um mehr Kunden anzulocken. Implementiere stationspezifische Preise, bei denen abgelegene Stationen in Blaine County aufgrund der Transportkosten mehr verlangen, während städtische Stationen mit geringeren Margen konkurrieren. Ermögliche spielereigene Tankstellen, bei denen der Eigentümer seine eigenen Kraftstoffpreise innerhalb eines durch die Serverkonfiguration definierten Mindest- und Höchstbereichs festlegen kann, wodurch ein echter Preiswettbewerb zwischen den Tankstellenbetreibern entsteht. Der Tankstellenbesitzer kauft Treibstoff im Großhandel von einem Zulieferer-NPC zu einem großen Preis und erhöht diesen auf seinen Einzelhandelspreis, wobei die Gewinnspanne sein Einkommen darstellt. Füge saisonale oder ereignisbasierte Preissteigerungen hinzu, bei denen die Kraftstoffkosten während Serverereignissen mit hoher Fahrzeugaktivität wie Rennen oder Raubüberfällen in die Höhe schnellen, was zu wirtschaftlichen Auswirkungen führt, die sich auf alle Spieler auswirken und zur Einsparung oder zum strategischen Kraftstoffkauf vor erwarteten Preiserhöhungen anregen.
Tankstelle als Unternehmen
Die Umwandlung von Tankstellen in von Spielern betriebene Unternehmen fügt dem Kraftstoffsystem einen vollständigen wirtschaftlichen Kreislauf hinzu. Der Tankstellenbesitzer verwaltet den Lagerbestand, indem er Treibstofflieferungen bei einem Großhändler bestellt, wartet die Ausrüstung, indem er Pumpenreparaturen und -aufrüstungen bezahlt, und kümmert sich um die Personalbesetzung, indem er andere Spieler als Tankwarte anstellt, die einen Stundenlohn verdienen. Implementiere ein Stationsverwaltungspanel, das nur dem Eigentümer zugänglich ist und das tägliche Verkaufsvolumen, Einnahmen, Gewinnspannen, den aktuellen Kraftstoffbestand in den unterirdischen Tanks und die Anwesenheitslisten der Mitarbeiter anzeigt. Die Tankstelle sollte über einen physischen unterirdischen Tank mit einer begrenzten Kapazität verfügen, der sich beim Tanken der Kunden erschöpft, so dass der Eigentümer Lieferwagenbesuche einplanen muss, deren Ankunft Zeit in Anspruch nimmt und die im Voraus Geld kosten. Füge innerhalb der Tankstelle eine Ladenkomponente hinzu, in der der Eigentümer Convenience-Artikel wie Snacks, Getränke und Grundbedarfsartikel lagern kann, die Kunden zusammen mit ihrem Treibstoff kaufen können, wodurch eine zusätzliche Einnahmequelle entsteht. Ermögliche Upgrades an der Station selbst, z. B. das Hinzufügen zusätzlicher Pumpenstationen, um mehr Kunden gleichzeitig zu bedienen, die Installation von Autowaschanlagen gegen eine zusätzliche Servicegebühr oder das Hinzufügen von Ladestationen für Elektrofahrzeuge, um den Markt für Elektrofahrzeuge zu erobern. Verfolge die Reputation von Stationen anhand von Preisgerechtigkeit, Verfügbarkeit und Kundenzufriedenheit, sodass Stationen mit besserer Reputation auf der Karte hervorgehoben angezeigt werden und mehr Verkehr anziehen.
HUD-Integration und Tankanzeige
Die Tankanzeige ist ein dauerhaftes HUD-Element, das Spieler ständig sehen werden. Du muss daher optisch klar und unaufdringlich sein und gleichzeitig wichtige Informationen auf einen Blick vermitteln. Entwerfe eine Anzeige für den minimalen Kraftstoffverbrauch, die sich in der Nähe des Tachometers oder in einer Ecke des Bildschirms befindet und den aktuellen Kraftstoffstand als halbkreisförmige Anzeige, als vertikaler Balken oder als einfache Prozentanzeige anzeigt. Verwende eine Farbcodierung, bei der Grün einen gesunden Kraftstoffstand über 50 % anzeigt, Gelb einen mäßigen Kraftstoffstand zwischen 20 und 50 % signalisiert und Rot vor einem kritisch niedrigen Kraftstoffstand unter 20 % warnt. Wenn der Kraftstoffverbrauch unter 15 % sinkt, wird in regelmäßigen Abständen ein Warnton bei niedrigem Kraftstoffverbrauch ausgelöst und die Anzeige blinkt, um sicherzustellen, dass der Player nicht versehentlich leer läuft. Zeige die geschätzte verbleibende Distanz basierend auf dem aktuellen Verbrauch an, der berechnet wird, indem der verbleibende Kraftstoff durch den durchschnittlichen Verbrauch pro Kilometer der letzten Fahrminuten dividiert wird. Blende die Tankanzeige komplett aus, wenn der Spieler zu Fuß unterwegs ist, um das HUD unübersichtlicher zu machen, und blendest du sie sanft ein, wenn er in ein Fahrzeug einsteigt. Für Spieler, die ein minimales HUD bevorzugen, biete eine Einstellung an, um die Tankanzeige vollständig auszublenden und sie nur als vorübergehende Benachrichtigung anzuzeigen, wenn der Tankinhalt unter einen konfigurierbaren Schwellenwert fällt. Integriere die Anzeige mit anderen Fahrzeug-HUD-Elementen wie Tachometer und Motorzustand, um ein zusammenhängendes Fahrzeug-Dashboard-Erlebnis zu schaffen.
Leistung und Synchronisierung
Das Kraftstoffsystem läuft bei jedem Client, der ein Fahrzeug fährt, kontinuierlich, daher ist eine Leistungsoptimierung von entscheidender Bedeutung. Verwende ein Verbrauchsaktualisierungsintervall von 1000 Millisekunden, anstatt es bei jedem Frame-Tick auszuführen, da Kraftstoffänderungen so schrittweise erfolgen, dass Aktualisierungen pro Sekunde optisch nicht von Aktualisierungen pro Frame zu unterscheiden sind und dabei etwa 60-mal weniger Rechenleistung verbrauchen. Speichere Treibstoffwerte in Entity-State-Bags und nicht in benutzerdefinierten Netzwerkereignissen, da State-Bags für sich häufig ändernde Werte optimiert sind und nur dann synchronisiert werden, wenn sich der Wert tatsächlich ändert. Wenn du Kraftstoff in der Datenbank speichern, um ihn über Serverneustarts hinweg dauerhaft zu erhalten, bündeln du alle Kraftstoffaktualisierungen des Fahrzeugs in einer einzigen Abfrage, die alle 60 Sekunden ausgeführt wird, anstatt jedes Mal, wenn sich der Kraftstoff eines Fahrzeugs ändert, einzeln zu schreiben. Verwende die Netzwerk-ID des Fahrzeugs als Schlüssel für die Kraftstoffverfolgung und bereinigst du gespeicherte Kraftstoffdaten für nicht mehr vorhandene Fahrzeuge, um ein Aufblähen der Datenbank zu verhindern. Bewältige den Grenzfall, bei dem ein Fahrzeug während des Tankens den Netzwerkbesitzer wechselt, indem du dest Besitzer überprüfen, bevor du Kraftstoffänderungen vornehmen, und eine serverseitige Validierung für alle Zahlungstransaktionen verwenden. Implementiere für Stationen mit vielen gleichzeitigen Kunden ein Warteschlangensystem, das verhindert, dass zwei Spieler gleichzeitig dieselbe Pumpe verwenden, und gleichzeitig eine visuelle Anzeige anzeigt, dass die Pumpe verwendet wird.
