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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

11.08.2003, 15:08

Das wäre schlecht, da ich das hier schon für die 2. Auflage gemacht habe, da ist sowieso noch einiges anders. Du musst einfach nur jedem Sound noch eine m_dwNextBuffer-Variable zuweisen. Die setzt Du am Anfang auf null. Dann habe ich eine PlayNextBuffer-Methode, die Puffer Nr. [m_dwNextBuffer] abspielt und m_dwNextBuffer erhöht. Wenn m_dwNextBuffer = m_dwNumBuffers - 1, dann m_dwNextBuffer = 0.

12

11.08.2003, 16:25

Jau!

Genau so hatte ich mir das vorgestellt :-)
Das Leben ist kein Spiel... Aber die Grafik ist geil!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

11.08.2003, 17:56

Schön, dann habe ich wohl Deine Gedanken gelesen :)

Anonymous

unregistriert

14

11.08.2003, 18:23

Am Sound soll das liegen ?

Da hätte ich nie nach gesucht, das Problem mit "Direkt Sound" ist, das ich damit noch nichts gemacht habe, ich weiss im moment noch gar nicht wie ich den Code ändern soll.
Falls jemand ein paar Codeschnippzel übrig hatt kann er sie mir gerne schicken. Dann gebe ich auch sofort feedback ob es funktioniert.
Bis dahin versuche ich mal das ganze ohne Ton laufen zu lassen, das dürfte ich wohl auf die schnelle hinkriegen.

mfg

15

13.08.2003, 19:53

Nur zur Vervollständigung,
ich habe den Ton für die Missiles herauskommentiert und siehe da über 70 FPS, nur wenn Explosionssound abgespielt wird dann hackt es etwas.
Ich habe auch alle Einstellungen im Spiel Menue ausprobiert 11kHz .. 8 , 16 bit, spielt keine Rolle die Wiederholrate bricht bis auf ca. 1 FPS herunter .

Liegt wahrscheinlich an der "Sound on Board" Sound-Karte (ist ein MSI KT3 ARU), ewtl. kann man auch unter Windows Einstellungen verändern oder Treiber updaten ?


Na mal sehen... ich werde mich erstmal um das Buch kümmern ... und dann mal weiter schauen.

16

14.08.2003, 18:00

Zitat von »"Bingo++"«

Nur zur Vervollständigung,
ich habe den Ton für die Missiles herauskommentiert und siehe da über 70 FPS, nur wenn Explosionssound abgespielt wird dann hackt es etwas.
Ich habe auch alle Einstellungen im Spiel Menue ausprobiert 11kHz .. 8 , 16 bit, spielt keine Rolle die Wiederholrate bricht bis auf ca. 1 FPS herunter .


Genau sowas hab ich auch beobachtet. Es reicht aber, wenn Du Deine Soundbuffer ohne die 3D-Optionen erstellst. Das Abspielen der Sounds alleine ist nicht das Problem, bei mir zumindest gibts nur mit 3D-Sounds Probs. Ich habe die Optionen auskommentiert, deshalb die komische Einrückerei:

Quellcode

1
2
3
4
5
6
7
8
9
...
if(m_apSound[s]->Init(acFilename,
                      DSBCAPS_STATIC
                                 | DSBCAPS_LOCDEFER
//                               | DSBCAPS_CTRL3D |
//                               | DSBCAPS_CTRLFREQUENCY
//                               | DSBCAPS_MUTE3DATMAXDISTANCE
                                 , DS3DALG_DEFAULT,
                10))

An den Stellen wo der Sound abgespielt wird, reciht es die 3D-Funktionen rauszukommentieren:

Quellcode

1
2
3
4
5
6
7
   int iSound = g_pBreakanoid->m_apSound[1]->PlayAvailableBuffer();
/* if (iSound != -1)
   { g_pBreakanoid->m_apSound[1]->SetPosition((DWORD)(iSound), m_vPosition); 
      g_pBreakanoid->m_apSound[1]->SetFrequency((DWORD)(iSound), tbIntRandom(36100, 44100));
   }
*/
...

Sollte eine Lösung gefunden werden ("was machen wir falsch???"), kann mans leicht wieder reinkommentieren. Die Zuweisung an i könnte man sich natürlich auch noch sparen...

kann jemand mal nen Satz über die Performance-Unterschiede bei den DS3DALG-Optionen verlieren, Ich meine praktische Erfahrungen? Mit dieser Einstellung da oben funzts ganz gut. Ich muß mal DS3DALG_NO_VIRTUALIZATION ausprobieren, vielleicht geht dann ja 3D-Sound besser...

Gruß
Das Leben ist kein Spiel... Aber die Grafik ist geil!

17

14.08.2003, 18:19

AUftreten des Fehlers

Das starke "Ruckeln", ich möchts mal als kurzes Einfrieren des Spiels bezeichnen, tritt auch auf, wenn man SetPosition und SetFrequenzy für die 3D-Sounds NICHT aufruft. Es scheint also davon abzuhängen, daß bei der Initialisierung des Buffers die Optionen DSBCAPS_CTRL3D, DSBCAPS_CTRLFREQUENCY, DSBCAPS_MUTE3DATMAXDISTANCE gesetzt sind. Schmeiß ich die raus, dann krachts auch schön.

Nach meinem Gefühl passiert es immer dann, wenn zu viele Sounds gleichzeitig gestartet werden. Dann geht nix mehr. Die eingebauten fps-Anzeige geht dann bis auf ca. 3 fps runter (ohne 3D-Sound 80-100 fps!!!)

Der Effekt scheint auch dann aufzutreten, wenn grad gar kein Sound läuft.

Die anderen D3DSALG_* Optionen hab ich alle durchprobiert. subjektiv ist es immer das Gleiche.

Schade, ist nämlich cool, wenn der 3D-Sound aus der Richtung des Objekts kommt :-(
Das Leben ist kein Spiel... Aber die Grafik ist geil!

Werbeanzeige