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.
Vielleicht ist die Nachfrage unterschiedlich. Ich meine es gibt irgendwo ein Fenster, das die Lieferbeziehungen anzeigt. Was steht denn dort?
Alle 3 Ziele hatten jeweils Luft nach oben.
Vielleicht versucht TPF2 ja, erst ein Ziel (das erste )zu saturieren, egal ob die Linie das hergibt oder nicht. Das bessere Verhalten wäre, die Linien zu saturieren.
Beispiel: Fabrik kann 200 Einheiten herstellen.
Linie 1 kann 50 Einheiten/Zeitslot transportieren (Rate) Linie 2 kann 30 Einheiten/Zeitslot transportieren Linie 3 kann 20 Einheiten/Zeitslot transportieren
Ich würde erwarten dass die Fabrik dann 100 Einheiten an Terminal 1 liefert 60 Einheiten an Terminal 1 liefert 40 Einheiten an Terminal 1 liefert
Im Moment gehen 180 an Terminal 1 und Terminal 2 und 3 gehen fast leer aus.
ich habe an einer Fabrik eine LKW-Ladestelle. 3 Linien nutzen diese Ladestelle und sollen jeweils Lebensmittel in eine andere Stadt bringen.
Was passiert?
Terminal von Linie 1 wird mit Lebensmitteln geflutet und Lebensmittel gehen verloren Terminal von Linie 2 bekommt gelegentlich auch mal Lebensmittel Linie 3 verhungert an ihrem Terminal
Mir ist nicht klar, nach welchen Kriterien die Güter auf die Linien verteilt werden. Aber es scheint klar, dass das Überlaufen eines Terminals kaputt ist. Wenn es andere Linien gibt, sollte die Fabrik die Lebensmittel auf die anderen Linien schicken, oder?
MOMENT!Das Spiel beginnt im Jahre 1850. Dort war es durchaus noch üblich, Züge zu mischen. Ganz besonders in Wild West Szenarien sind reine Personenzüge völlig unüblich. Zumindest in dieser frühen Spielphase.
Und das ist auch genau der Grund, weshalb ich solche Züge einsetzen will: Weil es für die damalige Zeit passt. Nicht weil es in irgendeiner Weise "praktisch" ist. Das ist es natürlich nicht.
Ohne es hinzuschreiben: Aber genau das war meine erste freie TPF2-Map. USA ab 1870. Da wollte ich unbedingt Mischzüge wegen den geringen Einzelvolumina einsetzen.
Das hab ich dann sein lassen, da ich den Trick mit dem versetzen Güterbahnsteig bis dahin noch nicht kannte.
Genau..es ging mal darum den gemischten Zug durchzuspielen. Das ist natürlich seltenst sinnvoll.
Platzsparend macht man das dann so (Anklicken zum Vergrößern):
Da braucht der Zug die Ehrenrunde nicht mehr von Gleis 1 auf Gleis 1 drehen, sondern nur vorziehen
Und ganz lustig wird es, wenn man den Bahnhof im Bahnhof auch noch umbenennt. Dann wird wirklich klar, dass es 2 Bahnhöfe sind. Stören tut mich letztlich nur, dass ich mit dem Klick auf die Güterplattform das Fenster des Personenbahnhofs öffne, bzw der Linienmanager davon ausgeht, dass ich einen reinen Güterzug auf ein Personengleis routen will. Schaut auf den Mauskursor der über der Güterplattform auf "Gdorf Personen" verweist.
Ich denke, das hätte man dediziert erklären können.
So...ich habe mal ein Beispiel gebaut, was die jetzige Absurdität anzeigt:
Wie man sieht fährt der Zug zwischen 2 und 3 den Kreis. Der Linienmanager zeigt das aber nicht an. Der Zug muss es aber tun, um von Gleis 1 Passagierbahnhof in das selbe Gleis 1 Güterbahnhof zu kommen. Das ist alles nicht richtig zu Ende designed imho. @'tomdotio
Und somit also das Bahnhof-Symbol. für ein bestimmtes Gleis muss dann der Terminal-Manager herhalten.
Ich klicke aber bis jetzt ingame immernoch aufs 3D-Modell und eben nicht aufs passende Symbol (die manchmal ausgeschaltet sind). Da bricht für mich die user experience (Benutzererfahrung).
ich habe jetzt schon mehrfach einen Güterbahnhof um Personengleise erweitert. So weit so gut. Wenn ich dann aber im Linienmanager die Personenzuglinie erstellen will und nur das 3D-Modell des Bahnhofes anklicke, dann kann er die Linie nicht erstellen. Das 3D-Modell ist dem Güterteil zugeordnet und weiß vom Personengleis nichts.
Ich muss dann immer dediziert das Personen-Bahnhofssymbol anklicken. Das irritiert.
Ebenso irritiert, dass es das Gleis 1 bei kombinierten Bahnhöfen ZWEIMAL gibt, einmal für Personen, einmal für Güter. Wie seltsam ist das denn?
Und zu guter Letzt: Spielt man ohne Symbole, kann man bei einem Personen-Güter-Bahnhof immer nur einen Aspekt des Bahnhofes durch Klick aufs 3D-Modell erkennen. Habt ihr Möglichkeiten gefunden, des Güterteil eines als Personenbahnhof gestarteten Bahnhofs ohne das GUI-Symbol zu aktivieren?
Irgendwie erscheinen die Bahnhöfe zwar in der 3D-Welt als ein Objekt, in der Spiellogik scheinen es aber 2 verschiedene Objekte zu sein. Irritiert euch das auch?
Ich habe mal ein wenig probiert. Ich wollte schauen, was man dynamisch innerhalb einer Mission ändern kann.
Ich habe es NICHT via LUA geschafft:
Fahrzeuge zu einer Linie hinzufügen
Stop von Linien zu modifizieren
Fahrzeuge zu einem Verband hinzuzufügen oder oder zu entfernen.
Beim Bulldozern eines Gebäudes via LUA ist mir das Spiel abgetaucht.
Warum? Ich wollte Dinge, die man so als Spieler tut, einfach Skripten.
Hier sehe ich eindeutig einen Schwachpunkt in TPF. Viele Werte (z.B. Welche stops hat eine Linie), sind read only.
In diversen Gamescom-Videos wurde ja berichtet, dass mehr Dinge Modbar geworden sind. Ich hoffe das ist auch so.
Es wäre ja schon cool, wenn man z.B. in einer Mission einfach mal ein Berg wachsen lassen könnte, oder eine Straße wegen einem Bergrutsch verschüttet würde. Alternativ könnte eine Stadt wegen Unzufriedenheit einfach mal ein paar Fahrzeuge konfiszieren...manche Leute haben ja rege Fantasien.
Vielleicht arbeiten Sie an einen macOS Metal Port, da ja OpenGL für diese Plattform ausläuft. Oder ein Vulkan Port und dann per Shim auf Metal läuft...?
"Transport Fever 2 erscheint Ende 2019 für PC. Bis dahin will Urban Games auch noch die Performance-Schwächen beheben, die uns bei der Gamescom-Demo noch aufgefallen sind."
Ich teile deine Bedenken. Ich nehme schwer an, dass TPF2 immer noch auf OpenGL als Rendering-API nutzt. Und wenn jetzt jede Menge Leistung ins Rendering mit dem erheblichen OpenGL-Overhead gesteckt werden muss, dann fehlt die eben für die Simulation. Ja ich weiß, man kann Rendering und Simulation z.T. via Threads entkoppeln. Aber das geht meistens nicht gut, wenn man sowas nachträglich macht/machen muss.
Alternativen zum OpenGL-Rendering gibt es: Vulkan oder DirectX oder Metal (für den Mac). DX geht nur auf Windows. Vulkan geht für Windows und Linux direkt, auf dem Mac nur via Wrapper auf Metal. Dazu kommt, dass OpenGL auf dem Mac als "deprecated" gekennzeichnet ist. Gerade mit dem Potential, größere Maps mit mehr Mods zu rendern, verstehe ich nicht wirklich, warum beim Rendering kein Update für TPF2 gekommen ist. Man muss auch verstehen, dass so eine Render-Engine ein erhebliches Investment ist, aber mit den 500K verkauften Einheiten hätte man TPF2 durchaus für die Zukunft fit machen können.
Weiß jemand vielleicht mehr? Geht jemand hin und kann mal konkret nach dem Renderer fragen? Statements gab es ja bisher dazu keine.
Btw...ich zahle liebend gern den Kaufpreis für die 3. Instanz eines Spieles, wenn ich weiß, dass die Zukunft der Reihe investiert wird. Ein neues Render-Subsystem kann man auch via Update realisieren.
Na cool. Ich bin jetzt über 2 Wochen AFK. Ich wollte nicht so viel Staub hier aufwirbeln. *Hust*. Ich nutze halt nur Windows und MacOS mehr oder weniger parallel. Ich melde mich, sobald ich wieder an Gerät bin.
Ich glaube ich habe herausgefunden, warum das shell script auf dem Mac nicht funktioniert: readlink funktioniert auf dem Mac anders. Die Option -f gibt es nicht.
Trotzdem passiert nichts weiter, weil in utils.lua - scanDirsShell nichts weiter ankommt. result bleibt leer:
Lua
_log("Trying to run "..pcmd)
p = assert(io.popen(pcmd))
for line in p:lines() do
_log("line: "..line)
result[#result+1] = string.gsub(line, '\\', '/')
end
p:close()
commonapi.dmp(result) --added by momocat
return result
Code: stdout.txt dazu
commonapi.utils: Trying to run sh "./mods/eis_os_commonapi_1/res/scripts/commonapi/listdirs.sh" "/tmp/lua_GTCmjW"
{}
commonapi.utils: elapsed time for scanDirs: 0.00 (files 0)
Erfolg!
Ich habe das Shellscript temporär modifiziert:
Bash
#!/bin/sh
TMPFILE=$1
mygreadlink=/local/homebrew/bin/greadlink
if [ -f "$TMPFILE" ]; then
while IFS= read -r line; do
echo $line >> /tmp/tpf
find "$line" -type f -exec $mygreadlink -f {} \; 2>/dev/null
done < $TMPFILE
rm $TMPFILE
fi
Damit findet der preloader nun auch all sein Kram. Siehe stdout.txt
Nun müsste man wohl eine shell function nutzen, um gnu-readlink (wie ich es via homebrew auf meinem Mac installiert habe) zu ersetzen. Vielleicht ist das ein Kandidat: https://stackoverflow.com/a/1116890 . Ich kann das jetzt in Kürze nicht leisten, bin erstmal länger afk.
Nochmal ich. Habe eine neue listdirs.sh gebaut, die auch auf den Mac funktioniert. Unter Linux habe ich die nicht getestet @eis_os
Das Ergebnis in Form von stdout.txt ist auch angehangen. Diesmal ohne spezielle settings.lua für den Mod. Wohl bekommt's.
Bitte mit 1.6.20190717 testen, ein Savegame mit in der Modliste aktivierten CommonAPI laden und mir eine stdout.txt geben.
Erledigt.
Mir ist nur nicht klar, ob ich in meiner settings.lua die obigen Settings per Hand setzen sollte, oder nicht.Ich habe sie mal spaßeshalber reingeworfen, TPF hat sie aber ausgekegelt.
Ich kann noch nicht mal sagen, ob die reinen Lua CommonAPI Version unter MacOS funktioniert. Gibt es da zumindest Erfahrungen ob das Shellscript läuft? Ich hab schon mehrmals ne stdout.txt erbeten, aber leider kommt nüx.
Zumindest die stdout.txt kann ich bieten. MacO 10.14.5
Ich hab auch Windows hier. Ich schaue mal wegen der stdout. Und ja...ich nehme an TPF2 wird mehr Goodies haben. Ich fuchse mich ja auch eher in die Themen ein, um für Q4 gewappnet zu sein.
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
Das Video zeigt eine Mission die nichts anderes macht, als die Position eines Depots im gelben Kreis anzuzeigen. Das sind ja Infos die es braucht, um auf fremden Maps irgendwas zu lokalisieren. Leider ist mir bis jetzt nicht bekannt, irgendwelchen Text irgendwohin auszugeben. Daher dieser Workaround.
Ich habe auch mein Tooling soweit eingerichtet, dass ich relativ flott weiterarbeiten kann, sollte ich Zeit finden. Im Idealfall werden sogar Lexikonartikel entstehen, dann aber eher für TPF2. Ich hoffe von UG noch Schreibrechte fürs Wiki zu erhalten ( @tomdotio), um dort Dinge zu dokumentieren.
Mfg, Momocat
Zum Schluss noch die Mission
Lua
local TaskManager = require "TaskManager"
local missionutil = require "missionutil"
local function makeIntroTask(doneFn)
local info = {
name = _("Dummy Task"),
paragraphs = {
{ text = "Build a depot and check it's corrdinates. Delete it afterwards and build a new one." },
},
}
local function fn(taskManager, task)
task.setCompleted()
doneFn(taskManager)
end
info.options = { { _("End Mission!"), fn } }
info.optionsRightAlign = true
local task = missionutil.makeTask(info)
task.setProgressNone()
return task
end
local function makeListenTaskX(doneFn)
local info = {
name = _("X"),
paragraphs = {
{ text = "Listen X" },
{ type = "TASK", text = _("Pos X") }
},
}
local task = missionutil.makeTask(info)
task.init = function(taskManager, data)
local centerPoly = missionutil.makeCircleZone({0,0},2000)
local centerZone = {polygon = centerPoly, draw = true, drawColor = missionutil.colors.YELLOW}
taskManager:setZone("center",centerZone)
task.setProgressCount(0, 20000)
end
task.update = function(taskManager)
local depotList = game.interface.getEntities({pos={0,0},radius=2000}, {type = "VEHICLE_DEPOT"} )
if #depotList == 0 then
task.setProgressCount(0, 20000)
return
end
for i = 1, #depotList do
local depot = game.interface.getEntity(depotList[i])
local x = depot.position[1]
task.setProgressCount(x, 20000)
end
end
return task
end
local function makeListenTaskY(doneFn)
local info = {
name = _("Y"),
paragraphs = {
{ text = "Listen Y" },
{ type = "TASK", text = _("Pos Y") }
},
}
local task = missionutil.makeTask(info)
task.init = function(taskManager, data)
task.setProgressCount(0, 20000)
end
task.update = function(taskManager)
local depotList = game.interface.getEntities({pos={0,0},radius=2000}, {type = "VEHICLE_DEPOT"} )
if #depotList == 0 then
task.setProgressCount(0, 20000)
return
end
for i = 1, #depotList do
local depot = game.interface.getEntity(depotList[i])
local y = depot.position[2]
task.setProgressCount(y, 20000)
end
end
return task
end
local function makeMissionComplete(label)
local info = {
title = _("Mission completed!"),
name = _("Mission completed!"),
description = _("It's finally done!")
}
local function fn(taskManager, task)
missionutil.completeAllTasks(taskManager)
end
local task = missionutil.makeMissionCompleteTask(info, fn)
return task
end
function data()
local tm = TaskManager.new()
tm:register("messageIntro", makeIntroTask, missionutil.addTask("missionComplete"))
tm:register("missionListenX", makeListenTaskX, missionutil.addTask("missionComplete"))
tm:register("missionListenY", makeListenTaskY, missionutil.addTask("missionComplete"))
tm:register("missionComplete", makeMissionComplete)
local mission = missionutil.makeMissionInterface(tm)
mission.onInit(function()
tm:add("messageIntro")
tm:add("missionListenX")
tm:add("missionListenY")
end)
return mission
end
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.Weitere InformationenSchließen