Beiträge von Freahk

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


    Ich rede nicht über Script. Ich rede von Kapselung, wie sie in so ziemlich jedem heutzutake aktuellen Programmierparadigma existiert.Stellst du nach Außen keine Schnittstelle zur Verfügung, um die Variable zu verändern, dann kannst du die von außen auch nicht verändern.
    In den Meisten Fällen kann man dann ganz einfach diese Schnittstelle zur Außenwelt einbauen aber manchmal geht das eben nicht so einfach da, um nur ein Beispiel zu nennen, der Code in dem diese benötigte Schnittstelle nicht existiert eine Library ist, die man selbst nicht geschrieben hat und auch nicht verändern kann.


    Aber ich will das jetzt hier nicht zu einer Diskussion in die falsche Richtung lenken und werde jetzt zu diesem Thema nichts mehr schreiben.
    Meine Meinung dazu kennt ihr jetzt jedenfalls.

    Uund wer sagt dir, dass du von Außen überhaupt Zugriff an einer geeigneten Stelle Zugriff auf den Zug hast, um diese Variable, die btw. auch eine Konstane sein könnte, was zugegebenermaßen nicht schwer wäre diese zu einer Var zu machen, hast?
    Wer weiß vielleicht werden die Züge auch einfach nur initialisiert und an eine Zugsteuerungslgik übergeben. Vielleicht ist diese sogar eine externe Lib dann wird es besonder lustig diese mal eben so abzuändern, dass sie weiß in welche Richtung ein Zug fährt und anhanddessen die Geschwindigkeit ggf. drosselt.
    Gut möglich ist es bestimmt. Die Frage ist blos wie einfach und ob das ganze dann vielleicht zu unglaublich hässlischem, fehleranfälligen Code wird.


    Nun gut, Urban Games wird diesen Vorschlag wahrscheinlich lesen und, wenn sie den Vorschlag auch gut finden, sich etwas dazu überlegen.

    Sieht für mich auch erstmal einfach aus.
    Ob es wirklich einfach ist oder nicht, hängt aber ganz stark davon ab, wie maximalgeschwindigkeiten implementiert sind.
    Ist es im aktuellen Code überhaupt möglich oder ist der Code zumindest ohne riesen Aufwand dahingehend veränderbar, dass die maximale Geschwindigkeit eines Zuges veränderbar ist, nachdem der Zug erzeugt wurde?
    Denn genau das müsste dem Programmteil der die Züge bewegt bei jedem wenden von Zügen ohne Steuerwagen in irgend einer Art mitgeteilt werden (entweder dieser Teil kennt beide Geschwindigkeiten und entscheidet anhand der Fahrtrichtung oder dieser weiß nur wie man Züge bewegt und ein anderer Teil müsste diesem das explizit mitteilen oder -viele weitere Möglichkeiten-.


    Prinzipiell sehe ich da jetzt erstmal kein Problem drin aber zu sagen, dass etwas einfach umsetzbar ist, ohne den code zu kennen finde ich ziemlich kritisch.


    Zu 2.: Steuerwagen müssten dann aber auf jeden Fall erstmal als solche definiert sein. In welcher Art auch immer man diese Information hinterlegen möchte, da gibt es wieder viele Möglichkeiten.


    Die Idee an sicht finde ich aber super, so lange diese abschaltbar bleibt und hinten nicht zwangsläufig ein Steuerwagen hängen muss, sondern auch eine weitere Lok OK ist, im Endeffekt also jede Lok einfach ein angetriebener Steuerwagen ist.

    Gut, soweit zum Faktor des Motors. Was mir noch einfallen würde ist Kapazität pro Länge. Siehe eben Doppelstock vs normal (KISS vs FLIRT bei mir eben aktuell ). Wie könnte sich das auswirken? Mehr Kaufpreis? Allerdings sollte der Faktor mMn recht moderat sein.

    Das hatte ich bei dem anderen balancing Mod glaube ich schonmal angemerkt. Aktuell scheint dieser Faktor nicht berücksichtigt zu werden, was dazu führt, dass besonders im späteren Spielverlauf fast nurnoch Doppelstock Züge bzw. allgemein Züge mit einer hohen Kapazitätsdichte (ich nenne das jetzt einfach mal so) auf meinen Strecken fahren. Auch, wenn das bei der Strecke nicht unbedingt nötig wäre aber es sorgt schonmal vorsorglich dafür, dass auf der Strecke die Personenkilometer pro Stunde maximiert werden können, wenn es denn mal nötig sein wird die Strecke bis an die Grenze auszufahren.


    Das liegt imho daran, dass sich im Spielverlauf die Prioritäten nach denen man Züge auswählt ändern:
    Am Anfang hat man recht wenige Passagiere zu befördern und es ist für den Spieler im Endeffekt nur ein Faktor wichtig: viele Passagiere für geringe Anschaffungskosten. Also viele Personenkilometer pro Stunde und Anschaffungskosten.
    Es muss also Personen * Geschwindigkeit / Anschaffungskosten möglichst groß sein.
    Wenn man dann ein wenig Geld verdient hat und so langsam aber stetig die Billanz in die höhe steigt, werden die Anschaffungskosten immer unwichtiger und es wird immer wichtiger möglichst viele Personen für geringe Betriebskosten fahren zu können.
    Man wählt also Fahrzeuge aus bei denen Personen * Geschwindigkeit / Betriebskosten möglichst groß ist.
    Wenn dann im späteren Spielverlauf die Strecken langsam aber sicher voller werden und so langsam an die Kapazitätsgrenze kommen, geht die Gewichtung immer mehr in Richtung viele Personenkilometer pro Zuglänge.
    Der Kostenfaktor verschwindet zwar nicht, rückt aber immer weiter in den Hintergrund, so lange die Züge trotzdem wirtschaftlich bleiben.
    Man versucht also um dem steigenden Passagieraufkommen nachzukommen Züge auszuwählen bei denen Personen * Geschwindigkeit / Zuglänge möglichst groß ist.



    So weit ich das gesehen habe, geht dieser letzte Faktor nicht mit in die Berechnungen ein, was im Endeffekt dazu führt, dass ich bereits in der 2. Spielphase fast immer die Züge auswähle, die eine hohe Kapazitätsdichte haben.
    Im späteren Spielverlauf gibt es auch noch einige Nebenstrecken, die man ohne weiteres mit Zügen kleinerer Kapazitätsdichte bedienen könnte. Aber wozu (Außer aus schönbauer Gründen) sollte man das tun? Es ist doch viel einfacher gleich für die Strecke überdimensionierte Züge einzusetzen.
    Ebenso fällt die Überlegung eine Hauptstrecke 4-gleisig auszubauen weg, da man ja viel einfacher Doppelstockwagen einsetzen kann.


    Ob diese Überlegung so zur Realität passt, ist eine andere Sache aber es würde imho zum gameplay passen.

    @paule89 Jap darauf freust mit sicherheit nicht nur du dich ;)
    Der Post hier beschreibt ja im Endeffekt nur ein workarround für genau dieses in TF fehlende feature.
    Ich verstehe aber nicht so recht warum man dafür diesen Post ausbuddeln muss.


    @Jansch falls ich die Tage mal die Motivation dazu habe, kann ich mal wieder TF starten und ein Video davon machen. Vielleicht hilft dir das ja.

    berechenbarkeitstheorie. Tolle Vorlesung :D
    Punkt 1 gibt einen sehr groben aber guten Überblick über die tatsächlichen Grenzen.
    Punkt 2,3 und 4 könnte man imho durchaus als "kann man ohne weiteres programmieren, wird dann halt nur uter Umständen teuer" zusammenfassen.
    Punkt 5 ist halt halt ethisch. Kann man also außer Acht lassen, muss dann aber mit ner flamenden Community rechnen :D siehe Facebook, Google, Origin, um nur ein paar Beispiele zu nennen.


    Um Aber auf @Nordwestexpress Wunsch mit der Linientafel zurück zu kommen: Sowas ist tatsächlich kein nicht berechenbares Problem. Das dürfte im Endeffekt wahrscheinlich ähnlich umsetzbar sein wie die vorgestellen wählbaren Firmenlogos auf den Loks und anderen Fahrzeugen.
    Es wäre tatsächlich ein hübsches Feature wenn die (Personen) Züge eine solche Anzeige hätten, auf der außerdem noch das nächste Ziel oder die Endstation stehen würde.
    Um die Anzeigen zu lesen müsste man aber auch schon ziemlich nah an den Zug zoomen. Außerdem hat nicht jeder Zug ein solches Display.


    Deshalb schlage ich vor das bereits in TF vorhandene HUD Layer mit den Fahrzeugsymbolen so abzuändern, dass dort die Linie des Zuges und ein kleiner Beladungsbalken angezeigt wird.
    So könte man deutlich schneller herausfinden welche Linie man an welcher Stelle verstärken muss.
    Dieser Layer sollte natürlich wie alle anderen HUD Layer auch an/abschaltbar sein. Ein Filter wäre auch wünschenswert (z.B. zeige diesen Layer nur für Schiffe und nicht für andere Fahrzeugarten oder zeige diesen Layer nur für Züge, die zu mehr als 50% beladen sind)

    @KingKacke das wurde zwar schon häufiger erwähnt, ist aber imho tatsächlich eine wichtige Funktion.
    @andy1307 So lange es nicht München sein muss, finde in die Idee in der Tat gut. Eine solche Map würde die unterschiedlichen Verkehrsmittel nochmal ganz anders gewichten.
    Vor allem für Spieler mit schwächeren Rechnern könnte das den Spielspaß vermutlich nochmal deutlich erhöhen, da eine kleine Map von der Fläche her für eine einzige riesige Stadt völlig ausreichen dürfte.
    Wenn es in TPF einen Map Editor geben wird, kann man so oder so entsprechende Maps selbst bauen, ein Szenario dazu scripten und das ganze hochladen.


    <dreamMode>
    Wenn es dann noch möglich wäre per Script auf ingame Objekte zuzugreifen (Scriptseitiges "spawnen" von Passagieren mit einer Route, optimalerweise aber nicht notwendigerweise automatischer Gebäude/Bahnhofsbau per Script,
    Zugriff auf das Netzwerk), könnte man mehrere solcher Spielwelten mit einer übergeordneten Spielwelt als Multiplayer verbinden.
    In dieser Welt bestehen die Städte dann nur aus Häusern, die nur zu Dekozwecken dienen und ansonsten keine Funktion haben.
    In den Städten können dann bestimmte Stationen als Knotenpunkt definiert werden. Diese tauchen dann in der übergeordneten Welt auf und ermöglichen es Passagieren "zwischen den Welten" umzusteigen.
    Das ganze setzt aber erstmal vorraus, dass man mit Scripts auf ingame Objekte zugreifen kann und diese entsprechend anpassen kann.
    </dreamMode>

    Warum sollte man nicht mit der Bahn nach Florida fahren wollen, mal abgesehen davon, dass die DB auf dem Stück bestimmt 2 Tage verspätung schafft?
    Ich bin auch mit dem Auto in den Urlaub nach Australien gefahren. Ist doch völlig legitim!

    Sckgassen: Nette Idee. Ist aktuell sogar in Train Fever schon machbar (Haltestelle am Straßenende)


    Minimaps: Must have! Die habe ich in Train Fever schon so häufig vermisst und mir dann in der Regel selbst eine kleine Übersichtskarte gebastelt, die ich dann natürlich immer manuell updaten musste und auch bei weitem nicht die Möglichkeiten bietet, die eine solche Minimap ingame bieten würde.
    Bitte setzt die Minimap aber nicht permanent sichtbar in irgend eine Ecke, sondern baut die als extra Fenster ein.


    @Dampfnudel Ich habe aktuell einen Simutrans Server mit knapp über 24 Stunden pro Jahr laufen. Vorher waren es "nur" 12 Stunden pro Jahr und das war uns zu kurz, da wir gerne das Game nebenbei jeden Abend mal etwas zocken und das dafür über ein halbes bis ein Jahr. Wird bei Transport Fever bei uns wahrscheinlich genau so sein, falls es denn einen guten Multiplayer mitbringt (für die meisten meiner aktuellen Simutrans Mitspieler wird der Multiplayer wohl über "kaufen oder nicht kaufen" entscheiden)

    vermutlich werden die IDs nach der Reihenfolge in der Straßen geladen werden vergeben und diese Reihenfolge ist afaik alphabetisch.
    Es müsste also nur eine entsprechende Konvention geben wie man modded STraßen benennt.
    Ist aber blos eine ungetestete Vermutung!!!

    Die Anforderung an die Rechnerleistung sollte mehr Beachtung finden das man das auch auf dem Laptop spielen kann

    Also auf meinem Laptop läufts besser als auf meinem PC :D
    Aber ja prinzipiell stimme ich dir da natürlich zu. Egal wie schnell der Rechner (vor allem die CPU) ist irgendwann geht nichts mehr.


    Zum ersetzen von Fahrzeugen habe ich auch eine Idee:
    Man gibt der Fahrzeugliste verschiedene Filter mit (z.B. ein Filter nach der Zuglinie, ein Filter nach Fahrzeugmodell, ein Filter nach dem Alter (älter als n Jahre), eine "ist veraltet" Checkbox, ein Filter nach Gewinn (Gewinn < oder > Wert) , <insert your idea here>) und fügt in dieser Liste einen "ersetzen" Button hinzu.
    Klickt man den öffnet sich ein Menü in dem man wie gewohnt ein Fahrzeug zusammen klicken kann. Am Ende bestätigt man noch und schon werden die entsprechenden Fahrzeuge ersetzt.
    Das dürfte dann auch die Probleme von DarkMos Idee umgehen.
    Das einzige was dann nicht gehen würde ist aus einem Zug 2 machen oder umgekehrt aber dann muss man eben mal die Hälfte der Züge von der Linie manuell ausmustern bzw. manuell welche dazu kaufen.


    Man müsste dann allerdings noch eine Übersicht über die Ersetzungsaufträge machen, um nicht gänzlich den Übberblick zu verlieren.

    Es kommt hinzu, dass fast jeder aktuelle halbwegs Gaming taugliche Rechner mit Intel CPU 2 Grafikeinheiten hat, von denen eine (idR die Intel GPU) nicht genutzt wird.
    Diese Intel HD Grafikeinheiten sind zwar nicht die schnellsten, aber um der CPU ein wenig Arbeit abzunehmen dürften die locker ausreichen. Zumindest die etwas neueren Modelle.


    Bei vielen installierten (high poly und hochauflösende Texturen) Mods rennt TF bei mir leider noch deutlich davor ins GPU Memory limit. Da kann man aber mit einem bischen Texturen runter skalieren noch einiges wieder raus holen. Sobald es aber ins CPU Linit geht ist endgültig vorbei. Und da rennt es trotz i7-6700HQ früher oder später rein also muss man sich an der Stelle etwas einfallen lassen um den Nachfolger vielleicht auch über das Jahr 2000 hinaus auf einer großen Karte flüssig spielen zu können.
    Karten verkleinern ist da imho keine gute Idee, da selbst die großen Karten noch recht klein sind.


    Die heiß geschwitzte CPU und gelangweilte GraKa kann ich nur bestätigen. Sieht man alleine schon daran, dass TF bei mir auf meiner Intel Karte gefühlt genau so flüssig wie auf meiner GTX 965M läuft...

    @Yid Gut erklärt.
    Das deckt sich auch mit den Erfahrungen bei meinen kleinen openCL Spielereien.
    Gegen mehr Details hätte ich auch nichts ;)


    Jap wäre eine gute Idee jede Wegsuche eines Sims an die GPU zu füttern. Dann muss man sich für keine großen Gedanken um Parrallelisierbarkeit des Algorithmus machen. In diesem Fall kommt es ja auch nicht darauf an, dass eine einzelne Wegsuche schnell abgeschlossen ist, sondern nur darauf, dass eine Große Anzahl an Wegsuchen in einer bestimmten Zeit abgearbeitet werden können.

    Ja das 3D ist schon klar. Wird halt am Ende auf eine 2D Ebene Projeziert. Aber das 4D... OK verstanden. Dann kennzeichnet der 4. Wert also, ob es ein Punkt oder eine Strecke ist.
    Gibt der 4. Wert dann die Länge des Vektors an oder werden die ersten 3 mit dem 4. multipliziert? (also hätte 1|5|2|1 eine Länge von 1 und 1|5|2 gibt nur die Richtung an oder hätte der dann die Länge sqrt(30) also 5,irgendwas?
    Ich weiß was ich mir demnächst mal anlesen werde. Das interessiert mich jetzt irgendwie schon.


    Ne ich komme nicht aus Siegen und studiere dort auch nicht. Ich habe das Dokument nur zufällig im Netz gefunden.


    Edit:
    Habe mal angefangen dazu etwas zu lesen. Das scheinen keine 4D Koordinaten zu sein sondern so genannte "Homogene Koordinaten" und scheinen nur eine andere Art zu sein um 3D Koordinaten darzustellen. (wie z.B. auch Polar oder Kugelkoordinaten)
    Die haben wohl irgendwelche Vorteile... Weiter bin ich noch nicht gekommen :D

    Na dann habe ich auch schonmal ne Idee für die Bachelor Arbeit :D Ich habe gehört du schreibst die und ich schreibe meinen Namen drunter? Wobei... ich will ja garnicht Politiker werden. Dann muss ich das wohl doch selber machen :D


    Hier ist dazu ein netter Überblick zu openCL. Ist aber wirklich nicht mehr als ein sehr grober Überblick.
    http://ps.informatik.uni-siege…e-ws2011/wiersdoerfer.pdf
    Such mal nach openGL Speichermodell, wenn du noch etwas mehr zur Kommunikation wissen möchtest.


    Ja so in der Art klingt das machbar. Das müsste ich mir aber mal etwas genauer ansehen und vmich mal an einem kleinen Test Programm versuchen dann werden einem die Probleme meistens am besten klar.
    Was die 4-D Vektoren da in der Grafikkarte zu suchen haben wenn man eh nur 3-D (bzw. auf dem Bildschirm sogar 2-D) haben möchte habe ich noch nie so wirklich verstanden. Wird wohl irgendwelche Berechnungen vereinfachen.


    Edit: selbst erwischt! Lass mal wieder zurück zum eigentlichen Thema kommen :D
    Kannst mir ja mal ne pn schicken oder ein Thema dafür auf machen.

    @BR146
    Dazu kann man dann Ausweichgleise bauen, über die man Güterzüge gezielt mit Wegpunkten leiten kann.
    Sollte es also zu dem seltenen Fall kommen, dass ein Güterzug auf der Hauptstrecke auf der auch ICEs fahren verkehrt und ein ICE von einer Strecke kommen sollte, die eben keine Vorfahrt hat, dann muss man eben die Hauptstrecke an dieser Stelle doppelt 2 Gleisig ausbauen, damit der Güterzug eben keine Vorfahrt hat. Das Ausweichstück würde man dann aber so oder so bauen, da man die Hauptstrecke auf der der Güterzug fährt schließlich nicht durch einen wartenden Güterzug verstopfen möchte. Schließlich könnte direkt dahinter ja auch ein ICE fahren der, da er auf der Hauptstrecke fährt Vorfahrt vor dem anderen ICE haben soll.


    Ich kann mir so Spontan kein Szenario vorstellen, das man nicht mit einem Ausweichgleis lösen könnte (und auch keines bei dem die Variante mit mehrblock Signalen eine Ausweichstelle erforderlich* macht, die andere Variante allerdings nicht.


    Ansonsten könnte man aber auch zusätzlich zu den Mehrblock Signalen den Linien eine Priorität (keinen Blockabstand) mitgeben, der im Falle von mehreren überschneidenden Mehrblocksignalen entscheidet wer am Hauptsignal** Vorfahrt bekommt.


    Da das vielleicht etwas unverständlich klingt hier eine kleine ASCII Skizze mit Beschreibung:
    Sn ist ein Signal das n Blöcke blockiert >, <, v, ^ die Fahrtrichtungen, o eine Weiche und - ein nichtssagender Platzhalter.


    >>>>>S2>>>>>>>>S1>o>>>>>>>S1>>>
    >>>>>S2>>>>>>>>S1>^


    Beide Linien sind also erstmal von den Signalen her gleichwertig.


    Auf der Oberen Linie fährt nun ein ICE mit Priorität 3, auf der unteren ein Güterzug mit Priorität 1 (je höher desto besser)


    Der Güterzug überquert das 1. Signal und merkt erstmal den gesamten Bereich bis zum letzten Signal.
    Der ICE überquert nun sein erstes Signal, blockiert nun den Bereich bis zum letzten Signal. Der Güterzug blockiert jetzt nur noch den Bereich zum 2. Signal. Hätte der Güterzug zu diesem Zeitpunkt bereits sein 2. Signal überfahren, müsste der ICE am 2. Signal halten, da der Güterzug bereits im gemeinsamen Bereich wartet.



    Umgekehrt: Güterzug Oben überquert 1. Signal, ICE fährt unten funktioniert genau so. Der Güterzug steht nun also auf der geraden Strecke und blockiert diese bis der ICE hinter dem letzten Signal ist. Das würde bei dem anderen Vorschlag mit den mehrblock Zügen/Linien auch so sein. Es wäre allerdings aufwendiger die Linien zu erstellen. Angenommen dies ist die Hauptstrecke, möchte man dies nicht. Also baut man ein Ausweichstück.


    o>>S3>>S2>>>>>>>>S1>o>>o>>>>S1>>>
    v---------------------------^--^
    >>>>>>>S1>>>>>>>>S1>^--^
    >>>>>>>S2>>>>>>>>S1>>>^


    Jetzt könnte man dem Güterzug auf der Hauptstrecke über das Ausweichstück schicken. Der ICE auf der Hauptstrecke könnte jetzt vor dem anderen ICE und dem Güterzug vorbei fahren.
    Das funktioniert auch ohne Prioritäten. und mit den Linienbezognenen Blocklängen auch.





    *mit erforderlich meine ich, dass ansonsten die Hauptstrecke (die mit der höheren Priorität) zum stocken kommen würde.
    **das Wort Hauptsignal habe ich hier nicht realitätsgetreu genutzt. Es beschreibt einfach nur das letzte Signal vor dem Zusammentreffen der Gleise (da wo also in echt das Hauptsignal stehen würde, aber es funktioniert etwas anders)



    @DarkMo Heutzutage können Grafikkarten einiges mehr als nur ein bischen mit Vektoren rechnen. Im großen und ganzen stimmt das aber. Die können einige wenige Dinge unglaublich schnell und GPGPU nutzt genau das aus. Es werden also Dinge die die GPU unglaublich schnell kann von einem auf der CPU laufenden (im Hauptspeicher arbeitenden) Steuerprogramm auf die GPU ausgelagert. Dies geschieht bei openCL z.B. so, dass ein so genannter openCL Kernel vom Steuerprogramm an die GPU gegeben wird. Dieser openCL Kernel erhält einen eigenen Speicherbereich im Spiecher der Grafikkarte, der vom Steuerprogramm initialsisert wird. Der openCL KErnel rechnet schnell seinen Teil durch und schreibt die Ergebnisse in diesen Berecih. Das Steuerprogramm holt sichd ann die Ergebnisse ab.


    So weit zur theroetischen Funktionsweise. Es gibt neben openCL auch noch andere Schnittstellen wie CUDA, die aber wohl in diesem Fall nicht wirklich nützlich sind, da man damit alle Spieler an einen GPU Hersteller binden würde... openCL kennt btw. auch proprietäre Erweiterungen.


    Ich habe mich vor ein paar Jahren mal mit der Sache beschäftigt. Das folgende könnte also nicht mehr up-to-date sein.


    Ein Problem bei der Sache ist, dass es nicht damit getan ist ein Compiler flag zu setzen und schon geht es auf magische Weise auf die GPU. Das Verhalten muss man explizit coden und das ist auch deutlisch schwieriger als das selbe Programm einfach auf der CPU laufen zu lassen. Es ist also ein deutlicher Mehraufwand.
    Es gibt allerdings einige Libs, die das ganze vereinfachen. Es bleibt ein Mehraufwand aber dieser hält sich dann wohl in Grenzen. Ich habe diese Libs aber selbst nie genutzt sondern nur ein wenig mit openCL aus Java heraus zu spielen (jocl). Es kann also sein, dass ich hier etwas daneben liege.


    Das nächste Problem ist die kompatibilität.
    Hierzu ein Zitat von tiker.net

    Zitat

    While OpenCL can natively talk to a large range of devices, that doesn't mean that your code will run optimally on all of them without any effort on your part. In fact, there's no guarantee it will even run at all, given that different CL devices have very different feature sets. If you stick to the OpenCL spec and avoid vendor-specific extensions, your code should be portable, if not tuned for speed. For now, it is safe to assume that you are facing efforts on the scale of a rewrite for your kernel code when switching devices for nontrivial codes. Fortunately though, the host-side code stays the same across devices.

    Auch hier kann ich nicht sagen in wie weit die unterschiedlichen Frameworks dieses Problem lösen. Auch weiß ich nicht wie performant die Implementierungen sind.


    Zu deiner Idee kann ich nicht viel sagen, da ich nicht genau weiß wie Meshes intern zu Pixeln weiterverarbeitet werden. Es sind zwar beides im Endeffekt nur Knoten und Kanten aber die Aktion ist eine gänzlich andere. Einmal interessieren uns die Flächen, da diese eben zu dem werden was man auf dem Bildschirm sieht (ggf. mit ner Textur drauf) und bei dem anderen interessieren uns erstmal die Kantenlängen als Weg zum Ziel aber vor allem der optimale Pfad auf dem man diesen Kanten folgen muss um zum ziel zu kommen. Außerdem interessiert an dieser Stelle die absolute Entfernung quasi garnicht, sondern die Reisedauer. Man müsste also erstmal ein Mesh so aufbauen, dass die Kantenlängen der Reisezeit entsprechen und ich bin mir ziemlich sicher, dass das im allgemeinen bei einem 3-d Mesh nicht möglich ist dieses Mesh aufzubauen.
    Bsp: Knoten A,B,C
    Kantengewichte: A-B 1, A-C 1, B-C 3
    Aufgabe: wähle die Koordinaten der Knoten A,B,C so, dass die Kanten die Entsprechende Länge haben...
    Du kannst also nicht jeden beliebigen Graphen in ein Mesh umwandeln, so lange die Kantengewichte etwas anderes als die Distanz zwischen den zum Knoten gehörenden Punkten sind.


    Ob deine Idee also so funktioniert und ob das performant ist kann ich dir nicht sagen. Ich hoffe ich habe deine Idee zumindest richtig verstanden.
    Auf jeden Fall kann man aber einen Algorithmus für openCL implementieren und die GPU den durchrechnen lassen. Das große Problem hierbei ist, dass die üblichen Algorithem für sowas keinen Blick auf Parallelität werfen. Man müsste also erstmal einen vernünftig parallelisierbaren Algorithmus finden, der diese Aufgabe erledigt. Wenn man ganz viel Glück hat gibt es dazu ein fertiges Graphen Framework, dass genau dies (hoffentlich performant) auf der GPU macht. Gibt es dieses Framework nicht, wird es wirklich viel Arbeit.


    Es folgt irgendwo im Netz gelesenes Halbwissen (mit CUDA habe ich mich noch nie beschäftigt)
    Ich weiß auch nicht ob für openCL der Modus der Grafikkarte gewechselt werden muss (ich habe mit openCL nochrum gespielt wenn gleichzeitig eine graisch aufwendiger Oberfläche angezeigt werden musste). Bei CUDA soll das zumindest mal so gewesen sein und die Zeit die der mode switch benötigt hat soll auch nicht ohne gewesen sin uns sich in Form von spürbaren lags geäußert haben. Also entweder man hat eine ungenutzte NVIDIA GPU im System oder man muss eben mit lags bei der Anzeige leben. Die Umschaltzeit soll aber bei neueren Karten deutlich niedriger liegen.