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

1

12.07.2008, 12:09

Soundausgabe mit der SDL

Hi,

Ich arbeite jetzt schon seit über einem Monat an einem Super Mario Spiel und habe das Grundgerüst so gut wie fertig gestellt auf desen Grundlage ich dann, dass Spiel erstellen möchte.

Bisher hatte ich zwar viele Probleme, die ich aber alle lösen konnte und mich dadurch entwiklen konnte. Nun bin ich aber wieder mal an einer recht schwieriegen Stelle, nämlich die Soundausgabe.

Ich wühle mich nun schon den ganzen Morgen mithilfe von Google durch Infos die ich zu dem Thema finden kann. Aber leider habe ich es bisher nicht geschafft irgendwelche Fortschritte zu machen. Ich weiß nicht ob ich mich in dieser Beziehung etwas "dumm" anstelle oder ob es an den sperlichen Informationen liegt, die man zu diesem Thema finden kann.

Naja aufjedenfall brauche ich für mein Spiel einfach nur die möglichkeit Sounddatein zu laden, diese wiederzugeben und dann auch nach abspielen wieder zu bennden. Es sollten auch mehrere Sounddatein gleichzeitig abspielbar sein..

Wäre vieleicht jemand so nett,anhand eines Quellcodebeispiels zu erläutern, wie ich das oben genannte möglichst einfach verwirklichen kann?

2

12.07.2008, 12:11

In welcher Sprache machst du das denn?

3

12.07.2008, 12:14

Haste hier schon mal reingeschaut?

4

12.07.2008, 14:48

Ich schreibe das Programm in C++.

Ich bin mal dem geposteten Link gefollgt und habe mir das ganze mal angeschaut. Ich hab mich jetzt etwa 1 Stunde damit beschäftigen und muss leider feststellen, das ich das ganze irgendwie noch nicht in mein Projekt eingebunden bekomme.

Ich habe mir das so gedacht das ich eine Klasse habe die 3 Funktionen hat. Eine zum Laden der Sounds, dann eine zum abspielen und eine um das abspielen der Sound wieder zu bennden. So in der Weise habe ich es auch schon mit den Sprites gemacht "Also eine Funktion zum Laden und eine zum Zeichnen bzw Rendern der Bilder".

Ich versuche dies nun schon die ganze Zeit irgendwie zu verwirklichen finde aber nicht heraus, was dass wesentliche für diese Funktionen wären.

Könnte mir hier vieleicht jemand eine Hilfestellung geben?

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

5

12.07.2008, 15:28

schonmal SDL_mixer angeschaut? Link: http://www.libsdl.org/projects/SDL_mixer

Und in Zukunf:

(Link)

MFG,
fkrauthan.
Homepage: fkrauthan.de | Browser-game: flowergame.net

6

12.07.2008, 16:05

Joar das hab ich mir auch schon angeschut, was müsste ich den tun um "SDL_mixer" einzubinden?

Da kann man soviel downloaden und ich bin etwas überfordert, was ich davon nun nehmen soll und wie ich, dies dann verwende um die SDl_mixer funktionen zu benutzen..

7

12.07.2008, 22:13

Das sollte nur wirklich nicht sonderlich schwer sein das richtige auszuwählen.
Dein Betriebssystem müsstest du ja wissen was die Auswahl schon mal erheblich einschränkt.
Und die entsprechenden Sachen, nachdem du es heruntergeladen hast, solltest du ja schon durch SDL selbst draufhaben.

8

13.07.2008, 13:13

Hi nochmal,

Ich hab mir jetzt die Zip Datei "SDL_mixer-1.2.8-win32" heruntergeladen, wenn ich diese entpacke, erhalte ich 5 DLL Datein. Soll ich diese nun in das Verzeichnis in der ich meine SDL Datein habe reinkopieren?

Ich hatte mit der einbindung der SDL keine probleme und bin auch nicht "ganz unerfahren, sonsst wäre ich wohl nicht so weit bei meinem Projekt gekommen aber die Einbindung des Mixers überfordert mich nun doch, besonders weil es nirgendwo eine beschreibung gibt wie man nun die SDL um den SDL_Mixer erweitert.

Edit:

Ich hab jetzt nochmal das Internet durchforstet und dabei bin ich auf etwas gestossen. Ich habe nun einen Ordner gedownlaodet mit dem Namen: "SDL_mixer-1.2.4" in diesem war ein lib und ein include Ordner enthalten. Den Pfad zu diesen Ordnern habe ich geowhnt, wie bei der SDL üblich, unter "Extras/Optionen/Verzeichnise" eingetragen.

Nun habe ich erstmal versucht eine SDL Mixer Funktion in meiner Main Funktion aufzurufen, was nicht funktioniert hat:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "framework.hpp"
#include "Sprite.hpp"
#include "Logfile.hpp"
#include "Enemy.hpp"
#include <iostream>
#include "timer.hpp"
#include "Game.hpp"
#include "AreaScanning.hpp"
#include "Backgroundmap.hpp"
#include "Logfile.hpp"
#include <SDL.h>
#include <SDL_mixer.h> 
#include <stdlib.h>



int main (int argc, char *argv[])
{
    // Framework initialisieren 

    if (g_pFramework->Init (800, 600, 16, false) == false)
    return (0);

    g_pLogfile->CreateLogfile("Logfile.html");
    CGame Game;


    //Initialize SDL_mixer with our chosen audio settings

   if(Mix_OpenAudio(22050,AUDIO_S16SYS,2,4096) != 0) 
   {
      printf("Unable to initialize audio: %s\n", Mix_GetError());
      exit(1);
   } 

    
    for (int i = 0; i<10000; i++)
    {

        Game.Run();
    }



    return (0);

}


Das war die Fehlermeldung dazu:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
--------------------Konfiguration: SMW_Engine_01 - Win32 Debug--------------------
Kompilierung läuft...
Main.cpp
Linker-Vorgang läuft...
Main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _Mix_OpenAudio
Debug/SMW_Engine_01.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

SMW_Engine_01.exe - 2 Fehler, 0 Warnung(en)


Ich würde mich über Hilfe freuen ;)


Edit:

Okey hat sich jetzt auch erledigt ich hab vergessen unter Projekteinstellungen/Linker die SDL_mixer.lib reinzuschreiben und diese Datei in mein Debug verzeichnis zu kopieren. Nun funktioniert das ganze anscheinend..

So weit, so gut, das Programm läuft. Allerdings hab ich noch zwei Probleme:

1. Wenn ich nun mein Programm wieder benndet bekomme ich einen Application Error: The instruction at "0x10014487" referenced memory at "0x00e37fd8". The memory could not be "read" Click on OK to terminate the program. Dies sit nicht ganz so schlimm, da es erst nach Schließen der Anwendung auftritt allerdings ist es auch nicht grade erwünscht, dass das Programm mit einem Fehler benndet wird. Hat jemand eine Idee, wie dies vermeiden werden kann?

2. Ich benutze ja den follgenden Quelltext SDL_Mixer zu initaliesieren

C-/C++-Quelltext

1
2
3
4
5
6
    //Initialize SDL_mixer with our chosen audio settings

   if(Mix_OpenAudio(22050,AUDIO_S16SYS,2,4096) != 0) 
   {
      printf("Unable to initialize audio: %s\n", Mix_GetError());
      exit(1);
   } 
"Der QUelltext stamt von einer Internetseite". Meine Frage ist nun ob ich richtig liege bei der annahme, dass dies nur einmal im ganzen Quelltext gemacht werden muss und nicht jedesmal wieder, wenn ich eine Audiodatei im Verlauf meines Programmes abspielen möchte?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

9

13.07.2008, 13:56

Hast du die lib auch in deinen Projekteinstellungen vermerkt?

10

13.07.2008, 13:58

Ja sorry hab eben gemekt, dass ich dies versäumt habe. Aber bitte nochmal den Edit meines letzten Post anschauen, da ich noch ein weiteres Problem und eine weitere Frage habe ;)

Werbeanzeige