Multithreading in Spielen



  • Man sollte IMHO selbst nicht noch "künstlich" neue Threads anlegen, wenn irgendeine lib noch weitere Threads braucht, dann wird sie das schon machen.

    Bye, TGGC (Der Held ist zurück)



  • einige dx komponenten erstellen zusätzliche threads... aber das sind ja keine selbsgebastelten und ham auch nich wirklich was mit dem spiel zu schaffen

    ich hab für spiele bisher nie threads erstellt... das einzige was nem extra thread läuft sind momentan dateiübertragungen via http/ftp für updates/highscores



  • illuminator schrieb:

    Wobei ich meine mal gehört zu haben, das der Sound bei einigen Spielen in einem eigenem Thread läuft. Sicher bin ich mir da aber nicht.

    Könnte ja sein. Hatte ich früher bei Games schonmal, daß der Sound weiterläuft (bei 'nem Absturz halt)...
    (nicht zu verwechseln mit dem Abspielen der letzten Stücke aus dem DirectSound-Buffer!)

    TGGC schrieb:

    Man sollte IMHO selbst nicht noch "künstlich" neue Threads anlegen,

    Das kann man aber auch nicht so pauschalisieren.
    Wenn man während dem Intro-Video Dateien läd oder auf einem riesen Terrain keine Nachladepausen machen muß, dann ist das GUT! 🤡 👍
    Natürlich sollte man eine kleine "Kosten-/Nutzen-Rechnung" machen, denn zuerst einmal vergrößern zusätzliche Threads den Overhead/Verwaltungsaufwand, und verschlechtern damit die Performance.



  • [quote="Sgt. Nukem"Könnte ja sein. Hatte ich früher bei Games schonmal, daß der Sound weiterläuft (bei 'nem Absturz halt)...[/quote]
    Das liegt dann wahrscheinlich an der Soundkarte. Sie wird das Sample immer weiter abspielen, und wenn die Anwendung abgestürzt ist, kann sie den Puffer nicht mehr kontinuierlich auffüllen.

    Wenn man nicht DirectPlay verwendet, sollte man den Netzwerkcode in einen separaten Thread packen. Vor allem beim Server: ein Thread hält ein Listening Socket offen, nimmt Verbindungen entgegen und erstellt dann für den Clienten einen weiteren Thread.
    Aber mit DirectPlay braucht man sich darum nicht zu kümmern. Dort wird automatisch ein Event erstellt, wenn eine neue Nachricht da ist, oder eine Rückruffunktion wird aufgerufen.



  • TomasRiker schrieb:

    Sgt. Nukem schrieb:

    Könnte ja sein. Hatte ich früher bei Games schonmal, daß der Sound weiterläuft (bei 'nem Absturz halt)...

    Das liegt dann wahrscheinlich an der Soundkarte. Sie wird das Sample immer weiter abspielen, und wenn die Anwendung abgestürzt ist, kann sie den Puffer nicht mehr kontinuierlich auffüllen.

    Nee, eben nicht.
    Hab' ja extra geschrieben...

    Sgt. Nukem schrieb:

    (nicht zu verwechseln mit dem Abspielen der letzten Stücke aus dem DirectSound-Buffer!)

    ...weil es eben nicht dieses typisch abgehackte "Problem" war. Die Musik lief richtig weiter! Wird dann allerdings wohl auch nicht von vielen Spielen so gemacht, keine Ahnung...

    TomasRiker schrieb:

    Wenn man nicht DirectPlay verwendet, sollte man den Netzwerkcode in einen separaten Thread packen. Vor allem beim Server: ein Thread hält ein Listening Socket offen, nimmt Verbindungen entgegen und erstellt dann für den Clienten einen weiteren Thread.

    Klar, Netzwerk ohne Threads kann nicht richtig funktionieren. 👍

    [EDIT: Quotes gefixt.]



  • Hi,

    Threading bringt meiner Meinung nach schon was. Im Moment gibt es zwar "nur" Hyper Threading, wobei zwei Threads semisynchron ausgeführt werden, aber laut Maverick aus dem ZFX-Forum ist schon eine neue CPU geplant, die 256 Threads parallel ausführen kann. Deswegen macht es dann schon Sinn, den Renderer, den Netzwerkcode, das Scene Managment usw. in einen eigenen Thread zu packen.

    Und so groß wie ihr meint ist der Overhead nicht, wenn man Threads nicht immer in einer Endlosschleife laufen lässt, sondern bei keiner Arbeit schlafen legt und kritische Abschnitte statt Mutices verwendet.

    ChrisM



  • Dieser CPU würde dann aber den Cache für 256 Threads aufteilen?
    Na, das kann ja was werden.



  • @Sgt. Nukem:
    Ja, sicherlich hast du recht. Das war eigentlich auch das was ich meinte (Dein Intro Video, läuft vielleicht schon in einem eigenen Thread, je nachdem womit es gespielt wird?). Man sollte nur die Threads machen, die unbedingt nötig sind und nicht deren Zahl hochtreiben, mit welchen die man gar nicht braucht. Auf'm z.b. dem C64 (ersetzte durch beliebige PLattform) lief immer alles in einem Thread und das funktioniert auch prima.

    Z.b. den FMod XM-player könnte ich mir automatisch in eigenem Thread vorstellen, weil der ja immer mal wieder die Daten zusammenbasteln muss.

    Bye, TGGC (Der Held ist zurück)



  • TGGC schrieb:

    @Sgt. Nukem: [...]

    ACK 🤡 👍



  • Ihr seid euch einig 😮 😮 😮 😕

    😃


Anmelden zum Antworten