Beiträge von eis_os

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


    Ich hoffe majuen nimmt mir es nicht übel. Seine Haltestellen hatten schon labels.



    Für Bushaltestellen hab ich nun funktionierende Namen und es können nun X Linen angezeigt werden. (Das geht dann via params offset, 0 = erste Linie usw.) Sprich wer ein Haltestellenschild mit 10 Namen bauen möchte, kann das auch tun....

    Ich war zwar eigentlich ein anderes Feature am programmieren aber mal was für zwischen durch, hat ja nur 3 Tage Bastelzeit verbraten. :D  :S


    Inwiefern ich das bei Haltestellen in Konstruktionen anbieten kann, bin mir da nicht sicher. Vielleicht via params ein terminalId? Dann bräuchte man natürlich ein mdl pro Terminal. Hmm

    Also das mit den playerOwned in SegmentAndEntity hatte ich auch.

    UG Scheint da etwas geändert zu haben und möchte wohl jetzt ein component haben.


    Früher meinte ich, das es nur die Player Entity Id angenommen hat.


    Dieser Code sollte funktionieren, ungetestet,ich kopiere mir ja beim NodeEditor die EntityId für den Player aus den vorhanden Daten...

    Code
    local eo = api.type.SegmentAndEntity.new()
    ... 
    local playerOwnedComponent = api.type.PlayerOwned.new()
    playerOwnedComponent.player = game.interface.getPlayer()
    eo.playerOwned = playerOwnedComponent

    Das sollte zu keinem Fehler führen. Und diese Probleme hab ich UG schon mitgeteilt (benötigt also keine weitere EMail)


    CommonAPI2 CheckModels ERROR: res/models/model/vehicle/plane/bombardier_cs300_v2.mdl: airVehicle.configs[1].landingLight[1] meshId = 72 already used by beaconLights lodid = 1 (LOD0).


    CommonAPI2 CheckModels ERROR: res/models/model/vehicle/tram/be5_6_v2.mdl: railVehicle.configs[2].blinkLightsRight0[5] meshId = 57 already used by frontBackwardParts lodid = 2 (LOD1).


    CommonAPI2 CheckModels ERROR:
    urbangames_legacy_vehicle_pack_1/res/models/model/vehicle/tram/usa/skoda_10t.mdl: railVehicle.configs[1].blinkingLights1[1] meshId = 0 looks like an error lodid = 1 (LOD0).


    CommonAPI2 CheckModels ERROR: res/models/model/vehicle/truck/40_tons_stake_v2.mdl: roadVehicle.configs[1].headLights[2] meshId = 23 already used by brakeLights lodid = 1 (LOD0).

    Es hat viel Überzeugungsarbeit gebraucht statische Repository Ids zu bekommen und eine Speicherung so das man ein Spielstand laden kann.

    TPF3 wird dann vielleicht deine Wünsche berücksichtigten.. Musst halt den Dino ordentlich nerven...


    Technisch sollten ca. 50% was in CommonAPI2 drin ist, schon im Grundspiel sein, gerade diese technischen Sachen haben es nur mit viel Nachdruck ins Spiel geschafft:

    - Model checks damit das Spiel nicht crasht.[seit der letzten Version drin, seats werden aber immer noch nicht überprüft]

    - Mod Parameter Checks (Duplikate)


    Das sind keine gimmicks. Außerdem zeige ich ja, das ich von Außen die Engine zu viel mehr bringen kann und das mit quasi "bescheidenen" Mitteln.



    Keine Ahnung was ihr alle mit CommonAPI2 habt,.

    Installierst halt die neuste Version der CommonAPI2 oder ggf. ein kleinen Eintrag via buildoverwrite, das sind drei klicks. Fertig.

    Wenn ich bei deinen Mods die Mod-Abhängigkeiten durch installiere bin ich länger beschäftigt ;)


    Und ja, diese halbgaren Sachen nerven. Gerade weil StreetGeometry::TransitionUtil::GetNodeStreetType wirklich sehr einfach ist und man da bestimmt ne andere Lösung anbieten könnte.

    Wenn du eine bessere "mathematische" Lösung hast, CommonAPI2 ist schon vorbereitet und kann technisch auch einen anderen Wert nehmen oder einen besseren Algorithmus.

    priority war aber für UGs Straßen die einfachste Wahl. In meiner Todoliste steht dafür drin, ggf. die Lanes noch hinzuzuaddieren bzw. die Straßenbreite.
    Sprich ne größere Straße hätte dann automatisch mehr Gewichtung...

    CommonAPI2 Code dazu:


    Grob: Zähle alle Straßentypen, füge der Anzahl die Priorität * 100 hinzu. Schaue welche Straße ID den höchsten Wert erreicht...

    Die Repository Plätze wurden durch die Reihenfolge des Betriebssystem vergeben (und weder Windows noch Linux garantieren diese*). Die Reihenfolge, bzw. die ganze Straße wird mittlerweile mitgespeichert.

    (UG hat da mehrere Ladefunktionen, früher wurde quasi nur die Position gespeichert)

    Damit ist es möglich ein Savegame ohne Straße zu laden.

    Die Zip Dateien sind eine tieferliegende Schicht und UG hat da mehrmals geändert. Auch wenn es nun sortiert, alte Savegames bleiben so wie sie sind...


    Ob UG es mittlerweile sortiert durch die Änderung des Zip Supports keine Ahnung. Es gibt zwar Listen für den Straßenbau bei der Erstellung von Straßen. Mir wäre aber keine List aufgefallen im Ladecode für eine feste Reihenfolge.


    Die Reihenfolge ist damit, api.res.streetTypeRep.getAll().


    Und nochmals: Ich habe in CommonAPI2 extra Code drin, der das verhalten ändert, ich hab den UG Code dafür analysiert und für nicht zweckmäßig befunden.


    Und genau das was in UGs Wiki steht stimmt. Da die Reihenfolge Lageabhängig ist und UGs Code die kleinste Id nimmt, kommt es bei fast allen Spieler dazu, das die kleine Straße Vorrang hat bei ner Kreuzung von kleiner Straße mit großen Straßen. Mit CommonAPI2 ist das dann genau anders herum und die große Straße hat Vorrang bzw. eine Straße mit priority.



    * Da ein Directory Entry so geschrieben wird, wie die Dateien entpackt werden, ist die Chance groß eine alphabetische Reihenfolge zu erhalten.

    Bitte beachten, CommonAPI2 FlexStreets ändert den Algorithmus und hat einen höheren Bias durch Einbeziehung von priority. Sprich es wird tendenziell die Straße nehmen die eine höhere priority hat.


    Ein Neubau der Kreuzung ist zwingend Nötig um Änderungen zu übernehmen. (Umschalten Spielereigentum reicht schon)


    Wenn gewünscht kann ich noch den C++ Code dafür dranhängen...

    Bahnhofszusatzgebäude wurde von UG erst später dem Spiel hinzugefügt:

    Version 35044 (May 10, 2022)


    Und zum Thema Straßenhaltestellen, du kannst auch eine Bus bzw. Tram Station als Konstruktion bauen und dort UGs Bahnhofserweiterungen dran bauen. (Das sind dann eben 60 Personen mehr beim großen Gebäude) Intern nutzt CommonAPI2 genau das selbe System für Straßenhaltestellen. Das ist technisch eigentlich nur ne Kapazität. UG sah wohl auch eine Notwendigkeit für das Grundspiel...


    Ich stelle mal sogar mal die These auf, es ist für die Simulation nicht förderlich ist wenn Haltestellen volllaufen und die Sims Ihre Ziele nicht erreichen können...


    Aber ja, grundsätzlich weniger Mods sind mehr. Und jede Mod die im Bahnhofsscript herumarbeitet ist ggf. ein Mod zu viel... Daher nutze nur das was du brauchst. Und für die Straßenhaltestellen hab ich ja in meinem Straßenpaket ein Haltestellen Schild. Musst also da nichts machen und es funktioniert quasi direkt...

    Interessante Idee. Ich sehe da aber ein Problem beim Kosten Nutzen Verhältnis. Du könntest natürlich auch ein EdgeObject via SimplePropsal umbauen via event, das würde aber ein Umbau der Gleisanlage bedeuten. Dazu würde ich ganz klar abraten... (Das triggert eine Neuberechnung aller Linien, es darf sich da gerade kein Fahrzeug befinden usw.)


    Was ich mir schon mal überlegt habe, das man in Assets den Zustand eines Signals bzw. eines Bahnübergangs bekommt und dadurch Animationen auslösen könnte. Sprich man bindet eine Asset an eine Animationsquelle. Ich fand den interne Aufwand aber noch nicht gerechtfertigt.


    Auf meiner Karte wollte ich an einem Fussweg noch ne Schranke "stellen", aber die Sims würden ja trotzdem durchlaufen. Das hab ich dann nicht weiter verfolgt. Das würde erst wieder interessant wenn ich irgendwie ein Waypoint mit Ampelfunktion auf einer Straße kreieren könnte, die ich dann selber via Script steuern kann. Das ist aber nur ne grobe Idee,



    Aber auch die Tramgleise in der Mitte einer Straße und der NodeEditor waren grobe Ideen.

    Das Problem ist dann eher eine Zeitliche. Wenn ich für ne grobe Idee zum fertigen Feature im besten Fall ein Jahr brauche, ist TPF2 schon abgekündigt.


    Für so etwas bräuchte halt ne bessere Lösungen, als mit den Binärcode zu puzzeln...

    Zur Klarstellung:

    Mein Beitrag ging um das Zitierte, sprich explizit nur um Straßenhaltestellen. Nicht um Konstruktionen.

    Du kannst auch einfach eine Haltestelle aus meinem Straßenpaket nehmen. Diese haben eine zusätzlich Kapazität von 100 ab Werk. Man möchte ja seine Straßenbahnen auch auslasten.

    Der Block streetTerminalCommonAPI gehört nach streetTerminal = { cargo = false, }, und funktioniert natürlich nur für Straßenhaltestellen...

    Schau mal hier:


    Noch zu Info, auch für alle zukünftigen Probleme.


    MeshIds Probleme werden seit dem letzten UG Update nicht mehr zu Problemen führen. UG hat da endlich das Problem gelöst. Richtig sind die Modelle da durch aber nicht.

    Du schaust halt einfach nach welcher Mod Probleme mit Seats hat und versuchst es halt ohne diese. Das ist die Idee dahinter, das man in einer großen Anzahl von Mods ne Info erhält welche Mod es sein könnte...

    Neueste CommonAPI2 von 2024 installieren, checkMods einschalten, irgendwo müsste es ein seatprovider bzw. Seats geben die Falsch sind.


    Ich Tippe mal auch ein Schiff, das hatten wir hier: