Beiträge von VacuumTube

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


    Um Crashes bei zu viel Nutzung von print in Lua zu umgehen

    Ich befürchte, das Problem ist noch nicht ganz weg. Beim Testen in der Console (auf der im Hintergrund geprintet wurde) bin ich auf zwei sehr seltsame Fehler gestoßen:



    Code
    PANIC: unprotected error in call to Lua API ([string "res/config/game_script/base.lua"]:18: attempt to index a nil value)

    Aktuell wird es immer unübersichtlicher, was man wo bei den Assets findet

    Das ist natürlich die Folge wenn jeder Modder andere oder seine eigenen Kategorien verwendet.

    Das einzige was du tun kannst um Übersicht zu schaffen, ist die Kategorien der Mods selber umzubenennen:

    Mod Ordner -> res\construction\asset -> entsprechende Datei öffnen

    Bei der Zeile categories = {"fences"} kann man die Kategorie ändern

    Update: Ich muss mich korrigieren.

    Aus Spaß hab mal eine solche Karte gestartet - und sie hat tatsächlich geladen. 8| Mit niedrigen Grafikeinstellungen krieg ich sogar 30 FPS im Standbild. Beim Scrollen und Zoomen sieht die Sache aber wieder ganz anders aus. Das geht sehr ruckelig vorran und macht auf Dauer keinen Spaß. Ich vermute, dass es daran liegt, dass die Kartenbereiche ständig vom ausgelagerten pagefile zum Ram hin- und hergeschoben werden.

    Ram belegt es ungefähr 3 GB (von 8).

    Im Ressourcenmonitor steht bei Zugesichert 9,3 GB.

    Die sind in den config Dateien der Schienen definiert: \res\config\track

    Diese Zeile sieht vielversprechend aus:

    t.speedCoeffs = { .85, 30.0, .6 } -- curve speed limit = a * (radius + b) ^ c


    Bin aber nicht sicher, ob der Mindestbiegeradius damit geändert werden kann.

    Also mit 8 GB Ram kann man problemlos mittlere und große Karten spielen.


    In der stdout steht * Size: 42 x 210 was umgerechnet 10,5 km x 52,5 km entspricht. Durch Ausprobieren fand ich heraus, dass das den Einstellungen "Größenwahnsinnig" und 1:5 enstpricht !! Die Seitenlänge 52,5 km ist damit die momentan maximal mögliche Länge einer Karte.


    Bei der Konfiguration würde mich es eher wundern, wenn das Spiel läuft. Selbst die besten Systeme können solche Karten wahrscheinlich nicht problemlos laden und wenn dann wird man nicht viel bauen können, bis man ins Daumen-Kino übergeht.

    Wie kann man die Grundwerte ändern?


    Wie schon gesagt wurde, sind die Werte im Editor auf 50-800 beschränkt. Bei dem Stadtgenerations-Tool ist "Riesig" auch nur 200.

    Diese Beschränkungen gelten aber nicht, wenn man hinter die Kulissen schaut. Über die Ingame Konsole der CommonApi kann man auch die Grundwerte setzen. Dazu führt man Folgendes im Skript-Thread aus:

    Code
    game.interface.setTownCapacities(id, CapacityRes, CapacityCom, CapacityInd)

    Nach meinen bisherigen Erfahrungen kann man auch relativ beliebe Werte angeben, ohne einen Crash zu bekommen. So kann man theoretisch Mega-Städte entstehen lassen, allerdings geht der Bauvorgang sehr langsam vorran.

    Jetzt stellt ihr euch die Frage: wie kriege ich die id einer Stadt? Entweder mit game.interface.getTowns() oder einfacher über das neue Debug fenster (AltGr+D), das einem die ID des zuletzt angeklicktem Objekts anzeigt.



    Mod erstellen?


    Ich wäre bereit weitere Mods dazu zu entwickeln, muss aber wissen, was genau gewollt ist und kann natürlich nur machen was möglich ist. Mit GUI ist das sehr eingeschränkt, also einfach das Stadtfenster modifizieren geht natürlich nicht. Wenn ihr euch eine Mod wünscht, solltet ihr möglichst genau beschreiben was diese machen soll.

    Da ich mich viel mit dem Thema beschäftigt habe und Mods dazu erstellt habe, gebe ich mal meine gesammalten Erkenntnisse dazu.



    1. Mit Entfernung hat das nichts zu tun. Die Zahlen beziehen sich nur auf die Kapazitäten der Gebäude (bei Residential im Prinzip die Bevölkerung).


    2. Die im Editor eingestellten Werte sind die Grundwerte und konstant (sind auch nur hier sichtbar).


    3. Diese Grundwerte werden dann mit einem von der Jahreszahl abhängigen Faktor multipliziert und ergeben den (ich nenne es mal) Basiswert. Im Spiel steht glaub ich Anfangsgröße, was aber verwirrend ist, da sich dieser Wert über die Zeit ändert.

    1850 ist dieser 1, das heißt: Grundwert=Basiswert. Der Faktor steigt bis 2000 linear auf 1,5 an. Das erklärt, warum bei 800 Grundwert 1200 im Fenster steht. Nach 2000 bleibt der Faktor konstant auf 1,5.

    Was man jetzt im Stadtfenster unten sieht ist der Basiswert von Residential. Die Basiswerte von Gewerbe und Industrie werden genauso berechnet, aber nirgendwo angezeigt. Sie sind entsprechend anders, wenn ihre Grundwerte anders sind.


    4. Dieser Basiswert dient nun als Referenz für die Wachstumsberechnung. Multipliziert mit dem Gesamtwachstum (Basiswert * (1+ ... %) ) ergibt das den Zielwert auf den die Städte wachsen wollen. Wieder können die drei Werte unterschiedlich sein.


    5. Die oben im Fenster fett angezeigten Werte für die drei Bereiche sind die aktuellen tatsächlichen Werte für die Gesamtkapazitäten einer Stadt. Unter normalen Bedingungen erreichen Städte diese meistens nach einer gewissen Zeit. Man kann es sich aber nicht so wie einen Soll/Ist-Wert Vergleich vorstellen, sondern der Algorithmus funktioniert irgendwie anders. Vor allem wenn die Gebäude mit Mods verändert werden, ergibt sich teilweise ein anderes Verhalten.

    Die Städte wachsen jetzt wesentlich kontrollierter und werden nicht mehr unbegrenzt groß, was sicherlich der Performance zugute kommt. Deswegen braucht man insgesamt nicht mehr soviele Personenzüge.


    Was die Industrien angeht, die steigen auch nicht mehr auf abartig hohe Produktionen an (TPF1: max ich glaube 1600). Sondern Maximum ist jetzt 400, weiß aber nicht ob das auch für Bauernhöfe gilt. Von daher, wie oben schon gesagt, macht es Sinn, mehrere Zulieferer an die Fabriken anzuschließen. Dass das Konzept so geändert wurde, sieht man auch daran, dass die Industrienverteilung jetzt sinnvoller ist: Mehr Erstindustrien, weniger Endfabriken.

    Super, die Tab Completion funktioniert jetzt auch in den Fällen mit [x].


    Die Mod Einstellungen werden bei mir im Spiel manchmal nicht angezeigt, die Liste ist dann leer. Konnte nicht rausfinden, wann und warum. Die CommonApi ist auf jeden Fall immer als Mod aktiviert.


    Und was die Liste der Einstellungen angeht: Die Optionen sind nicht immer in derselben Reihenfolge. Ideal wäre es natürlich, wenn sie immer in der Reihenfolge sind, in der sie in der mod.lua definiert werden.

    Feedback zur Autovervollständigung:

    • momentan gibt es eine groß/klein Unterscheidung, welche mM aufgehoben werden könnte
    • das Verhalten bei tables ist nicht optimal. Die Vervollständigung schlägt einem vor: tab, table, table.1, ... (wenn es nur ein Element gibt). Diese Schreibweise führt aber zu einem Syntaxerror. Korrigiert man es, funktioniert die Vervollständigung aber nicht mehr: table[1]. schlägt einem nur allgemeine funtionen vor.

    Vorschlag zu den Mod Settings:

    Ideal wäre es natürlich, wenn Mods Änderungen von Einstellungen, die im laufenden Spiel vorgenommen werden, auch direkt mitbekommen. Momentan ist es aber so, dass die Werte über merk_modutil[1].userSettings.get("mod_1") die alten Werte vom Spielstart enthalten, auch wenn in der Datei schon neue Werte stehen.

    Weiß aber nicht inwieweit da bei dir der Einfluss liegt.


    Getestet wurde mit der neusten Version

    Naja jeder geht die Mission anders an.

    Ich habe für den Gütertransport vor allem Züge genutzt. Allein schon für jedes Depot braucht man eine Weiche. Und in Bahnhöfen baue ich gerne ein paar Weichen die man evtl braucht (Ein Übergang sind aber gleich 2 Weichen). Zb war es für Aufgaben davor praktisch, den Shinkansen in der mittleren Stadt wenden zu lassen.

    Zudem ist im Karteneditor immer noch Speicherleck angesagt. Bzw. da wird nichts freigegeben.

    Und was lernen wir daraus? Wenn man ein Spiel programmiert, nicht auf C(++) ... zumindest wenn man ne eigene Engine komplett neu entwickelt.

    Beim Speichern benötigst du einen konsistenten Zustand und damit schließt das ein nebenläufiges Speichern in einem Thread aus.

    Das stimmt natürlich und ist der Grund, warum das Autosave nicht unbemerkt ablaufen kann. Die Zeit hängt wahrscheinlich hauptsächlich von der Dateigröße des Savegames ab. Da könnte man noch optimieren. In TPF1 hatte ich ne mittlere Karte mit über 300MB...

    Jedenfalls find ich es viel besser, dass man sich jetzt zumindest beim Speichern umschauen und Sachen anklicken kann - und nicht mehr das Spiel einfriert.

    Danke an den Screenshot MaikC.


    Ist jetzt veröffentlicht: Advanced Camera Views

    Es gab noch ein paar Probleme, da durch andere Mods ungewöhnliche Datenstrukturen übergeben wurden.


    #Forumfeedback

    Für diesen Fall (voriger Beta-Test und anschließende Veröffentlichung) sind die Forumfunktionen nicht wirklich geeignet. Man kann ein Passwort hinzufügen (aber sinnlos wenns dann doch öffentlich ist) oder nur bestimmten Personen zugänglich, die man dann aber explizit eintragen muss.

    Da ich den Mod-Eintrag aber damals erstellt habe, dann bearbeitet hab und jetzt sichtbar gemacht, ist das Datum immer noch das alte (22. Feb). Scheinbar haben es trotzdem einige gesehen und hatte keine Lust, es nochmal komplett neu hochzuladen. In den Downloads taucht es jetzt aber eben nicht auf, da es weiter hinten eingereiht ist.

    Of course... the only thing where we need game, is in the updateFn. This is defined in a modifier (where game is not available anymore) but excecuted in the game.


    Do you have an example of a game script from Enzojz? I haven't found anything from him using it.