Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

pouk_

Frischling

  • »pouk_« ist der Autor dieses Themas

Beiträge: 64

Beruf: Schüler

  • Private Nachricht senden

1

29.03.2015, 14:00

Eigene Threads für Animationen, Updaten von Objekten

Ahoy, hab nur mal eine kleine Frage.
Sollte ich für Animationen oder das Updaten von Objekten im Spiel eigene Threads erstellen ? Wäre das dann auch effizient ?

C-/C++-Quelltext

1
2
#include <stdlib.h>
main(){for(;;malloc(1024));} // dead

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

2

29.03.2015, 14:08

Ich denke, dass alles grafikbezogene Updaten (z.B. Animationen) nur in Threads ausgeführt werden kann, wenn das die Renderengine unterstüzt. Wenn du Objekte Spiellogigmäßig updaten musst, also rein auf der CPU, dann ist das in jedem Fall besser, als wenn das Spiel laggt. Versuchst du einen Teil-Update in jedem Frame in einer Singlethread-Anwendung, dann ist das allemal komplizierter, als wenn du einfach einen zweiten Thread erstellst.

Effektiv ist das bestimmt, denn heutzutage hast du fast nur noch Multicoreprozessoren. Effizient im Hinblick auf was? Speicher oder Codelänge? Wie es schon im letzten Satz im erstem Absatz angeklungen ist, ist dein Code viel übersichtlicher, da du kein stückweises Updaten implementieren brauchst.

Ich hoffe, das war einigermaßen verständlich. ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

pouk_

Frischling

  • »pouk_« ist der Autor dieses Themas

Beiträge: 64

Beruf: Schüler

  • Private Nachricht senden

3

29.03.2015, 14:12

Effizienz im Hinblick auf Speicher ^^
Danke für die schnelle Antwort, war alles verständlich :).

C-/C++-Quelltext

1
2
#include <stdlib.h>
main(){for(;;malloc(1024));} // dead

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

4

29.03.2015, 14:16

Ich glaub, beim Speicher fällt sowas nicht so ins Gewicht. ;) Du musst bei Teilupdates halt den aktuellen Updatefortschritt speichern - hast du beim Threading aber nicht - da hast du ja deine Objekte threadübergreifend gespeichert, da ists dann egal, wie viele Threads drauf zugreifen - musst den Zugriff nur anständig regeln...
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

29.03.2015, 22:08

Wichtig beim Multithreading ist, wenn du nicht weißt ob Multithreading sinnvoll ist, dann lass es lieber sein. Overhead und Synchronisationszeiten sind oft nicht zu vernachlässigen und wenn du nicht aufpasst, dann läuft dein Programm am Ende langsamer als vorher. Allgemein beim optimieren sollte man lieber mit Struktur vorgehen. Das heißt, optimiere nicht einfach drauf los an Sachen bei denen du dir nicht sicher bist. Analysiere deine Software und suche nach Code der sich zu optimieren lohnt. Ein guter Anfang ist da oft ein Profiler. Hiermit kannst du gegebenenfalls Flaschenhälse in deinem Code aufdecken. Dann solltest du auch erst mal gucken ob du so optimieren kannst bevor du wild mit Threads um dich wirfst.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige