Beiträge von Falkenbahn

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


    den Dienst deshalb als Facebook auf Crack zu bezeichen, halte ich für absolut daneben. Anders als Facebook, reicht es bei Discord einen Benutzernamen sowie eine E-Mail anzugeben und schon haste nen registrierten Account.

    Auch bei Facebook reicht das theoretisch. Den echten Namen muss man nicht angeben. Das muss ja auch bei Discrod nicht. Trotzdem werden bei beiden Diensten die Daten gesammelt. Während Facbook sich in Europa allerdings mit der Datensammelei einschränkt, insb. was die weitergeben an Dritte angeht, gibt es diese Einschränkung nicht. (Nicht das Facebook das freiwillig macht, das liegt viel mehr an den europäischen Gesetzten und dem politischen Druck)



    Es hindert ja trotzdem niemand daran, wenn man im Sprachchat rumflachst - wo kein Richter da kein Henker. Wir als Commnity setzen auf unser eingerichteten Channel die bewährten Regelungen um die es auch schon im TS gibt.


    Und was Du gerade beim Discord als negativ ansiehst (Unanständigkeit, vulgäres, Pornographie, Sex, Beleidigungen, Rechtsextremismus) ist überall im öffentlichen Netz verboten, auch im TS, im TpF-Forum auch und Plattformen Twitter und Co.

    Das es solche Regelungen prinzipiell gibt ist gut. Es gibt nur zwei Unteschiede: Discords Einschränkungen sind einfach lächerlich breit aufgestellt. Vergleicht das mal mit anderen Verhaltensregeln. Zumal dort sehr großer Spielraum für Interpretationen ist. Zudem glaube ich sollte der Communitybetreiber das letzte Wort darüber haben, was in der eigenen Community erlaubt ist und wie zu Verfahren ist. So aber hat Discord das letzte Wort.




    Mein Fazit an euch/dich: mehr Paranoiapillen schlucken und das Inet ausmachen, hilft!

    Was habe ich dir eigentlich getan? Dein ganzer Beitrag beschäftigt sich damit mir zu zeigen wie lächerlich meine Meinung ist und wie gut ich es habe, dass du mir zeigst wie Falsch ich liege. Wenn das ein Trollversuch ist: Glückwunsch ich bin darauf hereingefallen. Wenn nicht: Einmal kurz durchatmen, meinen Beitrag nochmal lesen (isb, den letzten Absatz) und einfach mal akzeptieren das es noch andere Meinungen und Erfahrungen als die deine gibt. Ich bin seit über 20 Jahren im Internet aktiv, berufliche Erfahrung im bereich Webentwicklung, Server und Netzwerkadministartion und zuletzt Security-Audits. Ich bin mir sehr wohl bewusst wie das Internet funktioniert und bewege mich selbstbestimmt im Web.


    Ihr wolltet Feedback, dann ertragt bitte auch, wenn kritisches Feedback kommt: Ihr wollt eine gute, von euch kontrollierte Plattform gegen etwas eintauschen, was sich nicht nur eurer Kontrolle entzieht sondern eure Community auch dazu zwingt einen Dienst zu nutzen der äußerst zweifelhafte Nutzungsbedingungen mitbringt.


    Ich weiß das mein Text sehr einseitig und stellenweise bewusst überzogen ist. Ich finde nur, irgendwo muss einfach mal eine Linie gezogen werden. Sollte es um die Kosten gehen, ich kann Euch bis zu 250 Slots mit einer Uptime von 99.99% anbieten.

    Ich schreibe hier sonst fast nie, bin eher der stille Leser. Aber ich betreue ebenfalls eine Community (wenn längst nicht so groß) inkl. Forum und gut besuchtem TS (bis zu 60 Besucher regelmäßig online), daher möchte ich meine Erfahrung/Meinung zu diesem Thema beitragen.


    Das Problem ist: Bei Discord rechnet niemand damit, dass die Benutzer lesen können, denn kurz gefasst:


    Mann verzichtet auf das Recht der freien Meinungsäußerung, man verschenkt die globalen Rechte an allem, was über Discord gepostet/gesprochen oder geschrieben wird und man stimmt zu das sämtliche Daten gesammelt, verarbeitet und weitergeben werden. Dabei ist es egal ob man sich registriert hat oder nicht.


    Im Detail: Verzicht auf freie Meinungsäußerung


    Die Discord Regeln sind dermaßen streng, dass man sich eigentlich nur noch möglichst neutral über das Wetter unterhalten kann. Denn man darf sich über Discord weder schriftlich noch mündlich über Themen unterhalten die: „Obszön, unanständig, vulgär, pornographisch, sexuell oder anderweitig anstößig“ sind oder andere Personen „verleumdet, verspottet, bedroht, einschüchtert oder belästigt“. Natürlich sind da sinnvolle Einschränkungen dabei, aber im ganzen ist das völlig überzogen: Ich darf im Discord nicht mehr mit Freunden flachsen, mich über unfähig Politiker lustig machen oder gar mit meinem Vater sprechen der eine Schwäche für … sagen wir zweideutige Witze hat.


    Wer soll darüber richten was Obszön, vulgär oder unanständig ist? Wenn ich vom letztem CSD erzähle, wird dies bestimmt irgendwer für Obszön halten und kann mich melden. Erzählt mir ein Freund vom letztem BvB Spiel, soll ich ihn dann melden, da ich Fußball vulgär finde?


    Diese extremen Einschränkungen bzw. Regelungen müssen freilich nicht zur Anwendung kommen, aber was ist wenn? Du erzählst einen Witz über Donald Trump: Dafür kannst du bereits gebannt werden, es muss dir nur mal jemand einen schlechten Tag haben.


    Im Detail: Vergabe sämtlicher Rechte an allem was über Discord läuft


    Discord darf alles, was ich auf deren Server mache für das eigene Geschäft zu nutzen. Meine Ideen, meine Gespräche, Zeichnungen/Bilder die ich hochlande, Textentwürfe, selbst ein gesungenes Liebesgedicht: Alles kann aus- und verwertet werden.


    Dazu ist eigentlich nichts zu sagen. Außer vielleicht das Auswerten der laufenden Gespräche. Grundsätzlich sind Gespräche durch "Verletzung der Vertraulichkeit des Wortes " in einige Staaten geschützt, in den USA jedoch nicht zwingend. Discord sichert sich, wenn auch etwas verschleiert, das Recht alle Daten, also auch Sprachdaten, zu speichern und zu verarbeiten. Zudem wird noch explizit darauf hingewiesen, dass die gesammelten Daten unter US Recht stehen.


    Im Detail: Daten sammeln und auswerten.


    Wie im vorherigen Abschnitt schon angedeutet schließt das Sprachdaten nicht aus. Europäisches oder gar deutsches Recht kommt hier nicht zur Anwendung. Denn Discord sammelt alle Daten, sichert sich die Rechte daran und aggregiert diese. Das gilt auch für Informationen die Discord über verbundene Servcies (Twitch/ Facebook) erhält. Diese Daten kann Discord an Werbepartner, Werbeagenten, Geschäftspartner und „andere Dritte“ weitergeben.


    „Do Not Track“ wird seitens Discord ignoriert.


    Ein harmloses Beispiel: Discord kann eine Statistik veröffentlichen: „Wie oft Chatten 15 Jährige und wie viele Facebook Freunde haben diese durchschnittlich“. Weniger harmlos wäre der Verkauf der Benutzerdaten an Pfeizer wenn in einem der Gespräche Impotenz thematisiert würde.


    Im Detail: "Anonymität" ohne Registrierung


    "Kann mir egal sein, ich nutze Discord nur im Browser und ohne Login" Es mag sein, dass Discord vorerst nicht an Daten wie deine Emailadresse erhält. Trotzdem ist es ein Irrtum, dass man dadurch anonym bleibt. Es werden trotzdem fleißig alle Daten über dich gesammelt. Von IP-Adresse über Geräte-ID bis hin zum "Cookie" alles das nutzt Discord.
    "Dann halt ohne Cookies und über Proxy/VPN"
    Darüber hinaus kommt WebRTC zum Einsatz (ist technisch Notwendig) welches vom WebRTCLeak betroffen ist und wahrscheinlich verwendet man auch Browserfingerprinting, welches mit einer Zuverlässigkeit von 99,24 Prozent Benutzer eindeutig identifizieren kann (Ist vor allem als Layer-7 DDoS Schutzmaßnahme State-of-the-Art). Egal ob Cookie oder Proxy ein eindeutiges Profil wird trotzdem erstellt.


    Noch einmal zusammengefasst:

    • Du schenkst Discord die Rechte über alles was du über diesen Dienst je kommuniziert hast!
    • ALLE Daten die du jemals Discord zur Verfügung gestellt hast, also Profil, verknüpfte Accounts -Freundeslisten, alle Dateien, alle (Voice-) Chats, darf Discord auswerten, verarbeiten und weitergeben.
    • Wenn du deinen Discord Account nicht verlieren willst, musst du extrem strenge und schwammige Vorschriften einhalten: Politische Diskussionen, die meisten Witze, freundschaftliche Beleidigungen, selbst das Beschimpfen „des ver*mten Hackers der gerade deine Lieblingsseite Ddos'd“ -> VERBOTEN!
    • Die Möglichkeit den Service ohne Account zu nutzen spielt keine Rolle, da jeder Benutzer egal ob eingeloggt oder nicht, eindeutig identifiziert werden kann


    Relevante Auszüge aus der ToS/ Privacy Policy:


    Any data, text, graphics, photographs and their selection and arrangement, and any other materials uploaded to the Service by you is “Your Data.”[...]By uploading, distributing, transmitting or otherwise using Your Data with the Services, you grant to us a nonexclusive, transferable, royalty-free, sublicensable, and worldwide license to use Your Data, subject to the Company’s Privacy Policy.
    When you interact with us through the Services, we receive and store certain information such as an IP address, device ID, and your activities within the Services. 
    [...] we may conduct research on our customer demographics, interests and behavior based on the information provided to us. [...] and we may share this aggregate data with our affiliates, agents and business partners.
    Information we collect may include but not be limited to username, email address, and any messages, images or other content you send via the chat feature.
    No matter where you are located, you consent to the processing and transferring of your information in and to the U.S. and other countries. The laws of the U.S. and other countries governing data collection and use may not be as comprehensive or protective as the laws of the country where you live.
    As an example, you agree not to use the Service in order to: -post, upload, transmit or otherwise disseminate information that is obscene, indecent, vulgar, pornographic, sexual or otherwise objectionable; -defame, libel, ridicule, mock, stalk, threaten, harass, intimidate or abuse anyone;
    Our Services currently do not respond to “Do Not Track” (DNT) signals 


    Unser Fazit
    In unserem Leitungsteam haben wir unter anderen auch Personen die Wert auf die Kontrolle über Ihre persönliche Daten legen, aber auch genau das Gegenteil findet sich bei uns. Nachdem wir im Team über die Bedingungen Gesprochen haben, waren wir uns schnell einig. Niemand nutzt seitdem Discord. Übrigens finden sich noch andere "Klöpse" in den ToS, gerade was das Thema "kostenlos" betrifft. Bis auf die Kernfeatures, kann alles monetisiert werden. Nur werden die Kernfeatures nirgendwo definiert. Sehr geschickt.


    P.S. Ja das ist einseitig und voreingenommen. Meinetwegen Soll jeder der will Discord nutzen, aber kostenlos ist das auf keinen Fall. Ich finde der Preis ist sehr hoch, viel zu hoch! Jeder der Discord nutzt, verwirkt in meinen Augen das Recht sich über Facebook, Google & Co. zu beschweren, denn Dsicord ist wie Facebook auf Crack.

    Ich hab das ganze Wochenende mit der Karte verbracht. Ich finde sie super!


    Allerdings sind mir die Höhenunterschiede zu groß. Solche gewaltige Berge habe ich nicht in Erinnerung und ich habe in vielen Städten gelebt/ gearbeitet oder habe Verwandte: Bonn, Köln, Düsseldorf, Essen, Münster, Emden, Bielefeld, Hannover, Göttingen, Leipzig. Und nirgendwo ist die Landschaft derart extrem wie auf der karte.


    Gerade Bonn, mein Geburtsort ist bei weitem nicht so Alpin. Das Siebengebirge mit max. 460m sieht auf der Karte wie die Zugspitze aus. Das es Westlich von Bonn solch gewaltige Erhebungen gibt, ist mir auch neu. Auch zwischen Bonn und Köln gibt es auf der Karte derart gewaltige Höhenunterschiede, das der Bau Flughafen Köln/Bonn unmöglich ist. In der Realität: Alles plattes Land.


    Auch die Höhenunterschiede innerhalb de Städte ist teilweise so groß das an eine S-Bahn nicht zu denken ist. Manchmal scheitert gar der Bau großer Bahnhöfe. Das Bergische Land ist ebenfalls viel zu massiv ausgefallen, vom Ruhrgebiet nach Siegen gibt es keine mehrfachen Serpentienen.


    Ich glaube die Höhenkarte passt nicht zum Maßstab. Kann man das irgendwie etwas "weicher machen" oder die Höhenmeter auf ein drittel reduzieren ohne das man die ansonsten Wunderschöne Landschaft kaputt macht? Ich möchte meine S-Bahn von Bonn über Brühl nach Köln ungern unterirdisch einen großen Bogen fahren lassen, weil die Steigung zu groß ist.


    Ansonsten weiter so: Super Karte!

    Hallo erstmal!


    Gestattet, dass ich mich kurz vorstelle: Ich lese hier nun seit einem Jahr mit und bin wirklich begeistert von dem Spiel. Als großer Fan Railroad Tycoon sowie Transport Tycoon Fan, ist Train Fever wie für mich geschaffen.


    Das Problem der Monatsruckler nimmt mir früher oder später immer den Spielspaß und kleine Karten bieten mir ehrlich gesagt zu wenig Möglichkeiten. Vom Spielertyp würde ich mich dann auch eher als "Großbauer" statt als Schönbauer" beschreiben, auch wenn ich irgendwann anfange alte Strecken zu verschönern, was ich dann aber aufgrund der ständigen Zwangspausen entnervt lasse.


    Im Forum wird dieses Thema immer wieder mal aufgegriffen und scheint die Lager zu spalten. Die einen sehen dies als Spielstopper und damit als Fehler anderen hingegen ist das egal und verteidigen das ansonsten großartige Spiel. So auch wieder vor einigen Beiträgen mit der Aufforderung statt zu meckern Vorschläge zur Verbesserung zu machen.


    Eines Vorweg: mein "Wissen" über die Train Fever internen Berechnungen basiert auf den Informationen im Forum: Am Monatsende wird das Städtewachstum berechnet. Neue und bereits bestehende Agenten kalkulieren dann auch neue Wege zu möglichen Zielorten. Dies ist in einem extra Thread ausgelagert. Ist dieser Thread mit den Berechnungen zum Monatsende nicht fertig, wartet das Spiel so lange.


    Meine Annahme:
    Das generieren neuer Agenten ist rechnerisch kein Problem. Ich vermute die verschiedenen Zielorte der Agenten (Arbeit, Freizeit) werden willkürlich festgelegt, werden dabei nur durch eine vorher berechnete Konstante auf innerhalb eines bestimmten Radius um den Wohnort beschränkt. Das ist eine sehr einfache Berechnung und hinreichend realistisch wenn man einen Algorithmus wählt, der eine Gaußsche Normalverteilung sicherstellt.


    Nach dem generieren des Agenten und möglicher Ziele bleibt nun die Wegfindung, welche auch für alle bereits bestehenden Agenten neu ausgeführt wird. Hier nehme ich an, dass Urban Games eine A* Implementierung mit zusätzlichen Kostenfaktoren für Umstiegszeiten verwendet. Sind die Kosten (also die Zeit) höher als ein Vorgabewert tritt der Agent die Reise nicht an. Ist er zu Fuß oder mit einem eigenem PKW schneller, nutzt er keine ÖPNV.


    Meine Optimierungsvorschläge


    1. Algorithmus Optimierung
    Den A* Algorithmus könnte man mit einer Binären Heap Optimieren. Die Implementierung ist sauber möglich, da man "nur" die Vergleichsoperation anpassen muss und die Navigationsinformationen statt in einer Liste in einem Heap gespeichert werden. Hier ist eine Verbesserung der Performance um Faktor 4 möglich.


    Hat man sich in die Theorie dahinter eingearbeitet (ca. 20 min) geht diese Umstellung schnell von der Hand.


    2. Mehrkernoptimierung
    Nachdem die neuen Agenten generiert wurden, können alle Agenten auf mehrere Listen verteilt werden. Dabei stehen neue Agenten immer auf Liste 1, alle weiteren auf Liste 1...n.
    Das Spiel prüft zu Start wie viele Kerne zur Verfügung stehen und erstellt je für eine Liste einen eigenen Thread, die Anzahl paralleler Threads sollte aber auf CPU Kerne-2 limitiert werden.


    Beispiel. Eine 8 Kern CPU (bzw. 4 kern mit HT) erlaubt 6 Berchnungsthreads. Das heißt für eine Karte mit 5900 Einwohnern und einem monatlichem Wachstum von 100 Einwohnern, dass alle neuen Einwohner in Liste 1 kommen, der Rest wird gleichmäßig verteilt. Somit wird die Navigation parallel auf 6 Kernen ausgeführt.*


    Das Aufteilen der Agenten in Listen sollte kein großes Problem sein, da man nach Abschluss der Berechnung die Listen wieder zusammenführen kann. Dies könnte der Berechnungsthread 1 übernehmen und dem restlichem Spiel die Daten in bekannter Form zurück übergeben.
    Nachteil: Mit jedem parallelem Thread erhöht sich der benötigte Arbeitsspeicher, hier wäre eine eine einstellbare Limitierung empfehlenswert.


    3. Aufteilen der Berechnungen auf verschiedene Monate
    Alle Agenten werden einer Liste zugeteilt. Stellt das Spiel fest, dass es zu Monatsrucklern (>1 Sek.) kommt, dann wird die die Anzahl an Listen erhöht. Neue Agenten sind immer auf Liste 1, werden dann aber gleichmäßig auf Liste 2..n verteilt. Die Agenten verbleiben dauerhaft auf den Listen. Treten Monatsruckler erneut auf, wird die Anzahl an Listen wiederum erhöht. Die neuen Agenten werden bei der nächsten Berechnung immer an die letzte Liste angehängt. Es wird bei der Monatsberechnung nur noch eine Liste abgearbeitet. Man kann die Anzahl an Liste auf 4 begrenzten um sicherzustellen das jeder Agent wenigstens alle 4 Monate den Weg neu berechnet. Dann werden die Listen einfach länger. Ist das Wachstum größer als der Puffer, wird die Liste ebenfalls verlängert.


    Beispiel ohne Mehrkernoptimierung, Karte mit 5900 Einwohnern, Wachstum +100. Das Spiel hat bei der letzten Monatsabrechnung mehr als 1 Sekunde auf der Ergebnis gewartet: Das Spiel führt nun eine Liste ein und begrenzt sie auf 5000 Plätze. 10% sind davon immer für neue Agenten reserviert, d.h. den existierenden Agenten stehen 4500 Plätze zur Verfügung. Ist eine Liste voll, wird eine weitere erstellt. In dem Beispiel haben wir Nun Liste 1: 1x 4500 + 100 und Liste 2: 1x 1400 + 100.



    Wie bei der Mehrkernoptimierung sollte das Aufteilen der Agenten auf Listen kein großes Problem darstellen, lediglich der Umstand, dass sich der Agent dauerhaft merken muss auf welcher Liste er steht macht eine weitere Anpassung nötig. Je nach verwendeter Datenstruktur, kann die Aufteilung auch über Indexranges erfolgen. Dies stellt die einfachste Optimierungsmöglichkeit dar. Zwar sinkt mit der Zeit die Genauigkeit der Simulation, aber macht sie nicht unrealistisch, denn Menschen sind träge, und nicht jeder überlegt sich jeden Monat wie er noch schneller zur Arbeit kommen kann :)


    Abschließende Gedanken
    Ich bin bei den Optimierungsüberlegung davon ausgegangen, das teile der Spielmechanik so funktionieren wie ich sie implementiert hätte, das muss natürlich nicht richtig sein, dementsprechend kann es natürlich sein, dass meine Vorschläge nicht funktionieren würden, bzw nicht so leicht zu implementieren wären. Ich kenne das Problem komplexer Programme und bin ein Anhänger des "never touch a running system" Paradigmas, dennoch hoffe ich meine Vorschläge finden halbwegs anklang.


    Die einfachste Implementierung wäre die Heap Optimierung, hängt aber ganz davon ab wie die Berechnung tatsächlich erfolgt. Ich gehe davon aus, dass man die Heap Optimierung aber wahrscheinlich ohnehin schon implementiert hat oder diese nicht möglich ist.
    Das Aufteilen der Berechnung (Vorschlag 3) sollte auch relativ leicht zu implementieren sein, bringt aber leichte nachteile bei der Genauigkeit. Vor Lösung 2 habe ich den meisten Respekt weil Multithreading Programmierung meine persönlich Hölle ist. Allerdings in Kombination mit Vorschlag 3 das Monatsrucklerproblem am besten bekämpft.


    Ich entschuldige mich an dieser Stelle für etwaige Ungenauigkeiten, aber der Beitrag ist lang genug geworden.