Beiträge von WernerK

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 arbeite seit einiger Zeit schon an Lösungen für eingleisige Abschnitte, allerdings nicht auf der Basis der CommonAPI, sondern über mein Parallel-Tool (was nicht heißen soll, dass ich gegen eine CommonAPI-Lösung etwas hätte). Das Projekt liegt ein wenig auf Halde, neben Skript-Support für andere Modder kommen so viele andere Dinge dazwischen, die auch noch notwendig sind, z.B. erweiterte Meterspurgleise und -weichen. Gut Ding will Weile haben, war bei den Jokerstraßen und den Wasserstraßen genauso ;). Die übereinanderliegenden Tramgleise gibt es schon lange, z.B. bei RTP/easybronko; problematisch sind vorbildgetreue einseitige Masten, für die ich gemeinsam mit Sabon (hallöchen ^^) einen "Mastensetzer" entwickelt habe. Die Übergänge zu zweigleisigen Strecken müssen noch umgesetzt werden, dann wäre das Ganze serienreif. Eine Signalisierung eingleisiger Abschnitte ist aber nicht modbar. Hier würde sich aber die Fahrplan-Mod als Notlösung anbieten. Gegenverkehr auf der Straße wird ebenfalls mit den gegenwärtigen Mitteln nicht umsetzbar sein. Es muss in Kauf genommen werden, dass Trams und Autos durcheinander hindurchfahren. Hier wäre UG gefragt, aber das Thema Überlandstraßenbahn kennt dort leider nur eine Nischenexistenz.


    Ich tippe mal auf fehlende Division durch 3,6. Die 70 dürften in dem Fall über die Straße definiert sein.


    So, jetzt habe ich auch noch ein schönes Bildchen. Eigentlich ist das ja kein Fail, aber irgendwie meine ich doch ... =O


    Zitat

    Das Gütersystem in TpF2 (Produktion/Bedarf usw.) zu verstehen macht das Spiel zu einer echten WiSim...

    Sogar richtig authentisch. Besonders gut ist die Sozialismus-Simulation bei der China-Mission. Da werden Waren sinnlos durch die Gegend gekarrt, selbst wenn Produzent und Konsument in Sichtweite liegen. Manchmal verschwinden sie auch einfach irgendwo. ;-)

    Wobei "verbunden" auch schon heißen kann, dass benachbarte Terminals, gleich welcher Art, sich berühren. Aber nicht irgendwo, sondern meistens im Bereich der Empfangsgebäude oder Verladeanlagen. Das kannst du kontrollieren, indem du auf eines der Terminals klickst und siehst, ob das andere weiß unterlegt wird. Wenn es nicht funktioniert, und es sich auch nicht irgendwie umbauen lässt, hilft es, zwischen beiden eine Straße zu ziehen oder auch nur einen winzigen Feldweg.

    Grundsätzlich darf jeder basteln, was er will, und mein Code darf ohnehin für eigene Entwicklungen benutzt werden. Von daher sehe ich da keine Probleme. Ich hatte mir allerdings auch schon ein eigenes Konzept ausgedacht, das nach gewissen Kriterien sortiert, die nicht identisch mit dem Track Sorter sein werden. Ich habe es aber noch nicht zu Ende gedacht. Vor allem wollte ich noch prüfen, ob ein Einsortieren von Mod-Straßen in die UG-Kategorien dazu führt, dass diese dann auch von der KI benutzt werden, was manchmal praktisch, manchmal aber störend wäre. (Weiß jemand da definitiv Bescheid?) Von daher könnte es zu einer Doppelentwicklung kommen, was mich aber auch nicht stören würde - dann kann jeder sich für die passendere Mod entscheiden. ;-) Die andere Möglichkeit wäre, du bereitest schon mal was vor, denn ich vermute mal, dass du dich ohnehin noch etwas in die Materie einarbeiten musst, was ja auch nicht schlecht ist. Du könntest mir das Ergebnis zeigen, und dann sehen wir mal, ob sich evtl. ein Gemeinschaftsprojekt draus machen ließe. Wenn nicht, macht eben jeder was Eigenes. Ansosten können wir die weitere Abstimmung per Konversation (Sprechblasen hier oben rechts klicken) regeln.

    [OT] Irgendwo hab ich sogar ein Skript gesehen, wo vor einer kritischen Operation eine Garbage-Collection per Lua-Befehl erzwungen wurde, offensichtlich, um der Automatik zuvorzukommen. Ob das aber eine wirkliche Alternative ist und Einfluss auf Userdata-Bereiche hat - keine Ahnung.


    Wo es bei mir schon einmal nach getComponent gerummst hat, war die Abfrage von Userdata, nachdem ich zuvor eine längere debugPrint-Ausgabe getätigt hatte.

    Beim RAM sollten es vielleicht eher 64 GB sein, dafür dürften 12 MB (?) Grafikspeicher aber schon mehr als ausreichend sein. Außerdem heißt Schönbau nicht unbedingt, dass du dafür mehr Performance brauchst. Es kommt darauf an, was du alles auf deiner Map unterbringen möchtest, wie detailliert es sein soll und mit welcher Grafikqualität. Schönbau kannst du ansonsten auch schon auf einer 5x5-km-Map mit einer 0815-Grafikkarte betreiben, dafür brauchst du kein großartiges Equipment, aber wenn du natürlich High End möchtest ... ;-)

    Zitat

    Manchmal kam da tatsächlich ein Array das aber fälschlicherweise leer war. Manchmal kam da ein Array das auch Sinn machte welches aber paar Zeilen Code weiter wieder leer war.

    Sieht in der Tat nach dem Garbage-Collection-Problem aus. Bestimmte Userdata-Strukturen der API (ich schreibe bewusst nicht Tabellen) werden nach einer gewissen Zeit "abgetötet", wenn sie nicht mehr vom Hauptprogramm benötigt werden, um im Speicher Platz für neue Daten zu schaffen. Wenn du auf so eine Struktur zugreifst, enthält die Variable dieser Struktur lediglich einen Zeiger auf deren Speicherbereich. Ist die Struktur gelöscht, kann an dieser Stelle plötzlich Datenmüll stehen bzw. irgendwelche neuen Daten. Nicht nur das: Auch, wenn du die Variable in andere Variablen übernommen hast, ist und bleibt es immer noch derselbe Zeiger, und dein Problem bleibt erhalten - sogar, wenn du die Variable als lokale Variable in eine Funktion übernimmst! Um das zu verhindern, musst du die Inhalte der Struktur Parameter für Parameter in eine echte Tabelle kopieren, die du selber angelegt hast, und die somit "Eigentum" deiner Mod ist. Du kannst das mit vielen vielen Zeilen "von Hand" machen, aber es gibt auch nette Hilfsprogramme hierzu. Vacuum Tube hat sowas mal geschrieben, ich weiß aber nicht, ob es zur offiziellen Benutzung freigegeben ist.


    Was nicht heißt, dass dieses Prozedere jetzt bei jeder getComponent-Abfrage notwendig wäre. Genaue Regeln habe ich auch noch nicht herausgefunden.

    Zitat

    Der nächste wünsch wäre Signale mit entsprechenden streckenbezogen Fahrweggeschwindigkeit in den Bahnhof bzw. auf die Strecke und dazu die passenden Vorsignal Bilder.

    Das wäre schon sinnvoll, aber nicht ganz einfach zu programmieren. Vor allem die Signalbilder, weil sie von Land zu Land unterschiedlich sind. Es gibt ja auch noch Dunkelschaltung usw. Aber wo wir schon beim Wünschen sind: Schön wäre es auch, wenn es echte Selbstblocksignale mit Grundstellung Fahrt gäbe.

    Du wirst das Problem überall haben, wo Params nur für bestimmte Jahre verfügbar sind. Bei meinen Mods gibt es das nicht; wenn hier was nicht klappt, hat es andere Gründe.


    Wobei ich persönlich die Mod allenfalls in einer späteren Epoche verwenden würde, um Modelle aus früheren Epochen einzusetzen und nicht umgekehrt. Kreisverkehr war im Jahre 1850 sehr selten. ;-) Aber trotzdem ist es ein Bug.

    Ich hab das mal ausgetestet. Der Fehler tritt auch bei mir auf. Ist alles etwas rätselhaft.

    Zitat

    Ich verbitte mir die Formulierung "Täter".

    War wohl eher scherzhaft gemeint. ;-)

    Zitat

    dem Kreisverkehr z.B. fehlt vor 1960 der Parameter radius.

    Bingo! Das isses! ^^ Könntest du in einer neuen Version evtl. noch, sofern vorhanden, auch noch die Jahreszahlen bei den Params verändern? Es ist ja ein generelles Problem, welches für Normal-User auch nicht überschaubar ist.

    Das sagt uns die stdout:

    Code
    Error message: error: [string "res/construction/street/roundabout.con"]:64: attempt to perform arithmetic on field 'radius' (a nil value)
    stack traceback:
    =[C](-1): __add
    res/construction/street/roundabout.con(64): fn
    @res/config/base_mod.lua(847): ?
    @res/config/base_config.lua(41): ?

    Auf den ersten Blick liegt der Fehler beim Vanilla-Kreisverkehr in Zeile 64 der .con-Datei. Da soll mit dem Radius gerechnet werden, obwohl gar keiner vorhanden ist. Da ich den Kreisverkehr von UG jedoch für sauber halte und noch nie Probleme damit hatte, scheint mir eher eine andere Mod bzw. .con die Parameter des Kreisverkehrs zu überschreiben. Hierbei tritt möglicherweise das alte Problem auf, dass diese Mod ebenfalls eine Reglereinstellung mit dem Key "radius" besitzt. Wir erinnern uns: Die Param-Keys sollen eindeutig benannt sein, da sie global aufgerufen werden - obwohl sich UG hier selber nicht dran hält und einen Allerwelts-Key benutzt. Auf sowas würde ich rein intuitiv mal tippen. Ich habe mal selber abgesucht, ob irgendwelche anderen Mods noch diesen Key verwenden. Tatsächlich gibt es mindestens zwei, von denen du aber keine installiert hast, nämlich enzojz_underground_station und urban_games_demo_track_construction.


    Du könntest mal im Spiel-Verzeichnis die Datei res/construction/street/roundabout.con mit einem Editor öffnen und "radius" in Zeile 53 und 64 durch "ugRadius" ersetzen und sehen, ob der Fehler immer noch auftritt. Falls nicht, sollte UG das vielleicht einmal ändern, falls doch, bitte diese Änderung wieder rückgängig machen, denn du greifst ja in den Code des Spiels ein. Du kannst aber auch mal eine neue Map anlegen und die üblicherweise benutzten Mods solange nacheinander zuschalten, bis der Übeltäter (hoffentlich) gefunden ist. Ich gehe davon aus, dass der Fehler ohne externe Mods nicht auftritt.


    Die andere Möglichkeit - du hättest selber was am UG-Kreisverkehr geändert - aber das wüsstest du ja.

    Natürlich könntest du dich vermutlich da irgendwo reinhacken. Wenn du genügend Kenntnisse hast, und du die Ausdauer hast, es bei jedem Spiel-Update wieder von Neuem zu tun. Macht die CommonAPI ja so. Vielleicht ließe sich das sogar noch einbauen. Aber mit jedem neuen Feature schlüge die Update-Problematik noch heftiger zu, und irgendwann wäre es einfacher, selber ein komplett neues Spiel zu programmieren. ;-)


    Mein rein persönlicher Geschmack sind saubere, dauerhaft verfügbare Lösungen, die aber nur von UG kommen könnten. Momentan wäre ich da auch eher pessimistisch.


    Abgesehen davon. Du redest immer von "zeitgesteuerten Signalen". Was soll das sein? Es gibt beim Vorbild keine zeitgesteuerten Signale! Es gibt ein Zp9, das macht das, was auch der Schaffner mit seiner Pfeife macht. In gewisser Weise ist das "zeitgesteuert", denn der hat ja seinen Fahrplan. Das geht in TpF auch, denn jeder Bahnsteig hat quasi sein eigenes unsichtbares Zp9. Das kannst du z.B. mit der Fahrplanmod steuern. Du kannst auch die Kreuzungen in Bahnhöfen per Fahrplan so beeinflussen, dass sich die Züge an der richtigen Stelle begegnen. Die einzige Schwäche ist, dass es keine Ausfahrsignale gibt, die die Information "Strecke frei" und "Abfahrauftrag" logisch verrechnen. Das heißt, die gibt es doch: Du kannst nämlich anstelle des Ausfahrsignals dasselbe Signal als Wegpunkt setzen. Nachteil: Es schaltet erst einige Zehntelsekunden nach der Ausfahrt des Zuges um. Außerdem kann es einen optisch kaum wahrnehmbaren Ruck geben, wenn der Abfahrauftrag bei rotem Ausfahrsignal erfolgt. Wenn du das meinst, d'accord, ansonsten frage ich mich wirklich, was du eigentlich möchtest.