Kleines Ballerspiel mit der Irrlicht Engine und Irrklang als Einstieg



  • mach doch mal ein fertiges zip mit binaries und ressourcen

    http://www.henkessoft.de/Sonstiges/IrrSpiel.zip
    Spiel ist absoluter Blödsinn, nicht Ernst nehmen. Mir geht es um den Einstieg, der selbst bei Irrlicht m.E. garnicht so leicht ist. Bitte um Änderungsvorschläge/Verbesserungen.

    Darf man dies hier alles als Download anbieten oder verstoße ich gegen irgendetwas?



  • Ich finde, dass der Code schon ziemlich anfängerfreundlich aussieht, nur ein paar Sachen könnten noch der Übersicht halber in Funktionen ausgelagert werden. Liest sich meines Erachtens besser als jeder Kommentar und eine 250-Zeilen-Funktion zu überblicken ist auch für Fortgeschrittenere oft nicht einfach 😉

    edit: Ich hab's auch kurz mal angespielt, für die paar Zeilen Quellcode sieht man ja schon _ordentlich_ was! Ich find's gut, ich würde auch nicht noch mehr Inhalt reinpacken, passiert doch schon ordentlich was; Graphik-Vordergrund, -Hintergrund, Sound, Events. Mit einigen Erklärungen wirklich wirklich gut 🙂 👍



  • while(!level) 
    {
      if( receiver.IsKeyDown(KEY_RETURN) ) 
      { 
        level = 1; // first game level 
        img->setVisible(false); 
      } 
      drawScene(driver, smgr, guienv); 
      break; // It works, but why is it necessary??? 
    }
    

    ist doch äquivalent zu

    if(!level) 
    {
      if( receiver.IsKeyDown(KEY_RETURN) ) 
      { 
        level = 1; // first game level 
        img->setVisible(false); 
      } 
      drawScene(driver, smgr, guienv); 
    }
    

    Die while-Schlife überprüft doch nur und wird nach dem ersten Durchlauf sofort abgebrochen. Also ist es nichts anderes als eine If-Abfrage. Den Unterschied zu einer Schleife und einer If-Abfrage kennst du doch, oder? Ich weiß nicht, was dein Code bewirken soll, da ich mir nicht den ganzen Code angesehen habe, aber das erscheint mir doch etwas seltsam.

    Gruß
    Don06



  • Nein, es geht nicht um while(...), was hier m.E. richtig ist, oder if(...). Ich habe schlicht und einfach device->run() in der "kleinen" Schleife vergessen. Damit wird auch der "receiver" nicht abgefragt.

    So geht es perfekt, wie ursprünglich beabsichtigt:

    while( device->run() && !level )
    {
      if( receiver.IsKeyDown(KEY_RETURN) )
      {
        level = 1; // first game level
        img->setVisible( false );
      }
      drawScene( driver, smgr, guienv );
    }
    

    🙂



  • Ich hab's auch kurz mal angespielt, für die paar Zeilen Quellcode sieht man ja schon _ordentlich_ was!

    Danke für das positive Feedback. Ich möchte das Mini Game auch nicht perfektionieren, damit Einsteiger richtig Laune bekommen, dies sofort zu verbessern. Wichtiger sind m.E. die Erklärungen.



  • if (receiver.IsKeyDown(KEY_SPACE))
    {
               [...]
                        // Shoot sound
                        irrklang::ISound* snd = (irrklang::createIrrKlangDevice())->play3D(
                                                                         "../media/impact.wav", v, false, false, true); 
    }
    

    Hi,

    das kommt aber gar nicht gut



  • das kommt aber gar nicht gut

    Vorschläge zur Verbesserung?



  • Ich bin in Irrlicht auch nicht gerade fit, aber mir ist aufgefallen, dass beim schiessen die Framerrate von etwa 800 Fps auf 200 Fps zurückgeht.

    Laut http://www.ambiera.com/irrklang/docu/index.html gibt es die Funktion addSoundSourceFromFile, die Sounds einliest, damit man sie nicht bei jedem spielen neuladen muss.



  • kann ich bestaetigen, laut der konsole wird Irrklang dauernd neu initialisiert.

    ansonsten sieht das fuer recht wenig code schonmal wirklich nett aus.



  • Ich habe dies mit dem Sound berichtigt, bringt aber wenig bezüglich Frames:

    // start Irrklang sound engine and load sound waves
    irrklang::ISoundEngine* sndEngine = irrklang::createIrrKlangDevice();
    irrklang::ISoundSource* backgroundSound = sndEngine->addSoundSourceFromFile("../media/IrrlichtTheme.ogg");
    irrklang::ISoundSource* shootSound = sndEngine->addSoundSourceFromFile("../media/impact.wav");
    irrklang::ISoundSource* muhahaSound = sndEngine->addSoundSourceFromFile("../media/muhaha.wav");
    
    //...
    
    irrklang::ISound* snd = sndEngine->play2D(backgroundSound, true, false, true);
    if(snd)	{ snd->setVolume(0.2f);	snd->drop(); }
    
    // etc.
    
    // ...
    
    device->drop();    // delete grafic engine
    sndEngine->drop(); // delete sound engine
    

    Fehlt hier noch etwas zur Performancesteigerung?

    Wie kann man eigentlich die Frames per Second auf einen fixen Wert (z.B. 60) begrenzen?

    IrrlichtDevice* device = createDevice(EDT_DIRECT3D9, dimension2d<s32>(800,600),32,0,0,true,&receiver); //vsync
    


  • Erhard Henkes schrieb:

    Ich habe dies mit dem Sound berichtigt, bringt aber wenig bezüglich Frames:

    // start Irrklang sound engine and load sound waves
    irrklang::ISoundEngine* sndEngine = irrklang::createIrrKlangDevice();
    irrklang::ISoundSource* backgroundSound = sndEngine->addSoundSourceFromFile("../media/IrrlichtTheme.ogg");
    irrklang::ISoundSource* shootSound = sndEngine->addSoundSourceFromFile("../media/impact.wav");
    irrklang::ISoundSource* muhahaSound = sndEngine->addSoundSourceFromFile("../media/muhaha.wav");
    
    //...
    
    irrklang::ISound* snd = sndEngine->play2D(backgroundSound, true, false, true);
    if(snd)	{ snd->setVolume(0.2f);	snd->drop(); }
    
    // etc.
    
    // ...
    
    device->drop();    // delete grafic engine
    sndEngine->drop(); // delete sound engine
    

    Fehlt hier noch etwas zur Performancesteigerung?

    Wie kann man eigentlich die Frames per Second auf einen fixen Wert (z.B. 60) begrenzen?

    IrrlichtDevice* device = createDevice(EDT_DIRECT3D9, dimension2d<s32>(800,600),32,0,0,true,&receiver); //vsync
    

    Höh? was macht diese zeile?

    irrklang::ISound* snd = sndEngine->play2D(backgroundSound, true, false, true);
    

    der sound wird doch anscheinend abgespielt, oder erzeugt play2D nur den sound und man muss ihn mittels des ISound objekts abspielen?

    eigentlich sollte sndEngine->play2D(...) doch genügen? [ohne jedesmal eine ISound instanz/pointer zu erzeugen)



  • Parameter vsync = true begrenzt z.B. bei mir auf 60 Hz (TFT-Monitor), also 60 Frames per Second.

    Den Rückgabewert bei Sound benötige ich kurz, lösche ihn dann aber sofort wieder:

    // Shoot sound
    irrklang::ISound* snd = sndEngine->play3D(shootSound, v, false, false, true); 
    if (snd)
    {
      snd->setMinDistance(1000.0f);
      snd->setVolume(1.0f);	
      snd->drop();
    }
    

    Ohne diese Anweisungen benötigt man den Pointer nicht.



  • Auf einem Rechner mit Vista 64bit kommt beim Versuch, das Spiel zu starten, eine Meldung bezüglich "Side-by-side-Konfiguration" als Fehler. Kennt das jemand?



  • Erhard Henkes schrieb:

    Fehlt hier noch etwas zur Performancesteigerung?

    Hast du dir mal http://www.ambiera.com/irrklang/docu/index.html#memoryPlayback durchgelesen?

    Ansonsten kann ich nur sagen: dein Code sieht *grauenvoll* aus, in so ziemlich jeder Hinsicht!

    Wenn du dich lediglich mit Irr* vertraut machen willst, dann erstelle ein Dutzend oder so Testapps die sich nur mit dem jeweiligen Aspekt den du unter die Lupe nehmen willst befassen (ähnlich den Demos oder Tutorials die solchen Libs/Frameworks/Engines oft beiliegen).

    Wenn du alles in einem (oder auch mehreren) Minispielen unter einen Hut bringen willst, wegen des Zusammenspiels oder des Erfolgserlebnisses oder was auch immer, dann mach es lieber gleich richtig. Schon deine 350 Zeilen sind ein unüberschaubarer Wust an Spaghettiausschuss, was denkst du wie das bei 10k+ LOC aussieht?

    edit: und ich meine wirklich Ausschuss:

    // bullet
                        IAnimatedMeshSceneNode* bullet = 0;
                        IAnimatedMesh* meshBullet = smgr->getMesh("../media/sphere.3ds");
                        if (meshBullet)
                        {
                             bullet = smgr->addAnimatedMeshSceneNode(meshBullet);
                             bullet->setPosition(v);
                             bullet->getMaterial(0) = matSpaceShip;
                             bullet->setMaterialFlag(EMF_LIGHTING, false);
                        }
                        bullet->setScale(vector3df( 1.0f, 0.3f, 0.3f ));
    

    Mit setup(...) und make_bullet(...) wäre sowas sicher nicht passiert, und auch wesentlich unkomplizierter.



  • @finix: wenn Du so oberschlau bist, dann erklär mir mal, wie man diese "Side-by-side-Konfiguration" bei Vista64 verschwinden lässt. Anregungen zu irrlicht/irrklang hole ich mir ab jetzt im englischen Forum, kann ich nur jedem empfehlen.



  • Oh Mann, Erhard, du solltest mich lange genug kennen um dich von meinem Diplomatieverständnis nicht so aus der Fassung bringen zu lassen.

    Willst du mir ernsthaft erzählen dass dein Code irgendwie auch nur annähernd toll aussieht? Dass mein Vorschlag bezüglich zu bevorzugender Vorgehensweise nicht gut ist? Dass es nicht geschickt wäre sich mit Sound Sources, bzw. der Funktionsweise der Libs und insbesondere der Frage wie Ressourcen gehandlet werden zu beschäftigen?

    Lass dich von mir bloß nicht vertreiben; wenn du das willst, halte ich mich da in Zukunft ganz raus, und der Rest hier ist ohnehin auf Kuschelkurs.

    Ach ja, zu deinem anderen Problem: ich habe weder VC, noch Vista, noch Vista64. Selbst wenn, müsste dir eigentlich klar sein dass man

    Erhard Henkes schrieb:

    eine Meldung bezüglich "Side-by-side-Konfiguration" als Fehler

    nicht allen ernstes eine Fehlerbeschreibung nennen kann. Dennoch habe ich spaßeshalber mal google angeschmissen, und via der ersten Ergebnisseite folgende Links zu Tage gefördert:

    http://www.softgames.de/forum/frage124357.html
    http://blogs.msdn.com/junfeng/archive/2006/04/14/576314.aspx



  • Na gut, ich werde deinem Sarkasmus Stand halten, ist vielleicht eine gute Übung.

    Dass der Code noch nicht vernünftig gekapselt und kompaktiert ist, ist klar. Davon, dass ich alles in Funktionen oder Member-Funktionen stecke, wird für mich momentan nichts besser.

    Sounds aus dem Speicher: sag mal, ist das wirklich Ernst, dass man seine wav-Datei mit bin2h.exe in eine Array umwandelt und dann als solches aus dem Speicher abspielt.

    Also impact.wav ==>

    unsigned int impact_size=3942;
    unsigned char impact[] = {
    0x52,0x49,0x46,0x46,0x5e,0x0f,0x00,0x00,0x57,0x41,0x56,0x45,0x66,0x6d,0x74,
    0x20,0x12,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x11,0x2b,0x00,0x00,0x11,0x2b,
    0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,0x66,0x61,0x63,0x74,0x04,0x00,0x00,
    0x00,0x2b,0x0f,0x00,0x00,0x64,0x61,0x74,0x61,0x2b,0x0f,0x00,0x00,0xab,0xa2,
    0x9d,0xb5,0xc3,0xa6,0x8e,0x94,0x9e,0x9d,0x9a,0x9f,0xac,0xb6,0xb2,0xa2,0xa2,
    0xbc,0xce,0xc9,0xab,0x81,0x7c,0x92,0xa0,0xa2,0xa1,0x9d,0x97,0xa3,0xb4,0xc2,
    0xc2,0xb6,0xb3,0xb7,0xb4,0xa4,0x94,0x89,0x88,0x85,0x86,0x90,0x97,0x9e,0xb3,
    0xc6,0xcc,0xce,0xc5,0xb5,0xa7,0xa2,0xa2,0xa5,0xa0,0x8e,0x79,0x78,0x88,0x8b,
    0x82,0x72,0x5f,0x44,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x3d,0x51,0x43,
    0x2f,0x2f,0x2f,0x2f,0x33,0x37,0x33,0x2f,0x34,0x43,0x58,0x72,0x94,0xb1,0xbe,
    0xc7,0xce,0xd0,0xd0,0xce,0xc2,0xa6,0x82,0x66,0x62,0x6e,0x77,0x86,0x8d,0x82,
    0x7e,0x83,0x87,0x90,0xa1,0xa4,0x9d,0x9e,0xae,0xbd,0xbf,0xb8,0xb0,0xad,0xac,
    0xa6,0xa1,0x96,0x7c,0x6e,0x76,0x79,0x73,0x70,0x6e,0x73,0x7b,0x79,0x7b,0x88,
    0x95,0x9d,0x9a,0x90,0x8c,0x87,0x86,0x91,0x97,0x89,0x82,0x98,0xa8,0x9f,0xa5,
    0xbd,0xc3,0xc4,0xcc,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xce,0xc4,0xb3,0xab,0x9f,0x7e,0x53,0x36,0x37,0x3f,0x40,0x3d,0x43,0x5b,
    0x5c,0x50,0x62,0x69,0x5b,0x56,0x56,0x46,0x34,0x3c,0x43,0x38,0x2f,0x7f,0x84,
    0x33,0x2f,0x2f,0x2f,0x2f,0x31,0x43,0x58,0x66,0x76,0x8a,0xa4,0xae,0xb0,0xac,
    0xa0,0x9e,0xa6,0xab,0xab,0xad,0xa9,0xa3,0xb1,0xc8,0xcc,0xc9,0xc4,0xbb,0xb3,
    0xb8,0xc5,0xcd,0xd0,0xd0,0xd0,0xd0,0xca,0xc4,0xc3,0xbe,0xaa,0x85,0x60,0x54,
    0x4d,0x38,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x3c,0x45,0x48,0x4e,0x4c,0x50,0x5e,
    0x73,0x72,0x5b,0x53,0x6b,0x76,0x57,0x47,0x4b,0x54,0x60,0x75,0x8f,0x95,0x9d,
    0xa9,0xae,0xb7,0xb1,0x9e,0x94,0x86,0x6f,0x5a,0x4c,0x4c,0x4c,0x3e,0x32,0x36,
    0x41,0x54,0x64,0x68,0x69,0x6f,0x6d,0x6c,0x81,0x93,0x94,0x8e,0x82,0x84,0x9a,
    0xb4,0xc2,0xc1,0xbd,0xb9,0xbc,0xc3,0xc2,0xc0,0xbd,0xb6,0xb4,0xb7,0xc0,0xcc,
    0xc3,0xb8,0xb8,0xb0,0xac,0xac,0xa0,0x85,0x67,0x6a,0x89,0x95,0x82,0x68,0x6c,
    0x81,0x8d,0x9b,0x92,0x74,0x60,0x5a,0x57,0x57,0x68,0x6f,0x6c,0x75,0x73,0x6b,
    0x76,0x85,0x88,0x86,0x8a,0x89,0x80,0x75,0x75,0x6f,0x5e,0x5f,0x6e,0x76,0x71,
    0x71,0x6f,0x5f,0x63,0x76,0x88,0x8f,0x8d,0x90,0x90,0x9a,0xa8,0xa7,0xa6,0xb7,
    0xca,0xd0,0xd0,0xcb,0xc1,0xc6,0xcd,0xcb,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xd0,0xd0,0xc4,0xbd,0xbd,0xb2,0x96,0x6c,0x54,0x5f,0x6d,0x63,0x5f,0x68,
    0x74,0x75,0x7c,0x7e,0x6f,0x75,0x8a,0x95,0x87,0x7e,0x88,0x8e,0x90,0x88,0x89,
    0x94,0x91,0x85,0x77,0x76,0x7f,0x8d,0x88,0x62,0x45,0x3a,0x36,0x33,0x2f,0x2f,
    0x7b,0xcb,0xd0,0xcb,0x7b,0x2f,0x2f,0x31,0x47,0x72,0x89,0x98,0x9f,0x8e,0x8f,
    0xa0,0xad,0xb9,0xc0,0xc6,0xce,0xd0,0xd0,0xd0,0xb8,0xa2,0xa7,0xa7,0xa3,0xa7,
    0xa6,0x94,0x8b,0x86,0x83,0x85,0x85,0x7d,0x71,0x6d,0x75,0x89,0x8e,0x89,0x92,
    0xa6,0xb6,0xc3,0xcc,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xc6,0xb7,0xb6,0xad,
    0x8f,0x6c,0x53,0x3d,0x39,0x39,0x2f,0x2f,0x74,0xc4,0xd0,0xd0,0xc4,0x74,0x2f,
    0x2f,0x2f,0x2f,0x3e,0x64,0x79,0x78,0x78,0x7e,0x88,0x89,0x8c,0x8e,0x8f,0x9a,
    0xa0,0x91,0x88,0x93,0x9a,0x9f,0x9d,0x93,0x92,0x94,0x88,0x83,0x87,0x7f,0x7b,
    0x7a,0x7d,0x90,0xa5,0xae,0xae,0xab,0xbd,0xd0,0xd0,0xc4,0xa9,0x99,0x98,0x8f,
    0x7f,0x7d,0x89,0x8b,0x85,0x8c,0x99,0xa9,0xc2,0xd0,0xd0,0xcc,0xbb,0xa3,0x90,
    0x92,0x9d,0x8e,0x72,0x58,0x45,0x40,0x4b,0x5e,0x62,0x62,0x63,0x63,0x64,0x5d,
    0x64,0x74,0x7a,0x84,0x8b,0x8b,0x89,0x8a,0x8f,0x94,0xa4,0xb9,0xba,0xaf,0xa2,
    0xa1,0xa5,0xa5,0xa0,0x95,0x89,0x82,0x8c,0x93,0x93,0x97,0x95,0x99,0xa9,0xb7,
    0xb6,0xb6,0xbe,0xb4,0xa7,0xaa,0xc0,0xd0,0xca,0xc0,0xb7,0xb8,0xb7,0xb1,0xbd,
    0xc1,0xae,0xa1,0xa5,0x94,0x7e,0x76,0x58,0x38,0x44,0x58,0x54,0x57,0x5f,0x67,
    0x72,0x84,0x94,0x93,0x9a,0xa2,0x9b,0x99,0xa2,0xa7,0xa8,0xad,0xa4,0x8c,0x83,
    0x82,0x89,0x8d,0x73,0x6d,0x76,0x6e,0x6a,0x7e,0x99,0x8f,0x7a,0x86,0x91,0x8b,
    0x82,0x84,0x89,0x79,0x6e,0x77,0x7b,0x66,0x52,0x47,0x50,0x62,0x64,0x56,0x40,
    0x33,0x2f,0x37,0x3e,0x36,0x2f,0x2f,0x2f,0x36,0x48,0x4e,0x43,0x3f,0x3b,0x39,
    0x47,0x55,0x59,0x65,0x69,0x67,0x82,0xa7,0xba,0xb5,0xb4,0xba,0xaf,0xa1,0x9b,
    0x97,0x94,0x8a,0x81,0x80,0x7e,0x82,0x89,0x8e,0x86,0x74,0x73,0x7b,0x7a,0x7f,
    0x88,0x89,0x88,0x90,0xb4,0xca,0xbd,0xc1,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xc7,0xb2,0xac,0xaa,0x98,
    0x92,0x8e,0x7b,0x75,0x6c,0x50,0x47,0x58,0x5d,0x52,0x4c,0x51,0x57,0x61,0x75,
    0x7b,0x72,0x78,0x81,0x7c,0x89,0x9b,0x92,0x8d,0x9b,0x98,0x85,0x81,0x7d,0x6d,
    0x77,0x91,0x91,0x82,0x82,0x7f,0x71,0x74,0x7a,0x70,0x66,0x6e,0x6e,0x5d,0x6b,
    0x88,0x88,0x89,0x93,0x7b,0x66,0x74,0x7e,0x7d,0x7e,0x7a,0x66,0x50,0x46,0x3f,
    0x4b,0x56,0x51,0x3f,0x2f,0x39,0x3f,0x48,0x55,0x46,0x35,0x3e,0x5e,0x71,0x62,
    0x58,0x61,0x66,0x6c,0x86,0x9f,0x9e,0x90,0x90,0x90,0x8c,0x85,0x7b,0x74,0x6e,
    0x7a,0x93,0xa5,0xa7,0x9c,0x8d,0x88,0x8a,0x86,0x83,0x76,0x5d,0x45,0x3b,0x3c,
    0x4b,0x63,0x69,0x68,0x6c,0x71,0x84,0x96,0xa3,0xa7,0x9b,0x9c,0xa6,0xa5,0x9e,
    0x90,0x8a,0x84,0x7e,0x83,0x8d,0x98,0xa1,0xb5,0xc8,0xce,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xbc,0xaa,0xa9,0x97,0x76,
    0x55,0x4a,0x48,0x46,0x57,0x6d,0x7e,0x91,0xb6,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xc7,0xbf,0xbd,0xb0,0x97,0x8d,0x8d,0x78,0x6e,0x6a,0x52,0x4e,0x5a,0x4a,
    0x34,0x39,0x4a,0x4f,0x61,0x83,0xa2,0xad,0xae,0xc0,0xcf,0xd0,0xca,0xb1,0x92,
    0x74,0x5c,0x4f,0x45,0x39,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,
    0x3c,0x48,0x47,0x3c,0x3a,0x46,0x4f,0x46,0x3b,0x34,0x2f,0x2f,0x36,0x87,0xd0,
    0xd0,0xd0,0xd0,0xd0,0xd0,0xca,0x79,0x2f,0x3e,0x65,0x87,0x9a,0x9c,0x99,0xa0,
    0xb2,0xc8,0xc7,0xb7,0xb9,0xbe,0xc5,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xcf,0xcd,0xc1,0xa4,0x95,
    0x97,0x94,0x9c,0x9f,0x86,0x6e,0x6f,0x7b,0x7b,0x7c,0x7b,0x77,0x87,0xab,0xc8,
    0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xc3,0xbb,0xc3,0xbf,0xa8,0x86,0x74,0x6a,
    0x62,0x5e,0x56,0x58,0x67,0x70,0x6a,0x69,0x6d,0x77,0x8a,0x92,0x89,0x7c,0x7b,
    0x8a,0x92,0x7c,0x6f,0x75,0x65,0x65,0x6f,0x68,0x77,0x88,0x81,0x74,0x75,0x89,
    0x8f,0x90,0x8d,0x74,0x73,0x80,0x78,0x6c,0x76,0x7e,0x6a,0x6c,0x89,0xa6,0xbc,
    0xb1,0xa1,0x94,0x97,0xab,0xa9,0xa8,0xa8,0x9a,0x8c,0x8f,0x95,0x85,0x78,0x7e,
    0x7d,0x6f,0x61,0x5e,0x57,0x3e,0x2f,0x2f,0x2f,0x38,0x3a,0x3c,0x4f,0x4e,0x48,
    0x46,0x4b,0x53,0x3e,0x2f,0x2f,0x45,0x57,0x47,0x43,0x4b,0x4b,0x4a,0x59,0x75,
    0x6e,0x5e,0x68,0x71,0x78,0x84,0x98,0xa8,0x9c,0x96,0xa5,0xac,0xaf,0xb6,0xb2,
    0xa4,0xa3,0xbc,0xd0,0xd0,0xc6,0xbc,0xc6,0xd0,0xc6,0xb6,0xab,0xa5,0x9b,0x95,
    0x99,0x8c,0x79,0x74,0x7d,0x94,0x9c,0x9a,0xa7,0xb4,0xb6,0xbc,0xc5,0xbc,0xa9,
    0xae,0xbe,0xbf,0xb0,0xa2,0xa5,0xa3,0x95,0x94,0x92,0x98,0x98,0x7a,0x6c,0x6c,
    0x72,0x81,0x89,0x88,0x77,0x7e,0xa0,0xae,0xb8,0xba,0xc2,0xcd,0xc5,0xc3,0xbb,
    0xaf,0xa1,0x9a,0xa5,0x91,0x69,0x58,0x5f,0x6e,0x77,0x81,0x84,0x76,0x77,0x8e,
    0x9c,0xaa,0xac,0xa4,0xa4,0x99,0x90,0x89,0x7e,0x8c,0x9e,0x9c,0x89,0x7d,0x83,
    0x72,0x74,0x8c,0x86,0x78,0x6c,0x6a,0x6b,0x65,0x6a,0x6d,0x6b,0x72,0x61,0x4f,
    0x75,0x9d,0x8b,0x5d,0x59,0x6b,0x67,0x7a,0x87,0x76,0x70,0x7f,0x87,0x87,0x9a,
    0x9c,0x89,0x84,0x8d,0x85,0x72,0x78,0x81,0x7b,0x6d,0x5b,0x55,0x61,0x68,0x4e,
    0x38,0x43,0x4b,0x48,0x50,0x5b,0x48,0x42,0x5f,0x6a,0x6a,0x67,0x58,0x53,0x63,
    0x62,0x52,0x62,0x7a,0x79,0x70,0x78,0x77,0x5f,0x5e,0x6c,0x68,0x5b,0x41,0x2f,
    0x2f,0x36,0x37,0x50,0x71,0x60,0x54,0x65,0x71,0x6c,0x79,0x94,0x8b,0x86,0x94,
    0x9c,0xa2,0xa0,0xa6,0xb0,0xac,0xa1,0x88,0x85,0x97,0x98,0xa0,0xae,0xac,0xa8,
    0xb5,0xbd,0xad,0xad,0xb5,0xb3,0xa1,0x87,0x8f,0xa9,0xb5,0xae,0xae,0xba,0xb9,
    0xb9,0xc6,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
    0xd0,0xbe,0xb1,0xb1,0xa6,0x9e,0xab,0xb7,0xad,0x9e,0x8b,0x91,0xad,0xbe,0xb7,
    0xa8,0x93,0x88,0x94,0x8f,0x87,0x80,0x6e,0x4e,0x34,0x2f,0x2f,0x2f,0x2f,0x37,
    0x87,0xd0,0xd0,0xd0,0xd0,0xc5,0x75,0x2f,0x2f,0x2f,0x36,0x36,0x34,0x4d,0x63,
    0x62,0x5c,0x48,0x36,0x44,0x52,0x4b,0x3c,0x37,0x47,0x51,0x56,0x64,0x77,0x83,
    0x84,0x99,0xbe,0xd0,0xd0,0xcb,0xc1,0xc1,0xb9,0xa6,0x98,0x88,0x7a,0x6a,0x68,
    0x6a,0x6c,0x7e,0x8c,0x97,0x9c,0xa1,0xa1,0xb5,0xcf,0xd0,0xc8,0xb8,0xc0,0xd0,
    0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xc7,0xc7,0xd0,0xc4,0xbc,0xbb,0xae,0xa8,
    0xae,0xab,0x9e,0xa0,0xaa,0xa1,0x9a,0x9b,0x87,0x78,0x7c,0x7b,0x73,0x6c,0x66,
    0x5a,0x49,0x3b,0x31,0x3c,0x4c,0x3f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
    0x2f,0x2f,0x2f,0x2f,0x31,0x31,0x2f,0x3a,0x5d,0x7e,0x8e,0x91,0x8a,0x8c,0x95,
    0x91,0x81,0x78,0x73,0x75,0x81,0x88,0x8e,0x8f,0x8f,0x8a,0x7b,0x73,0x88,0xa2,
    0xa8,0xac,0xb2,0xbb,0xca,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,
    0xcc,0xba,0x94,0x86,0x7e,0x6d,0x72,0x80,0x75,0x65,0x72,0x74,0x6d,0x8b,0xa0,
    0x9b,0x9d,0xaa,0xb4,0xaf,0xab,0x9e,0x90,0x90,0x96,0xa4,0x9a,0x72,0x4f,0x4b,
    0x69,0x81,0x8f,0x95,0x8d,0x95,0xa9,0xb1,0xb2,0xbb,0xb8,0xa4,0xa0,0xa0,0x94,
    0x92,0x90,0x88,0x92,0x9e,0x94,0x86,0x89,0x85,0x78,0x7a,0x84,0x7f,0x70,0x66,
    0x5f,0x62,0x77,0x84,0x7d,0x70,0x70,0x6a,0x69,0x79,0x65,0x3c,0x39,0x48,0x47,
    0x4b,0x5f,0x62,0x61,0x75,0x7f,0x7d,0x83,0x87,0x7e,0x8f,0xae,0xa8,0x9a,0x9d,
    0x9d,0x94,0x89,0x84,0x7b,0x80,0x92,0x92,0x86,0x8e,0x9c,0x9a,0x9d,0x9d,0x91,
    0x8b,0x89,0x7e,0x74,0x6c,0x64,0x62,0x4c,0x36,0x3f,0x59,0x64,0x65,0x77,0x84,
    0x84,0x84,0x83,0x85,0x83,0x7c,0x80,0x7d,0x64,0x65,0x7f,0x91,0xa0,0xab,0xb0,
    0xb8,0xc7,0xd0,0xd0,0xd0,0xc7,0xa8,0x8c,0x91,0xa5,0xb1,0xae,0x9e,0x89,0x7b,
    0x75,0x7a,0x86,0x89,0x96,0xa1,0x94,0x83,0x8b,0xa9,0xc4,0xca,0xb8,0xac,0xa8,
    0xa3,0xa6,0xaa,0xa7,0x95,0x8c,0x82,0x76,0x75,0x6b,0x69,0x56,0x38,0x3c,0x57,
    0x60,0x51,0x4d,0x47,0x44,0x55,0x69,0x6b,0x73,0x81,0x85,0x8f,0x99,0xad,0xc1,
    0xc2,0xb9,0xad,0xb9,0xbc,0x9e,0x91,0x9d,0xa5,0x8e,0x7e,0x82,0x7c,0x77,0x79,
    0x76,0x73,0x6a,0x5a,0x59,0x64,0x6e,0x71,0x69,0x61,0x69,0x76,0x7c,0x76,0x6e,
    0x76,0x76,0x69,0x69,0x6e,0x66,0x63,0x68,0x69,0x64,0x6b,0x72,0x6b,0x69,0x5f,
    0x68,0x7f,0x8c,0x8e,0x85,0x99,0xa6,0xa1,0xa6,0x95,0x85,0x82,0x87,0x92,0x89,
    0x8a,0x8a,0x82,0x81,0x73,0x6d,0x73,0x70,0x77,0x83,0x81,0x71,0x66,0x6d,0x72,
    0x72,0x6d,0x6e,0x86,0x96,0x90,0x85,0x83,0x9b,0xb6,0xba,0xbf,0xcb,0xd0,0xce,
    0xcb,0xc1,0xc0,0xbf,0xa9,0xa3,0xa2,0x94,0x8e,0x99,0xa3,0x98,0x94,0x98,0x8e,
    0x93,0x9d,0x9a,0x94,0x88,0x83,0x84,0x85,0x82,0x79,0x7e,0x7e,0x60,0x45,0x4c,
    0x5f,0x5e,0x57,0x4d,0x3d,0x40,0x4f,0x4f,0x52,0x66,0x70,0x6d,0x67,0x60,0x64,
    0x72,0x75,0x75,0x82,0x8f,0x91,0x97,0xb0,0xb6,0xa9,0xa8,0xae,0xab,0xa7,0xb5,
    0xac,0x88,0x83,0x8c,0x87,0x92,0x93,0x81,0x89,0x94,0x94,0x98,0xa4,0xa7,0xa3,
    0xa0,0x91,0x81,0x7e,0x8e,0xa2,0xa5,0x9e,0x9c,0xa2,0xa6,0xa2,0x94,0x8a,0x8f,
    0x90,0x94,0x9b,0x97,0xa6,0xc1,0xc4,0xb2,0xa5,0x9a,0x81,0x73,0x6f,0x60,0x4a,
    0x45,0x41,0x3e,0x4a,0x58,0x66,0x6b,0x64,0x6b,0x89,0x9b,0x94,0x91,0x8d,0x7a,
    0x80,0x96,0x9b,0x94,0x8a,0x75,0x59,0x5f,0x76,0x72,0x67,0x71,0x71,0x6a,0x70,
    0x85,0x9f,0xa0,0x8b,0x78,0x7e,0x8c,0x93,0x9a,0x9d,0xa1,0xa6,0x99,0x8a,0x91,
    0xa3,0x96,0x7a,0x72,0x63,0x5a,0x67,0x80,0x93,0x94,0x8f,0x89,0x87,0x91,0xa2,
    0xb8,0xc8,0xba,0x97,0x8d,0x9e,0xa5,0x99,0x8d,0x8a,0x7a,0x72,0x7f,0x83,0x86,
    0x97,0xa8,0xae,0xa2,0x93,0x98,0xa0,0x98,0x85,0x7d,0x78,0x74,0x75,0x72,0x63,
    0x57,0x56,0x56,0x52,0x55,0x53,0x40,0x36,0x42,0x4a,0x54,0x65,0x69,0x68,0x66,
    0x6e,0x7d,0x88,0x90,0x90,0x90,0x91,0x90,0x94,0x9f,0xaa,0xb0,0xb2,0xb7,0xb7,
    0xb1,0xb0,0xba,0xbf,0xad,0x98,0x8a,0x81,0x84,0x9c,0xb0,0xac,0xa5,0xa1,0x9b,
    0x95,0x9d,0xa8,0xa2,0xa1,0xaf,0xb4,0xa4,0x94,0x8f,0x8f,0x98,0x9c,0x87,0x7d,
    0x8a,0x8e,0x92,0x9d,0x9b,0x9c,0xaa,0x9e,0x83,0x8a,0x9d,0x99,0x85,0x7b,0x81,
    0x85,0x8d,0x8f,0x96,0xa0,0xa4,0xad,0xa3,0x8d,0x82,0x72,0x65,0x60,0x62,0x68,
    0x64,0x5c,0x4c,0x45,0x56,0x67,0x6d,0x5d,0x3d,0x2f,0x34,0x48,0x5b,0x60,0x56,
    0x4f,0x5e,0x78,0x8b,0x93,0x97,0x98,0x9e,0xae,0xad,0xa0,0x9f,0xa0,0x97,0x7d,
    0x6d,0x6d,0x66,0x6a,0x75,0x73,0x6a,0x66,0x74,0x7c,0x7d,0x88,0x7f,0x76,0x80,
    0x7e,0x76,0x82,0x91,0x83,0x66,0x5d,0x68,0x6e,0x78,0x80,0x85,0x85,0x7f,0x86,
    0x97,0xa4,0xa4,0xa4,0xa8,0xa6,0xaa,0xab,0x9d,0x9f,0xae,0xad,0x9c,0x98,0x9d,
    0x96,0xa9,0xbd,0xb4,0xb1,0xb3,0xb0,0xa4,0xa2,0x9f,0x8b,0x8a,0x91,0x94,0xa6,
    0xb2,0xac,0x95,0x87,0x89,0x83,0x80,0x76,0x6f,0x73,0x77,0x6c,0x59,0x5a,0x5d,
    0x61,0x66,0x64,0x6a,0x66,0x5a,0x62,0x7e,0x8e,0x86,0x84,0x88,0x8a,0x94,0xa3,
    0xa7,0x9b,0x9a,0xa0,0x90,0x8f,0x98,0x98,0xa2,0xa0,0x9a,0x9c,0xa4,0xa7,0xa5,
    0xb0,0xaf,0xa4,0xa0,0xa4,0xad,0xa6,0x94,0x8f,0x89,0x77,0x6d,0x72,0x71,0x69,
    0x6c,0x6d,0x67,0x6b,0x7e,0x85,0x87,0x89,0x7e,0x80,0x87,0x85,0x83,0x84,0x7c,
    0x67,0x63,0x6a,0x62,0x5c,0x65,0x61,0x5a,0x63,0x6c,0x73,0x76,0x7f,0x86,0x86,
    0x8c,0x92,0xa1,0xb2,0xc4,0xd0,0xc2,0xaa,0x9f,0x9d,0x94,0x7f,0x6f,0x70,0x6b,
    0x67,0x63,0x58,0x55,0x4f,0x48,0x3f,0x4d,0x6b,0x6a,0x5d,0x61,0x63,0x64,0x78,
    0x86,0x81,0x7b,0x7f,0x7f,0x79,0x84,0x88,0x7b,0x75,0x6f,0x6d,0x74,0x7c,0x82,
    0x7b,0x6f,0x6d,0x70,0x77,0x79,0x8a,0x94,0x8a,0x94,0xa0,0xa4,0xb1,0xb7,0xb1,
    0xb4,0xc5,0xcf,0xcf,0xd0,0xd0,0xd0,0xc8,0xbc,0xbb,0xc2,0xc4,0xbf,0xb0,0x98,
    0x8c,0x92,0x9b,0x8d,0x76,0x76,0x76,0x72,0x76,0x7a,0x7e,0x83,0x93,0x94,0x87,
    0x87,0x86,0x91,0x9f,0x9c,0x86,0x77,0x88,0x8b,0x7e,0x83,0x80,0x77,0x79,0x7a,
    0x73,0x6b,0x6b,0x6d,0x79,0x82,0x71,0x62,0x67,0x6d,0x70,0x6f,0x66,0x5a,0x55,
    0x53,0x47,0x3a,0x38,0x38,0x3a,0x3a,0x40,0x50,0x52,0x50,0x5b,0x6f,0x86,0x91,
    0x93,0x9a,0xa0,0xb1,0xb9,0xb4,0xb7,0xaf,0x9e,0x95,0x9b,0xa9,0xb5,0xbc,0xb1,
    0xad,0xc2,0xd0,0xca,0xc2,0xbe,0xba,0xae,0x98,0x88,0x83,0x83,0x80,0x70,0x5d,
    0x51,0x52,0x5c,0x5a,0x56,0x5d,0x65,0x66,0x6b,0x79,0x84,0x8c,0x94,0x98,0x97,
    0x95,0x8d,0x87,0x8c,0x8c,0x84,0x80,0x86,0x8d,0x8f,0x8d,0x8f,0x9c,0xa0,0x9e,
    0xa4,0xad,0xad,0xa8,0xae,0xb3,0xb4,0xbc,0xb9,0xb4,0xb5,0xaf,0xae,0xb8,0xb9,
    0xaa,0x98,0x8c,0x7c,0x73,0x76,0x71,0x69,0x68,0x62,0x56,0x52,0x55,0x55,0x60,
    0x75,0x7c,0x7d,0x8a,0x8d,0x93,0xac,0xb8,0xb6,0xae,0xa6,0xa7,0xa6,0xa4,0xab,
    0xa9,0xa6,0xa2,0x9c,0x9f,0x98,0x93,0x92,0x87,0x75,0x67,0x6b,0x6b,0x65,0x6e,
    0x6c,0x5d,0x66,0x80,0x8b,0x87,0x87,0x8d,0x90,0x96,0x99,0x94,0x95,0x91,0x88,
    0x87,0x86,0x82,0x7c,0x78,0x76,0x69,0x62,0x61,0x56,0x4e,0x49,0x47,0x40,0x36,
    0x35,0x32,0x2f,0x2f,0x3f,0x5a,0x66,0x6e,0x7a,0x8a,0xa0,0xb7,0xbc,0xb3,0xb0,
    0xb3,0xb4,0xa9,0x99,0x88,0x7c,0x7e,0x7d,0x76,0x7c,0x84,0x8b,0x8f,0x91,0x93,
    0x98,0xa4,0xa9,0xa2,0x9f,0xa5,0xa8,0xa3,0xa4,0xa1,0x91,0x88,0x84,0x7c,0x7c,
    0x7b,0x74,0x72,0x73,0x6a,0x61,0x60,0x62,0x61,0x68,0x72,0x6e,0x6a,0x72,0x85,
    0x97,0xa1,0xab,0xab,0xae,0xbb,0xc3,0xca,0xd0,0xcc,0xc2,0xb0,0xa1,0x96,0x8a,
    0x84,0x80,0x7c,0x76,0x70,0x73,0x7c,0x88,0x91,0x94,0x8d,0x77,0x6b,0x70,0x78,
    0x77,0x70,0x71,0x70,0x73,0x7e,0x8c,0x99,0xa1,0x9f,0x97,0x90,0x92,0x97,0x9b,
    0x9f,0x9b,0x9d,0xa2,0xa6,0xa8,0xa6,0xa3,0x99,0x90,0x8c,0x87,0x7d,0x6c,0x5c,
    0x57,0x50,0x46,0x49,0x51,0x50,0x4f,0x51,0x57,0x5d,0x65,0x6c,0x6e,0x71,0x72,
    0x78,0x88,0x8e,0x92,0x98,0x8c,0x7b,0x76,0x7a,0x80,0x83,0x81,0x7c,0x7c,0x7d,
    0x76,0x7a,0x80,0x80,0x85,0x88,0x8c,0x88,0x8c,0x9a,0x9a,0x9b,0xa1,0x9f,0x97,
    0x95,0x9e,0xa0,0x9e,0xa7,0xa9,0x9b,0x92,0x95,0x9f,0x9e,0x93,0x92,0x88,0x76,
    0x71,0x71,0x73,0x7a,0x7f,0x7f,0x7f,0x80,0x82,0x88,0x8d,0x89,0x82,0x83,0x87,
    0x87,0x80,0x7d,0x81,0x81,0x81,0x84,0x84,0x80,0x7f,0x88,0x96,0x99,0x94,0x91,
    0x90,0x93,0x9c,0xa1,0xa5,0xa7,0xa5,0xa3,0xa1,0xa4,0xa9,0xa4,0x9e,0x9e,0xa0,
    0xa0,0xa0,0x9d,0x95,0x94,0x9a,0x94,0x82,0x75,0x75,0x79,0x75,0x6c,0x67,0x63,
    0x60,0x61,0x65,0x67,0x65,0x68,0x70,0x75,0x76,0x72,0x72,0x79,0x7d,0x7b,0x7a,
    0x7b,0x77,0x70,0x71,0x73,0x74,0x78,0x77,0x6f,0x69,0x73,0x84,0x87,0x86,0x87,
    0x86,0x8c,0x94,0x9c,0x99,0x91,0x91,0x92,0x93,0x92,0x91,0x95,0x96,0x8d,0x82,
    0x83,0x8c,0x91,0x8c,0x8e,0x92,0x8e,0x92,0x99,0x99,0x93,0x99,0xa9,0xa9,0xa8,
    0xa6,0x9e,0x9e,0xa0,0xa3,0x9d,0x94,0x90,0x86,0x82,0x84,0x87,0x88,0x82,0x82,
    0x8c,0x94,0x98,0x96,0x9a,0x9a,0x95,0x9a,0x9b,0x95,0x90,0x86,0x7a,0x77,0x7d,
    0x7d,0x7b,0x83,0x89,0x83,0x81,0x86,0x8c,0x8f,0x8d,0x8c,0x8a,0x8b,0x8a,0x83,
    0x7f,0x7b,0x74,0x74,0x7a,0x7e,0x78,0x6e,0x70,0x72,0x74,0x79,0x74,0x6e,0x6d,
    0x72,0x78,0x7b,0x7d,0x78,0x7a,0x83,0x86,0x8c,0x95,0x96,0x95,0x94,0x90,0x8b,
    0x8b,0x90,0x8a,0x7d,0x7a,0x7c,0x7e,0x7f,0x82,0x86,0x84,0x83,0x87,0x87,0x85,
    0x83,0x83,0x80,0x7c,0x7b,0x78,0x79,0x7f,0x82,0x80,0x7f,0x80,0x7f,0x7f,0x83,
    0x89,0x89,0x82,0x7b,0x73,0x6d,0x6d,0x6e,0x71,0x71,0x71,0x76,0x80,0x8f,0x97,
    0x9e,0xaa,0xb4,0xbc,0xc1,0xbd,0xb3,0xaa,0xa9,0xac,0x9d,0x88,0x82,0x7f,0x7e,
    0x86,0x8c,0x81,0x75,0x76,0x73,0x6f,0x6a,0x62,0x59,0x55,0x5b,0x67,0x6e,0x70,
    0x71,0x73,0x76,0x72,0x74,0x7e,0x81,0x7e,0x81,0x8a,0x8e,0x8a,0x85,0x84,0x87,
    0x84,0x7c,0x76,0x72,0x6d,0x6a,0x6a,0x6a,0x6d,0x72,0x77,0x81,0x8b,0x94,0x9b,
    0xa3,0xb0,0xb9,0xba,0xb8,0xb2,0xa9,0xa3,0x9e,0x9e,0x9f,0x9e,0x97,0x8f,0x94,
    0x9c,0x9a,0x94,0x89,0x82,0x7f,0x7d,0x7a,0x76,0x78,0x7d,0x7e,0x83,0x8a,0x93,
    0x9a,0x9e,0xa3,0xa9,0xaf,0xb1,0xae,0xaf,0xb4,0xaf,0x9f,0x92,0x91,0x8c,0x81,
    0x7e,0x7d,0x7a,0x76,0x78,0x7c,0x79,0x7a,0x7e,0x82,0x86,0x84,0x82,0x84,0x8b,
    0x90,0x90,0x8f,0x89,0x85,0x8a,0x8e,0x8c,0x88,0x8a,0x8b,0x8b,0x8b,0x90,0x92,
    0x8b,0x83,0x7f,0x7f,0x7c,0x79,0x7d,0x7d,0x75,0x6b,0x68,0x68,0x65,0x67,0x67,
    0x5e,0x5a,0x60,0x66,0x6a,0x71,0x77,0x78,0x7c,0x81,0x87,0x8e,0x91,0x95,0x94,
    0x8e,0x8c,0x8b,0x86,0x81,0x81,0x81,0x7b,0x73,0x70,0x70,0x71,0x71,0x70,0x74,
    0x7d,0x88,0x8a,0x86,0x8c,0x94,0x95,0x93,0x96,0x9a,0x9e,0x9b,0x96,0x97,0x96,
    0x97,0x99,0x9a,0x9e,0xa1,0xa4,0xa1,0x9b,0xa0,0xa7,0xa3,0x98,0x8a,0x85,0x84,
    0x85,0x86,0x82,0x80,0x82,0x88,0x8e,0x90,0x93,0x96,0x93,0x94,0x9c,0xa0,0x9c,
    0x95,0x8f,0x8a,0x89,0x87,0x83,0x7b,0x79,0x79,0x74,0x71,0x72,0x75,0x72,0x68,
    0x5e,0x5a,0x5e,0x5c,0x58,0x5a,0x5e,0x62,0x69,0x75,0x7c,0x81,0x8d,0x9a,0xa3,
    0xad,0xb5,0xb5,0xb5,0xba,0xb7,0xaf,0xa9,0xa5,0x9d,0x95,0x91,0x8b,0x83,0x80,
    0x7d,0x78,0x75,0x72,0x70,0x70,0x72,0x72,0x6d,0x6e,0x72,0x75,0x78,0x7b,0x7b,
    0x79,0x7b,0x7a,0x77,0x78,0x78,0x7a,0x7b,0x79,0x79,0x7e,0x83,0x80,0x7c,0x7b,
    0x7e,0x82,0x84,0x83,0x86,0x8a,0x8c,0x8c,0x8f,0x95,0x97,0x97,0x99,0x96,0x91,
    0x94,0x95,0x93,0x96,0x9c,0xa0,0xa1,0xaa,0xaf,0xad,0xb2,0xb0,0xa7,0xa3,0xa1,
    0x9e,0x99,0x99,0x96,0x8b,0x86,0x85,0x86,0x88,0x87,0x80,0x77,0x75,0x7a,0x7c,
    0x7e,0x81,0x84,0x87,0x89,0x8c,0x91,0x96,0x9a,0x9a,0x95,0x94,0x95,0x8f,0x84,
    0x81,0x82,0x7f,0x78,0x74,0x72,0x6e,0x6c,0x6a,0x67,0x63,0x60,0x60,0x63,0x66,
    0x66,0x63,0x65,0x6a,0x6d,0x72,0x77,0x7b,0x7d,0x7e,0x80,0x80,0x83,0x89,0x8a,
    0x8a,0x8f,0x91,0x92,0x96,0x94,0x8e,0x8c,0x8e,0x8e,0x8c,0x8b,0x85,0x7e,0x7d,
    0x7e,0x7b,0x75,0x72,0x6e,0x6e,0x72,0x74,0x72,0x72,0x75,0x74,0x72,0x74,0x73,
    0x72,0x77,0x7c,0x7a,0x79,0x80,0x85,0x89,0x8e,0x93,0x97,0x99,0x9c,0x9c,0x9f,
    0xa6,0xa7,0xa4,0xa3,0xa6,0xa6,0xa5,0xa9,0xab,0xac,0xae,0xae,0xad,0xaf,0xb2,
    0xb4,0xb0,0xa8,0x9e,0x94,0x90,0x8e,0x87,0x83,0x81,0x78,0x72,0x75,0x76,0x6e,
    0x6c,0x70,0x72,0x77,0x7b,0x7e,0x81,0x85,0x8b,0x8f,0x90,0x92,0x96,0x99,0x9a,
    0x98,0x92,0x91,0x8f,0x8f,0x92,0x91,0x8c,0x86,0x86,0x84,0x7e,0x7e,0x7b,0x75,
    0x71,0x70,0x70,0x72,0x79,0x7e,0x7a,0x7d,0x85,0x89,0x8c,0x91,0x98,0x9c,0x9e,
    0xa2,0xa4,0xa4,0xa4,0xa6,0xa8,0xa7,0xa3,0x9c,0x97,0x93,0x8b,0x83,0x7f,0x7d,
    0x7a,0x77,0x70,0x69,0x65,0x67,0x6a,0x68,0x67,0x68,0x6d,0x70,0x6e,0x6d,0x70,
    0x76,0x78,0x75,0x72,0x72,0x70,0x6b,0x65,0x62,0x62,0x65,0x69,0x6a,0x6c,0x73,
    0x7a,0x80,0x84,0x8b,0x91,0x95,0x9b,0x9f,0x9e,0x9f,0xa0,0xa1,0xa3,0xa1,0x9d,
    0x99,0x96,0x94,0x93,0x90,0x8b,0x8a,0x8d,0x90,0x91,0x91,0x92,0x90,0x8c,0x8f,
    0x91,0x8b,0x86,0x85,0x82,0x7f,0x7b,0x76,0x73,0x72,0x71,0x6e,0x6e,0x6f,0x70,
    0x73,0x79,0x7d,0x7d,0x7e,0x84,0x87,0x84,0x86,0x89,0x89,0x8c,0x8f,0x8f,0x8c,
    0x8a,0x8a,0x8b,0x90,0x95,0x96,0x98,0x9a,0x99,0x98,0x9a,0xa1,0xa5,0xa2,0xa3,
    0xa9,0xae,0xb2,0xb4,0xb1,0xaa,0xa6,0xa4,0xa0,0x9e,0x9a,0x92,0x89,0x84,0x82,
    0x83,0x81,0x7f,0x7b,0x77,0x75,0x76,0x7b,0x7f,0x7e,0x7c,0x7e,0x82,0x85,0x85,
    0x84,0x82,0x7f,0x7f,0x7e,0x7b,0x78,0x73,0x6e,0x6b,0x6b,0x6e,0x6f,0x6c,0x69,
    0x65,0x66,0x68,0x6c,0x72,0x74,0x72,0x6d,0x6d,0x72,0x74,0x76,0x77,0x77,0x78,
    0x7b,0x7d,0x7d,0x7e,0x82,0x85,0x86,0x89,0x8d,0x8e,0x8d,0x8f,0x90,0x92,0x93,
    0x94,0x96,0x97,0x98,0x99,0x99,0x96,0x93,0x94,0x93,0x91,0x8d,0x8a,0x88,0x87,
    0x8a,0x8c,0x8c,0x8d,0x8c,0x8c,0x90,0x93,0x95,0x98,0x97,0x97,0x9b,0x9f,0x9e,
    0x9d,0xa0,0x9e,0x99,0x95,0x93,0x92,0x91,0x8d,0x86,0x81,0x80,0x7d,0x79,0x78,
    0x78,0x77,0x76,0x76,0x75,0x74,0x76,0x7a,0x7e,0x82,0x84,0x88,0x8e,0x93,0x98,
    0x9a,0x9c,0x9d,0x9c,0x9b,0x9a,0x96,0x94,0x91,0x8f,0x8d,0x89,0x85,0x82,0x81,
    0x81,0x80,0x7d,0x78,0x77,0x76,0x76,0x79,0x79,0x75,0x71,0x70,0x71,0x74,0x77,
    0x77,0x74,0x72,0x73,0x74,0x74,0x75,0x76,0x77,0x77,0x79,0x7a,0x7b,0x7d,0x7f,
    0x80,0x81,0x82,0x85,0x85,0x85,0x86,0x84,0x83,0x84,0x83,0x80,0x7f,0x82,0x82,
    0x80,0x82,0x83,0x82,0x83,0x85,0x87,0x89,0x8c,0x8f,0x8f,0x91,0x92,0x92,0x94,
    0x96,0x96,0x97,0x98,0x96,0x94,0x95,0x96,0x93,0x91,0x92,0x00
    };
    

    z.B. in einer header-Datei impact.h und dann mittels ... addSoundSourceFromMemory(...)? Warum findet man dies nur im Example 03 und sonst nirgends?



  • Ich habe "impact.wav" auf diese Weise in den Speicher transferiert und mittels

    irrklang::ISoundSource* shootSound      = sndEngine->addSoundSourceFromMemory(impact,impact_size,"impact");
    //...
    irrklang::ISound* snd = sndEngine->play3D("impact", v, false, false, true);
    

    abgespielt, bringt keinen erkennbaren Vorteil. FPS geht beim Ballern offensichtlich aus anderen Gründen in den Keller. Daher ist die Beschränkung mit vsync=true garnicht so verkehrt.

    Im englischen Forum findet man dazu merkwürdigerweise nichts.



  • Erhard Henkes schrieb:

    Dass der Code noch nicht vernünftig gekapselt und kompaktiert ist, ist klar. Davon, dass ich alles in Funktionen oder Member-Funktionen stecke, wird für mich momentan nichts besser.

    Abgesehen davon dass man auch gleich ordentlich loslegen kann, bezweifele ich das, wie schon gesagt. /IMAO

    Erhard Henkes schrieb:

    Sounds aus dem Speicher: sag mal, ist das wirklich Ernst, dass man seine wav-Datei mit bin2h.exe in eine Array umwandelt und dann als solches aus dem Speicher abspielt.

    Ich kenn mich mit Irr* leider nicht aus, sonst könnte ich dir da sicher besser weiterhelfen. Ein weiterer, kurzer Blick in die Doku verrät auch dass ich tatsächlich nicht addSoundSourceFromMemory meinte; mich hat lediglich der Beispielname des Sounds, der wie ein Dateiname aussah, verwirrt.

    Du könntest mal schauen welcher irrklang::E_STREAM_MODE verwendet wird, bzw. einfach mal testen ob ESM_NO_STREAMING ("Loads the whole audio data into the memory", woran ich eigentlich mit der MemorySource dachte) etwas bringt (zweiter Parameter von addSoundSourceFromFile ). Den dritten, preload , auf true zu setzen wäre sicher auch nicht verkehrt, sollte sich aber nicht auf das Performanceproblem auswirken.

    Der generelle Tip aber war dich einfach mal genauer mit dem Aufbau der Lib auseinander zu setzen, und nicht wieder und wieder irgendwelche Ressourcen neu zu laden oder Systeme neu zu initialisieren.



  • Der generelle Tip aber war dich einfach mal genauer mit dem Aufbau der Lib auseinander zu setzen, und nicht wieder und wieder irgendwelche Ressourcen neu zu laden oder Systeme neu zu initialisieren.

    Ja, da hast Du Recht. Bei Irrklang hatte ich das nicht getan, weil ich dachte, dass dies bei einer "kommerziellen" (nur frei für private Anwendungen) Software bereits optimiert ist.

    Inzwischen weiß ich, dass das nicht viel bringt. Performancesteigerung liegt in der Grafik begraben. 😉


Anmelden zum Antworten