Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
SDL: Hry nejen pro Linux (19)

Radek
Radek (neregistrovaný)
8. 7. 2005 18:25

SDL pod Widlema

Ahoj,
clanek me velmi zaujal, tak sem si do DEV-C++ doinstaloval balicek SDL_mixer-1.2.6-1mol.DevPak a vse perfektne fakci, az na... ;)
Pri svem laborovani jsem narazil na par zajimavosti, na ktere si neumim 100%-ne vydedukovat odpoved, tak kdyby nekdo vedel, rad bych byl o neco chytrejsi...

1) Kdyz u meho programu mam knihovny, nainstalovane balickem DevPak: SDL.dll (verze??? - 1.23MB) a SDL_mixer.dll (verze??? - 1,68MB), program nahlasi chybu a padne na hubu... Kdyz jsem stahl nejaky dll z netu, tak sem to nakonec rozchodil, ale pri stisku klavesy reagoval program asi az po 1 vterine - pri programovani her nepouzitelne. Nakonec jsem od nejake hry zkopiroval SDL.dll (1.2.5.0 - 220kB) a k tomu stahl z netu SDL_mixer.dll (1.2.6.0 - 308kB) - nevi nekdo, jake verze dll by se meli pouzivat a kde je stahovat?

2) Kdyz mam pustenou aplikaci a program Winamp je v popredi, v mem programu s SDL_mixerem se vsechny kanaly samy pauznou a kdyz je v popredi muj program, tak se zase rozjedou. Nevi nekdo proc?

3) Kdyz v 6-ti kanálech prehravam hudbu, spravce uloh ukazuje, ze program zabira neco pres 100MB v RAM - ale kdyz se program za staleho prehravani minimalizuje, najednou zabira jen asi 2MB a postupne tato hodnota roste... Nevi nekdo proc?
Oldřich Jedlička
8. 7. 2005 21:49

Re: SDL pod Widlema

Pouze k bodu 2). Nevidel jsem zdrojaky SDL, ale s problemem jsem se setkal. Zakopany pes je nejspis v inicializaci DirectSound knihovnou SDL, protoze zde se funkce SetCooperativeLevel vola s parametrem, ktery urcuje, jak se ma spolupracovat s ostatnimi aplikacemi. Kdyz se pouzije DSSCL_EXCLUSIVE, tak DirectSound hraje pouze, kdyz je okno aplikace v popredi, lepsi je pouzit DSSCL_PRIORITY. Jeste to souvisi s nastavenim CreateSoundBuffer a parametrem DSBCAPS_GLOBALFOCUS a DSBCAPS_STICKYFOCUS (tenhle je ten spravny pro hrani na pozadi).

Nemuzu rict vic, ponevadz pres GPRS si moc srandy s hledanim informaci neuziju. Vice viz www.msdn.com a www.google.com. Poznamka: s SDL, ani s DirectSound jsem v zivote nepracoval, takze informace mohou byt nepresne a zavadejici :-)
Radek xxx
9. 7. 2005 17:04

Re: SDL pod Widlema

Dik za vysvetleni. Me to nejak netrapi, ze bych to musel resit, jen sem si toho vsiml a nevedel proc to tak je... R.
Michal Molhanec aura:100
9. 7. 2005 2:51

Re: SDL pod Widlema

Vami popisovany devpak je urcen pro pouziti s timto SDL devpakem: http://devpaks.org/details.php?devpak=12 (SDL.dll 248745 bajtu). SDL_mixer devpak sam o sobe zadne SDL.dll neobsahuje, pravdepodobne se k vam dostalo jinudy a proto to dohromady nefunguje.

SDL_mixer v dane devpaku je ve verzi 1.2.6, to se snadno pozna z jeho nazvu :-)

SDL devpak nainstaluje sve SDL.dll do dev-cpp\bin
SDL_mixer depvak nainstaluje SDL_mixer.dll a smpeg.dll do dev-cpp\dll (a Windows\system32)
Radek xxx
9. 7. 2005 17:00

Re: SDL pod Widlema

Ano, je to logicke a take jsem to takto resil. Program se sice rozjede, ale pri stisku klavesnice se ozve zvuk se zpozdenim asi jedne vteriny! Proto jsem badal proc, a kdyz jsem nahodou nakopiroval jinou dll od nejake hry, tak se problem vyresil... Ale to je jedno, chodi to pekne, kdyz se s tim clovek trocha popere...
Radek.
Michal Turek
10. 7. 2005 23:19

Re: SDL pod Widlema

Zdravim.

Já jsem oboje kompiloval a všechno fungovalo tak, jak má, takže s timhle neporadím.

To sekundové zpoždění bude s největší pravděpodobností dáno velikostí audio bufferu - poslední parametr Mix_OpenAudio(). Čím větší bude tato hodnota, tím delší zpoždění. Aktualizace (např. požadavek na přehrávání/zastavení) se, zjednodušeně řečeno, nedělají při volání funkce, anobrž ;) až v době, kdy zvukovka požádá o další data. Zkuste tam zadat číslo 512 a mělo by to pomoci. Naproti tomu, pro hudbu by měl být buffer spíš větší, aby nedocházelo k jejímu trhání, když aplikace nestíhá - předpokládám, že právě proto jsou v mixeru zvuky a hudba oddělené (možná blud). Možná jsem to měl zdůraznit i u mixeru, myslím, že jsem to psal už předtím u SDL audia.

Jujda, 100 MB paměti jenom na hudbu, to je opravdu ažaž... ;) Pro hudbu je speciální kanál, ve kterém se dekóduje za chodu. Zkuste si nahrát do obyčejného zvukového kanálu třímegový ogg a stopněte si, jak dlouho to bude trvat.

Doufám, že je alespoň půlka z toho, co jsem teď napsal, pravda ;) Neměl bych to říkat, ale zvuky jsem se učil za chodu až při psaní článku :(
Radek xxx
11. 7. 2005 18:10

Re: SDL pod Widlema

Ja su vuuuuul!!! Ja ve funkci pro prehravani zvuku prehravam hudbu! No tak se moc omlouvam. To kvantum zabrane pameti se uz timto vysvetluje...

Ale i kdyz jsem vse dal do poradku a ve funkci pro prehravani zvuku prehravam pouze kratke zvuky, tak s knihovnami nainstalovanymi balicem DevPak - sdl.dll verze 1.2.8 a sdl_mixer.dll verze 1.2.6 stale po stisku klavesy trva priblizne vterinu, nez se ozve zvuk. Pri pouhem nakopirovani sdl.dll verze 1.2.5.0 - kterou jsem nasel u nejake hry, vse funguje perfektne... Ale to je jen takova blbuskta...

Dik moc za nakopnuti, Radek.
Michal Molhanec aura:100
12. 7. 2005 8:09

Re: SDL pod Widlema

Taky mi to dela :-( Doporucuji pouzivat oficialni build DLLka http://www.libsdl.org/release/SDL-1.2.8-win32.zip ktery se da najit vzdy pro posledni verzi SDL na strance http://www.libsdl.org/download-1.2.php v sekci Runtime Libraries\Win32
Radek xxx
12. 7. 2005 11:44

pro Michal Molhanec - prehravani MP3

Uplne prvni dotaz v teto diskuzi je, jestli existuje nejaka verze sdl_mixeru pod widle, co plne podporuje prehravani MP3. Ja sem si stahl DevPak SDL_mixeru a tam je SDL_mixer.dll, ktera ma asi 1,5MB. Prislo mi to hodne moc - tak sem dumal proc asi, zkusil jsem prehrat MP3ku a hups, ono to jelo ;) - takze doporucuji!!!

Jinak s tim prehravanim hudby v kanalech zvkuku, to jsem se zas jednou s necim "predvedl"! ;)
Michal Molhanec aura:100
12. 7. 2005 13:46

Re: pro Michal Molhanec - prehravani MP3

Ehm, díky za snahu, ale já jsem autor SDL_mixer devpaku :-) MP3 sice přehrává, ale bohužel se spoustou rušivých artefaktů. BTW vlastní jádro MP3 přehrávače je v SMPEG.dll, SDL_mixer.dll je tak velkej jenom protože není stripnutej.

Nicméně díky za zájem.
Michal Molhanec aura:100
13. 7. 2005 1:31

Re: pro Michal Molhanec - prehravani MP3

Dobrá věc se podařila, konečně se mi povedlo zkompilovat verzi, která přehrává MP3 bez problémů, aktualizovaný devpak je na obvyklém místě http://devpaks.org/details.php?devpak=6
Radek xxx
13. 7. 2005 16:13

Re: pro Michal Molhanec - prehravani MP3

Super! Velice povedena knihovna a ten novy DevPak taky!

Stahl se si ho a z adresy http://www.libsdl.org/release/SDL-1.2.8-win32.zip jsem stal sdl.dll a uz vse frci na 100% ;) (pred tim mi s nejakou sdl.dll bud vpoho jely udalosti, ale vytuhl hlavni panel ve widlich, nebo s jinou sdl.dll nevytuhl hlavni panel, ale udalosti byly s 1s zpozdenim)

PS: jeste doporucuji programem upx.exe snizit velikost dll, maji pak smesnou velikost...

Dik moc vsem za rady a nakopnuiti, Radek.
jan16
jan16 (neregistrovaný)
2. 2. 2007 11:28

Re: SDL pod Widlema

Já bych moc nedoporučoval 512, když jsem to testoval, tak doporučuju takhle: 512 - minimálně, 1024 - dobrý do her, 2048 - eště se ta odezva dá přežít + do her, 4096 - jenom do přehrávačů, ne do her, 8192 - zbytečně moc :)
Zasílat nově přidané příspěvky e-mailem