Beiträge von eis_os

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


    Spontan: Zusätzlich zu den genannten Optionen:


    1. Quellcode freigeben (Ich hab einfach zu viele Ideen, *träum*) oder eine API zu besseren Erweiterung (sprich wirklich neue Funktionen für das Spiel)
    2. Fahrzeug erneuern
    3. Frei platzierbare Objekt API
    4. Die Möglichkeit Stützwände oder ähnliches zu bauen, damit man auch Tunnel und oder Brücken in eine Stadt bauen kann ohne alle Gebäude zu entfernen.
    5. Overlay Filesystem damit man Addons besser installieren kann bzw. eine Script API für mehr Einfluss.
    6. Erweiterung der API zum Erstellen von Depots und Bus und LKW Haltestellen um mehrere Straßenanbindungen.
    7. Anständiges API damit man Brückenpfeiler* wirklich entfernen kann und/oder die Abstände zu beeinflussen...
    8. Änderungen der Engine: Das entfernen von Objekten aus dem Spiel, Spielstand ermöglichen.


    * Auch wenn die Pfeiler keine Mesh-Kollisionen haben, reserviert TF den Platz.

    Nur das DirectX auch keine gute API ist oder war, auch Multi-Threading Probleme machte. Die meisten großen Engines haben mehrere Render Pfade, also OpenGL (ES), DirectX 9 / 11 usw.
    DirectX läuft natürlich auf einem Microsoft System besser und hat aber auch schon mehrmals die API gebrochen. (Vista hat schon Beispiel bei OpenGL Nutzung den Desktop wieder per CPU gerendert und Nettigkeiten, das war für OpenGL gar nicht gut)


    Grafiktreiber sind immer eine Katastrophe, warum gibt es so viele Grafiktreiber "Optimierungen" für die verbreiteten Spiele nach dem Erscheinen des Spiels?
    Da läuft es auch nicht rund, nur Train Fever ist eben zu unbedeutend das sich eine GPU Hersteller kümmert.
    Zum Glück hat die Verbreitung von Smart Phones, WebGL, OpenGL ES dazu geführt, dass sich Treiber Entwickler mehr um OpenGL kümmern und auch MS sich nicht total verschließen kann.


    GPU Umschaltungen sind immer ein Krampf.
    Da wird eine DLL injiziert in dein Spiel und es während der Laufzeit verändert damit es überhaupt geht.


    Den weder OpenGL noch DirectX sind dafür ausgelegt, das zwischendurch die Render-Architektur geändert wird.
    Bei Browsern wird fast immer die CPU interne GPU genutzt, da sonst die Akkulaufzeit leidet bzw. das Umschalten scheitert.


    Man hat sich eben an die Baustellen gewöhnt...

    Das mit nicht entfernbaren Mods habe ich schon mit Mikael von Urban Games diskutiert, vor dem Patch zur Savegame Komprimierung. Daraus wird scheinbar aber nie etwas. ;(
    Der fehlenden Transparenz bezüglich Lua hat ja dieser Patch etwas eingedämmt, nun crasht TF nicht mehr kommentarlos, sondern kann auch bei einfachen Sachen eine Fehlermeldung geben,
    aber wirklich toll ist die Modding Schnittstelle immer noch nicht. Für meine Ideen war und ist sie immer unzureichend.
    Das die Engine mit allen C++ Optimierungen compiliert ist, ist zwar für die Performance gut, aber macht ein externes eingreifen in die exe sehr sehr schwer.
    Und mit ihrem Plan TF2 herauszubringen werden Sie sich noch weniger in die Karten schauen lassen wollen.


    Urban Games möchte sich soweit mir bekannt ist primär um Bug/Crash Fixing kümmern und um notwendige Features.


    PS: Ich sichere mir die meisten alten Builds vor einem Update :)

    Zum Desktop PC:
    Mit dedizierte VGA Karte sollte es keine Probleme geben, es dürfen keine MS Treiber sein, die können kein OpenGL. Lucid oder ähnliche Lösung meiden und deinstallieren! Monitor an GPU,
    wenn möglich in EFI/Bios interne Grafik ganz abschalten, dann gibt es in der Systemsteuerung keinen Eintrag mehr für die CPU Grafik.


    Notebooks:
    Sowohl NV Optimus und ATI/AMD PowerPlay haben schon immer Probleme gemacht.
    Hierbei muss der Software Basis aus einem kompletten Paket bestehen, dh. alle Treiber des NB Herstellers. /Chipsatz, Intel, NV) Und hierbei gilt, diese Lösungen sind nicht mit allen Sachen getestet. Gerade OpenGL und 64Bit ist heikel. Dafür werden dann teurere Lösungen mit NV Quadro oder AMD FirePro im Profi Umfeld genutzt, mit Zertifizierung des Gesamt Systems.


    Allgemein:
    GPU Umschalttechniken machen öfters Probleme, zurzeit hat scheinbar Apple sogar mit einem System aus einen Guss Probleme.


    Diese Probleme gibt es bei Unity Spielen, da kann man bei CIM2 bleiben oder auch mit CIM1.
    Studios. Und auch bei vielen anderen...


    MultiThreading und auf Kerne verteilen ist schwer.
    Erst mal muss man eine Aufgabe haben die parallel Abgearbeitet werden kann,
    man kann zwar seinen Code mit Locks zu müllen, dann wird es aber noch langsamer.


    Und ein Msg basiertes System ist auch nicht das Allheilmittel.
    Lock Free Programmierung ist schwer. Wer das wirklich verstehen will, was da noch so alles dran hängt. http://preshing.com/20120612/a…to-lock-free-programming/


    Oder mal einfach nach Linux BKL oder Python GIL suchen, Ruby hat das Problem auch. C# muss den GC betreiben, dabei hält es alles an. Und bei Golang kann man auch schön sehen, das es manchmal sogar schlechter ist mehr CPU Kerne zu nutzen, wenn der Code nicht parallelisiert ausgeführt werden kann oder sollte. Deswegen sterben Insellösungen oder schwer programmierbare Systeme wie Cell oder Intel Itanium aus. Das ist zwar auf dem Papier alles schön, in der Praxis aber kaum zu lösen.

    Eine Programmiersprache ist nur ein Werkzeug, und die meisten Spiele sind in C++ geschrieben, wie auch TrainFever. Deine Schlussfolgerung bezüglich der Programmiersprache ist daher falsch. Es war schon immer ein Unterschied ob man ein paar GB an statischen Daten für eine Spielwelt auf den Bildschirm zaubern muss oder eben tausend individuelle Objekte. Das sieht man auch schön an Mantle, DirectX 12, OpenGL Next. Der Overhead der Anweisung ein Objekt darzustellen ist höher als das Objekt dann wirklich zu zeichnen.
    Aber eine Parallelisierung von Aufgaben war und bleibt immer schwierig. Ob die Nutzung einer vorhandenen Engine die besseren Wahl gewesen wäre sei dahin gestellt, meistens finde ich diese Spiele eher ein Rückschritt.
    (Im Sinne von Spielspaß, nicht im Sinne von Technik)


    Da TF sehr viel FileIO hervorruft (Eine Art Swapping der Texturen) sollten alle Hintergrunddienste abgeschaltet werden die Dateioperationen überwachen.

    Es gab scheinbar ein Lastproblem auf dem Server, theoretisch und praktisch machbar die Webdisk auszulesen. (Bis auf RAR5 Format und dann als Ausgabe im JSON Format)


    Bis auf weiteres lasse ich es aber Ruhen, bis ich ein paar Cache Routinen neu geschrieben habe und dazu habe ich gerade keinen Antrieb.

    Nunja, TF benutzt OpenGL und dann auch noch 64 bit.
    Eine Ferndiagnose ist immer schwierig.


    Als erstes mal das Steam Overlay abschalten, dann Train Fever,exe direkt starten, dabei per Rechten Maustaste über der exe, Nvidia als GPU nutzen bzw. für die Exe Datei einen Eintrag im Treiber erstellen für volle Leistung.


    Die NV GPU hat bei neueren Laptops keine direkte Verbindung zum Display, d.h. es erstellt ein Bild, und die Intel GPU muss das dann ausgeben, deswegen ist das abschalten des Treiber keine gute Idee.

    Die ID Vergabe hat keiner geregelt, du hast ja für deinen Programm Namen auch keinen gefragt oder? Die ID liegt in einer Datei/Dateinamen im Zip Paket.
    Mein CIM1 ModManager brauchte eine <id>.modinfo in der GS Datei, dein ModManager braucht eine ini. Also warum keine eindeutige ID und Version in die Ini und gut ist?


    Mediziner und das Wiki Repository auf DropBox waren als "vorauswahl" in meinem ModManger schon eingebaut und die wurden per Texteditor selbst erstellt.


    Auf dem Server:
    Öffne jeden neuen (öffentlichen!) Download die Zip/Rar Datei, schaue ob es eine INI gibt, wenn ja, lade die INI und finde die Metadaten,
    Schaue ob eine ID schon von einem anderen Nutzer benutzt wurde, wenn ja, ignoriere die Datei und melde es bei den Admins :P
    Trage den neuen Download in eine Datenbank inklusive Download Link und erstelle eine neue öffentliche repo Datei mit allen Downloads.


    In der INI:
    Die ID ist eine einmalige Angelegenheit, die Versionsnummer muss vor Release geändert werden, also sehr wenige Metadaten.


    id=beton_bridge_eis_os
    version=1.0


    Nun kann TFMM Zips auslesen und die INI Daten zur Versionsüberprüfung nutzen.


    Stepke:
    Das liegt im Betreiber der Filebase :P Die Repo Dateien sind ja kein Hexenwerk und wie gesagt sind für jeden offen...

    Hmm, sorry ich verstehe eure Probleme nicht, Datenbank Auth in der Exe? Wie bitte? Auf dem Server gibt es eine Repository bzw. Meta Daten zum Abholen, wie es jeder Paket Manager auch macht, dafür braucht es einen http Request und auf dem Server eine Software um die Metadaten zu erstellen, wenn man es nicht händisch macht.


    Eine eindeutige ID (vom Ersteller festgelegt) + Versionsnummer reicht in fast allen Lebenslagen aus. Wer sich nicht dran hält und fremde IDs nutzt fliegt vom Server.


    Das hat seit TTDPatch Zeiten funktioniert. (GRFID)


    Mein CIM1 ModManager hat das alles in GS(CIM) Script gemacht (außer die Datei herunterzuladen und funktioniert auf Win32/OSX/Linux):
    http://cim.bytetransfer.de/mod…/specs/mmfileformats.html


    Hierbei war ein dezentrales System, mit mehrere Quellen im Vordergrund - sogar das Hosting auf einer DropBox Quelle war dadurch möglich.


    Für meine eigenen Mods, hat ein PHP Script die .modinfos zusammen geklebt und die Repo Datei erstellt.


    .edit-
    Zusammengefasst:
    Ein Mod/Addon Paket (Zip) bekommt vom Ersteller eine eindeutige ID, und eine Versionsnummer, dies liegt dem Paket bei.


    Es gibt ein Update für ein lokales Paket, wenn die Paketquelle eine neue Datei mit der selben ID aber einer größeren Versionsnummer bereitstellt.


    Ein Update deinstalliert Paket/ID mit alter Version, installiert die neue Version.


    Eine neue Version darf sich nicht so ändern das ein Spielstand unbrauchbar wird, sonst muss es eine neue ModID erhalten.


    PS: Die Board Download ID ist nicht unbedingt statisch, da Sie im Einfluss der Board Software liegt und mit einem Update, Server Umzug oder ähnliches theoretisch anders sein kann.

    TrainFever benutzt eigentlich Boost mersenne_twister_engine für die hauptsächlichen Sachen. Also ein Pseudo Random Generator. Alles andere wäre für eine Eingabe im Spiel nicht nutzbar. Wenn man /dev/random oder eine andere Entropie Quelle bei der Berechnung nimmt, brauch man keinen Start Seed mehr. Man hätte nie die selbe Karte bei gleichem Wert.


    Das ist dann auch der fundamentale Unterschied zwischen einen Zufallszahlen Generator und einer Entropie Quelle die einem Zufällige Zahlen liefert, tut sie es nicht oder nur schlecht, ist dein Crypto kaputt. Wir wollen aber ja das gleiche Ergebnis auf allen Systemen, also System APIs nutzt man nicht...



    Aber die meisten Systeme sind nicht perfekt.



    Klassischen Beispiel:
    Ergebnis wird durch einer Betriebssystem Funktion bestimmt: Die Reihenfolge der Einträge aus einem Verzeichnis sind nicht vom Betriebssystem garantiert, und können abweichen.


    Es kann sein das durch äußeren Einflüsse sich zum Beispiel die Id Reihenfolge der Industrien ändern kann.
    Leider kann man dies wegen der Savegame Komprimierung nicht mehr testen. (und die neuen Builds haben leider keine Debug Daten mehr)


    Sobald eine Mod-Datei geladen wird, sich das Spiel ändert (Build), wird sich das End-Ergebnis natürlich ändern.


    Man braucht auch nur mal irgendwo eine Gleitkomma Zahl zu nutzen und eine andere "Optimierung" im Compiler auswählen.
    Darüber hinaus, sobald man mehrere Threads nutzt, kann man keine Vorhersage mehr treffen, dann wird es erst recht spaßig.

    Hallo


    Ich muss mich mal kurz einklinken.
    Hier gibt es ein Missverständnis zum Thema Texturen und Bild Formaten


    Eine Textur wird per Code geladen, das Ausgangsformat ist bis eine Pre-Komprimierung eigentlich egal, man schiebt zu OpenGL komprimierte bzw. unkomprimierte Pixel Daten. Und nein keine RLE Daten, sondern S3TC ...


    Train Fever sollte selber komprimierte Pixel Daten erstellen für die Grafikkarte wenn es den Textur Cache nutzt. D.h. wenn Ihr die Details runter stellt sollte es gehen. (Das dauert dann beim ersten starten länger)
    Wenn die Rechenleistung der GPU fehlt, HDR abschalten, wenn der VGA Ram nicht reicht, Texturen komprimieren...


    MOD Autoren:
    Das was ich schon bei CIM1 gesagt habe, macht die Texturen (Pixel Größe) so klein wie möglich und immer schön ein vielfaches von 2, also 128x128, 256x256, manche Treiber reagieren sehr komisch.

    Hallo


    Früher war es einfacher?
    Das kommt sehr auf den Umfang an. Zumindest ist der Wissensaustausch über ein Spiel viel einfacher geworden.

    Natürlich ist der Umfang eines 3D Modells beachtlich, eine schönes Spriteset hat aber auch lange gebraucht. Der Unterschied ist vielmehr das man früher schneller ein Zwischenergebnis hatte.


    Zur Mod Fähigkeit:
    Was mich viel mehr nervt, das Spiele als "mod" freundlich hingestellt werden, die es gar nicht oder nur sehr rudimentär sind.
    Und obwohl ich mit TF sehr viel Spaß habe, zähle ich es auch dazu. Das Gameplay (abgesehen von Industrie) ist doch sehr fixiert.
    Eine komplette Scriptsprache nur um Daten einzulesen ist doch Verschwendung. Also im Endeffekt, nur (3D) Content Hersteller für lau zu werden erfüllt mich nicht, und bin ich auch nicht gut drin.


    Zur Motivation:
    Mich stört etwas, oder eine Funktion im Spiel hätte ich gerne. Dabei ist der Weg, d.h. wie bekomme ich es in das Spiel der eigentliche Mehrwert und wenn es dann auch funktioniert. Anderseits möchte ich ein funktionierendes "Produkt" herstellen,
    das weder Spielstände kaputt macht, noch Abstürze verursacht.



    Zum Thema Wirtschaft:


    Ich möchte ja auch weiterhin Spiele kaufen können,
    und daher die Geschäftsgrundlage nicht entziehen. Daraus resultiert bei mir eine Gewisse Grundhaltung, das ich das Geschäftsmodell nicht sabotieren möchte und gewisse Informationen und Tools zurückhalten muss. (DLC System Problem, alle Daten sind schon vorhanden, aber werden durch ein unsinniges DRM System geschützt, Unity Spiel, ich nenne mal lieber keinen Namen)


    Das immer weniger Vollpreis-Titel hergestellt werden ist daher schade, es gibt nicht mehr den klassischen Fall, das ein Spiel wirklich fertig ist.


    Ein Allgemeines Problem das zu viele Menschen zwar gerne alles haben wollen, am Liebsten für Lau, aber eben selber immer weniger dafür bereit sind etwas zu leisten. (In welcher Form auch immer und wenn es nur das Lesen einer Readme Datei ist oder eines Handbuchs)