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

g1r

Frischling

  • »g1r« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Berlin

Beruf: Student im Dipl.Sem.

  • Private Nachricht senden

1

06.03.2006, 17:35

DirectShow

Guten Tag - bin neu hier :)

Hab mich zwar schon etwas durch die Suchfunktionen geleiert, aber ich hab leider nichts passendes finden können. Deshalb musste, so leid es mir tut, ein neuer Thread her...

Ich bin auf der Suche nach einer Problemlösung, die Euch vllt schon einmal über den Weg gelaufen ist. Nun kann es sein, dass mein gedachtes Prinzip Schwachsinn ist, aber ich bin recht neu in der Materie und dachte mir: "hach probierste des mal...", also keine herben Antworten ;p

Ich bin gerade dabei, mir mit Hilfe von Directshow, die Hintergrundmusik meines Spieles organisieren zulassen. Das funktioniert auch alles super, allerdings möchte ich natürlich ein paar Features implementiert wissen, die mein Vorhaben unterstützen. Nun soll pro Spielstatus ein gewisser Pool an Musikdaten geladen werden, aus dem zufällig ein Titel gewählt (dachte hier auch an zufälliges Platzieren der Cursorposition in einem Mixtrack) und abgespielt wird. Das Ganze akkustisch formschön mit FadeIn und FadeOut, bzw XFade zwischen den Titeln. Ausserdem soll überprüft werden, ob eventuell ein Titel läuft. Ist dies der Fall, soll der aktuelle ersteinmal ausgeblendet werden, bevor der neue gestartet wird. Konntet ihr folgen?! LOL!

Okay, diese Ablauf- und Organisationslogik ist nicht mein Problem, sondern eher der Denkprozess beim Faden. Ich muss natürlich eine Schleife basteln, die mir kontinuierlich Werte liefert, um die Lautstärke des aktuell gestarteten Titels anpassen zukönnen. Da aber die meisten Systeme heutzutage "recht schnell" sind, ist die Zeitspanne zwischen den Laustärkewechseln so gering, dass der Effekt als = NULL wahrgenommen wird :/
Da dachte ich mir also, hey bauste einfach eine Verzögerung ein, damit man den Fadeprozess überhaupt mitbekommt. Alles klar als Standard ersteinmal Sleep() angeworfen und pronto ging es. Ihr werdet es ahnen, es war eine dumme Wahl, alldieweil Sleep() den gesamten Prozess blockiert und nicht nur den/die Thread(s) der/die von DirectShow erzeugt wird/werden. Im Resultat heisst das im Moment für mich, der Sound fadet zwar schön aus und wieder ein, aber dabei blockiert er mein Spiel, was natürlich nicht im Sinne des Erfinders ist.

Nun dachte ich sofort an Threads und hoffte damit eine Lösung zufinden, allerdings funktionierte das Alles auch nicht so recht, wie ich mir das vorgestellt hatte. Ich hoffte auf _beginthread und _endthread, wurde aber enttäuscht.

Ich mag keinen Code sehen, ich will nur mal hören, ob da jemand eine Idee für hat, oder vor ähnlichem Problem stand.

Mir schwahnt, als würde niemand ernsthaft seinen Musikpart mit DirectShow behandeln. Vllt sollte ich darüber nachdenken auf Ausweichmöglichkeiten umzuschwenken? Immerhin nuddelt DirectShow nicht unbedingt lizenzfreie Formate ab (Da schliesst sich gleich noch eine Frage an: Wenn wir unsere Musik im Format MP3 abspeichern und im Spiel verwenden, werden Lizenzgebühren beim Fraunhofer Institut fällig richtig!?)

Über den ein oder anderen Gedankensprung wäre ich sehr erfreut... btw: ist schön hier :huhu:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

06.03.2006, 20:02

Schonmal dran gedacht das Faden Zeitabhängig zu machen? Genauso wie man es auch allgemein mit der Spielgeschwindigkeit macht? Oder wo liegt da dass Problem?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

g1r

Frischling

  • »g1r« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Berlin

Beruf: Student im Dipl.Sem.

  • Private Nachricht senden

3

07.03.2006, 09:13

Naja, die Idee hatte ich gestern auch noch bekommen, aber selbst wenn ich das mit Zeitabfragen mache, müsste das ja in einer Schleife passieren, in der die zeit kontinuierlich abgefragt wird. Damit würde ja der Spass wieder alles blockieren?! Oder ich hab einfach im Moment ein nagelneues Brett vor dem Kopf und seh nicht, dass dieser Vorgang dann auf einem von DShow erzeugten Thread laufen würde...ich guck mir das mal an! Der Druck von oben befiehlt allerdings zuerst die Implementierung des Netcodes. Insofern gilt einer von Davids Leitsprüchen zur Spieleentwicklung: "Optimierungen haben Zeit" :roll: - danke trotzdem erstemal, ich geb ne Rückmeldung...

g1r

Frischling

  • »g1r« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Berlin

Beruf: Student im Dipl.Sem.

  • Private Nachricht senden

4

07.03.2006, 11:38

so ich hab jetzt doch "gethreaded" bekommen...wenn man ne nacht drüber schläft und morgens nochmal stark nachdenkt, dann funzt es auch *juchu* 8)

Werbeanzeige