[Ausgelagert] Diskussion Mehrkernberechnungen etc.

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


  • Hier fühlt man sich doch gleich gut beraten. Da lernt man doch, wie einfach Programmieren ist. Man nimmt eine Fertige Bibliothek, die auch noch in Assembler handoptimiert wurde. Ist doch alles ganz logisch.


    Apropos logisch: @U.S. Army: Stell Dir vor, Du triffst zwei Männer. Beide sehen gleich aus und tragen die gleiche Kleidung. Über die beiden weißt Du nur, dass einer immer lügt, der andere aber immer die Wahrheit spricht. Du hast genau eine Frage, die Du einem der beiden stellen kannst, um herauszufinden, wer von beiden wer ist. Was fragst Du?


    Gute Nacht.

    Des weiteren bin ich der Meinung, dass Rangieren ein sinnvolles Feature dieses Spiels wäre.

  • Ich frage nach der Uhrzeit und schaue auf eine Atomuhr. Wie langweilig!

  • Selbst tragbare Atomuhren haben eine Abweichung, sobald man sie bewegt. Aber das ist Dir sicher bekannt. Diese Lösung funktiniert nicht. Du brauchst auch keine solchen Hilfmittel. Ihr könnt auch nackt in der sauna sitzen. Es gibt eine Frage, die immmer funktioniert. Dir als Logikberater müsste die Lösung leicht fallen.

    Des weiteren bin ich der Meinung, dass Rangieren ein sinnvolles Feature dieses Spiels wäre.

  • Ich spiele dein Spiel nicht mit. Game Over. Erzähl noch irgendwelche Märchengeschichten über mich. Ich hab hier nun echt lang genug mit Dir gespielt!


    Das mit der Uhr funktioniert! Der der lügt, würde dem fragen eine erkennbare falsche Uhrzeit angeben und damit hat es sich. Und wenn Du glaubst, diese Zeitschriftenrätsel sind das beste Instrument, träume weiter...

    Einmal editiert, zuletzt von U.S. Army ()

  • Offtopic


    @U.S. Army: Danke das du mich beleidigt hast, ebenso wie einen Großteil aller anderen Deutschen. Ich weiß nicht welcher Nationalität du bist, mag sein das sie deutsch ist. Deine politischen Ansichten sind jedoch ganz offensichtlich von der US Propaganda beeinflusst. Und die hat weder was mit dem Thema zu tun noch mit diesem Forum, also halte das bitte draussen!

    Ryzen 3600, RX 6700XT, 32 GB RAM

  • Ich frage mich, inwiefern man die Sims aufteilen müsste. Meine Idee/Vorstellung von der ganzen Sache ist in etwa wie folgt: Ein Wohnhaus wird generiert. Auf irgendeine Art und Weise wird dann ein Sim generiert, der dort wohnt. Genauso werden Häuser anderer"Gattung" generiert und bieten entsprechend Platz. Nun haben wir ne ganze Welt davon und der Spaß beginnt.


    Wir haben eine Liste aller zu berechnenden Sims und Listen von freien Kapazitäten. Ich seh jetzt hier 2 kritische Bereiche. Einmal die Entnahme eines Sims und dann der Zugriff auf die Kapazitäten.


    Der Rest sollte doch aber auch parallel machbar sein. Der Netzgraph kann ja als konstant gelten (wenn die Berechnung fix genug wäre) und die Berechnung, wo welcher Sim hingeht, ist doch auch immer gleich. Und hierbei gehts ja erstmal nur um die Zielfindung. Das tatsächliche wandern zum Ziel ist ja wieder was anderes.


    Bei 1000en von Sims könnte das doch also hoch parallelisierbar sein. Oder hab ich nen Denkfehler? ^^

  • Irgendwo im Schrank :P .


    Jetz mal ehrlich: Weshalb ist das hier so ausgeartet? Vertragen sich da ein paar nicht oder wieso? Eigentlich finde ich die Diskussion sinnvoll, aber wenn sie so dermassen unter der Gürtellinie stattfindet, bin ich kein Befürworter mehr.


    Nimmt mich ja schaurig wunder, wieviele Streithähne hier schon mal ein Script geschrieben haben. Dann kann mir sicher JEDER erkären, was eine IF oder eine CASE...OF oder eine ELSE_IF Funktion bedeutet. Durch meinen Beruf habe ich auch n bissi Ahnung, wie gescriptet wird. Zwar nicht viel, aber das aller allernötigste wäre theoretisch möglich.

    Es ist noch kein Meister vom Himmel gefallen.
    ----------------------------------------------------------
    Auch mal ein Blick wert

  • DarkMo:
    Die Frage wäre, inwiefern die Zielfindung von den vorhandenen Transportkapazitäten abhängt. Wenn den Sims egal ist, ob im Bus, im Zug oder der Tram noch Platz frei ist, so sollte das gut parallelisierbar sein (da jeder unabhängig voneinander agiert). Ansonsten sieht das dann vielleicht etwas anders aus.

  • @DarkMo: Du übersiehst, dass es auch eine Liste mit den möglichen Reisezielen gibt. Es wird also ein Haus generiert. Darin entstehen mehrere Sims. Für jeden wird ein Thread erschaffen, der ein Ziel sucht. Diese Threads sind unabhängig von einander. Wären sie abhängig, könnten sie nicht parallel laufen. Jeder Thread muss dann eine Kopie der Liste mit allen möglichen Reisezielen haben. Davon weist er dem Sim aus jeder Kategorie eins zu. Danach werden die Listen verglichen. Bei einer Kollision, also wenn zwei Sims das selbe Ziel bekommen haben, behält ein Sim das Ziel, alle kollidierenden werden neu berechnet. Da diese Berechnungen nicht nur durchgeführt werden müssen, wenn ein Haus entsteht, sondern auch, wenn eine neue Verbindung geschaffen wird, müssen viele Sims immer wieder neu berechnet werden. Das führt zu einer vielzahl von Kollisionen, die in einer Vielzahl von Neuberechnungen gelöst werden müssen.


    Alternativ kann man auch die Liste der möglichen Reiseziele aufteilen. Dann sieht nicht mehr jeder Sim alle Ziele.


    Und für Frachtkisten muss muss das selbe Problem gelöst werden, wobei dort die Randbedingungen anders sind.

    Des weiteren bin ich der Meinung, dass Rangieren ein sinnvolles Feature dieses Spiels wäre.

  • Ich höre immer, was sein muss. Dabei schert sich niemand um Mathematik und Physik. Das finde ich immer sehr erstaunlich.


    Die PCs mit der höchsten Multicoreleistung sind heute auch die mit der höchsten Singlecoreleistung. Die Entscheidung fällt somit nicht schwer. Und Du kannst ein Aufbaustrategiespiel nicht wirklich mit einem Shooter vergleichen.

    Nunja, das stimmt auch nicht so ganz.. Also Singlecores wie eben die Intel P3 Architektur ( auf dieser basiert Core) haben nicht immer Multithreadded die bessere Leistung.. Sieht man ganz unter unter Linux was der FX oder auch ein Power8 Leisten. Sonst hast du recht, wobei es geht auf 4 Kerne zu verteilen, hierzu ist aber eben mehr Aufwand nötig.
    Kern 1: Weltberechnung
    Kern 2: KI
    Kern 3: Physik
    Kern 4: Wetter und Lichteffekte


    Das Problem ist hier aber eher, dass 90% der Software nur für ein bis 2 Kerne Geschrieben wird. Und Grade so "Perlen" wie BF oder CoD eher an miesen Codes scheitern.. Und dass ein Shooter keine Leistung brauch, sieht man Eindrucksvoll an den PS4/ XB One. Ein TF würde ohne Optimierungen auf einem PS4 System garnicht erst laufen..
    Das Problem was TF hat, ist das gleiche wie bei ARMA oder auch Starcraft.. Massiv Singelcoreleistung. Man könnte hierzu natürlich einen I7 5820k nehmen, 2 Kerne und HT Abschalten und dann OC Betreiben, aber ich wage zu bezweifeln, dass man damit den Flaschenhals bei TF umgeht.. Vllt werden diese 1-2 Kern Spiele mit aufkommen eines L4 Caches auf HBM Basis beschleunigt werden.. Aber das ist noch mehr Spekulatius als der Thread ansich.. Auf den Themenstarter bin ich bewusst nicht eingegangen weil der schlichtweg keine Ahnung von Spielmechaniken hat.

    MySystem: R5 3600, 32 GB Ballistix DDR3200, GTX 3060Ti
    TPF2 und ETS2 Spieler

  • @fjb: Deswegen war ja meine Idee, dass nicht jeder eine Kopie der Liste erhält, sondern alle auf der originalen Liste arbeiten. Hier muss man dann halt wie gesagt den "Zugriff" auf ein Ziel entsprechend absichern. Das geht aber mE nach nur, wenn die Ziele bedingungslos ausgewählt werden. Also bspw: "Wähle das weitestmögliche Ziel aus" wäre eine Bedingung. Er hat bspw 10 Ziele und Nummer3 der Abarbeitungsfolge wäre schon das weitest mögliche. Das kann er zu dem Zeitpunkt aber noch nich wissen und geht also erstmal weiter und checkt den Rest. Ist er durch und weis nun, dass er Nummer 3 wählen muss, kann diese aber zwischenzeitlich schon vergeben sein. Das wäre dann wiederrum eine Kollission und das di nicht gut sind, sind wir uns glaube ich einig ^^ Man könnte ja eventuell eine Sim-spezifische Liste mit den 10 weitesten Zielen für den Sim anlegen und am Ende wird das weiteste noch verfügbare genommen. Wäre eventuell eine Kompromisslösung.

  • Wenn Du mit einer Liste arbeitest, dann brauchst Du ein Locking. Damit wirst Du wieder sequentiell. Und ohne Bedingungen wirst Du nicht auskommen, da der Sim sein Ziel ja erreichen können muss. Eventuelle Zeitvorgaben oder ähnliches sind da noch gar nicht berücksichtigt. Das hängt ja von den linien und ihrem Takt ab. Beides hängt wiederum an der Position der Fahrzeuge auf den Linien. Die Positionen der Fahrzeuge wiederum beeinflussen sich gegenseitig. Bei Bussen kommt noch der KI-verkehr hinzu, der wiederum von den Positionen der einzelnen Sims abhängt. Hier fängt es schon an rekursiv zu werden. Bei einer rein zufälligen Verteilung der Ziele bei der Annahme, dass jedes Ziel optimal erreichbar ist, würden die Gewinne für den Spieler aber stark einbrechen. Das liefe mehr oder weniger auf ein Spiel ohne Kosten nur als hübsche Modellbahn hinaus.

    Des weiteren bin ich der Meinung, dass Rangieren ein sinnvolles Feature dieses Spiels wäre.

  • Du denkst da glaube ich viel zu restriktiv. Gehen wir von 1000 Sims aus und 1000 Zielen. Solange man das nicht über die GPU berechnen lässt, haben wir heut wohl im Schnitt 4 Kerne, würd ich mal sagen. Das heisst also, es sind 4 Threads die 4 Ziele aus 1000 suchen unterwegs. Soviel locking ist das nicht ^^ Zudem ist das Sperren kritischer Bereiche (gemeinsame Daten mehrere Threads) ja irgendwo ein Grundbaustein des Multithreading. Das also als Ausschlusskriterium zu nutzen... ^^ Zudem wird da nichts gleich sequentiell. Aber gut, wenn mans so macht, wie ich das oben beschrieben hab (erster Pass: alle Ziele prüfen und gewichtet/sortiert und limitiert in einer eigenen Liste speichern, zweiter Pass Ziel reservieren), wäre das ja sogar noch simpler. Oben ging ich davon aus, das schon beim ersten Pass gesperrt wird. Is ja aber Käse, ist ja ein rein lesender Zugriff. Sperrungen sind aber nur bei schreibenden Zugriffen nötig. Also bräuchte man das nur, für den abschließenden Reservierungsversuch.


    Und wegen den Bussen und ihren Positionen usw... Das wird ja jetzt schon von TF nicht berücksichtigt ^^ Hier werden simple Grundannahmen als Basis vorgenommen. Die Länge einer Linie ist bekannt. Die Anzahl der Fahrzeuge auf der Linie ist auch bekannt. Weis nich, wovon er Geschwindigkeitsmäßig ausgeht. Man sieht nur ziemlich oft, dass TF erstmal eine Annahme trifft und die Später korrigiert (warscheinlich Top-Speed oder 75% davon oder sowas als Anfangswert und danach korrigiert auf die durchschnittliche Rundenzeit). Jedenfalls haben wir eine Geschwindigkeit, eine Länge und eine Fahrzeuganzahl woraus sich ein Takt errechnen lässt. WO da irgendein Fahrzeug ist oder ob die gar Kapazitäten haben ist dabei völlig unerheblich. TF "beansprucht" an Zeit wohl Takt + einmalig die Wartezeit. Irgendwie so war das doch. Das würde ich beim besten willen auch nich ändern, wir wollen ja performanter und nicht noch schlechter werden ^^

  • @Kirsche nun hab dich mal nicht so! Als ob die deutsche Propaganda besser ist.


    Von wegen in den USA rasen die Züge nur wie die bescheuerten (wenn es ein Train-Unfall gab), andererseits fahren die Züge in den USA total lahmarschig (wenn angegeben wird mit der Geschwindigkeit). Diese total widersprüchlichen Sprüche / Kommentare (z.B. bei Spiegel Online-Artikeln zu Train-Unfällen in den USA) stammen aus deutscher Propaganda, von denjenigen die keine Ahnung haben aber für die immer die Ausländer schuld sind.


    Aber was bringt es jetzt darüber weiter zu diskutieren. Die einzige Hoffnung besteht darin, dass die Bürger der USA und die deutschen Bürger mithilfe von TTIP endlich lernen, miteinander (zu) arbeiten (zu müssen).

    2 Mal editiert, zuletzt von U.S. Army ()

  • Hast Du schon mal die Möglichkeit in Betracht gezogen, dass die Anti-TTIP-Bewegungen von deutschen Firmen finanziert werden? Ebenso in den USA gibt es TTIP-Gegner.


    Aber ich denke, dass sollten wir wo anders weiter diskutieren!

BlueBrixx