Hlavní navigace

Frogs - hra využívajúca SDL

Martin Hudák

Týmto článkom by som chcel predstaviť jednoduchú hru, ktorá využíva knižnicu SDL, a samozrejme aj samotnú knižnicu. Takže nechcem dopodrobna rozpitvávať jedno ani druhé. Skôr ako o hru sa jedná o súhrn mojich znalostí a skúseností s týmto API.

Týmto článkom by som chcel predstaviť jednoduchú hru, ktorá využíva knižnicu SDL, a samozrejme aj samotnú knižnicu. Takže nechcem dopodrobna rozpitvávať jedno ani druhé. Skôr ako o hru sa jedná o súhrn mojich znalostí a skúseností s týmto API. Keby mal však niekto záujem vedieť aj čosi viac, môže mi napísať na hudo@centrum.sk. Ak by bol záujem dosť veľký, mohol by som vyplodiť na tejto stránke aj nejaké podrobnejšie tutoriály v SDL.

Čo je SDL?

SDL je knižnica určená pre programovací jazyk C, v ktorej sa s obľubou vytvárajú rôzne hry, demá, MPEG prehrávače atď. Je to dané hlavne jej jednoduchosťou a radou výhod. Medzi ne patrí napr. aj jej dostupnosť na takmer všetkých používaných platformách (Linux, BeOS, MacOS, Win32, Solaris, IRIX, FreeBSD). To so sebou prináša obrovské možnosti, lebo aplikácie písané pod touto knižnicou možno skompilovať na každej platforme s minimálnymi alebo žiadnymi zásahmi do zdrojového kódu. Spomeňte si napr. na hry ako Unreal Tournament alebo Quake 3. Tieto hry sú portované do Linuxu práve pomocou SDL. Ako je to možné? SDL vie totiž spolupracovať s OpenGL. Vtip je v tom, že základné nastavenia, inicializáciu a prácu s udalosťami necháme na SDL a ostatné už je na OpenGL. To znamená, že netreba poznať už API konkrétneho operačného systému. Tým sa samozrejme zabezpečí aj jednoduchší prenos aplikácie do iného systému. Mnohí môžu namietať, že by bolo jednoduchšie použit pre OpenGL knižnicu GLUT. SDL však ponúka aj širšie možnosti. Príkladom môže byť doplnková knižnica SDL_mixer, ktorá je vhodná na ozvučenie hier a aplikácií, lebo okrem prostého prehrania rôznych zvukových formátov (wav, mp3, ogg, mid, voc, mod,…) dokáže tieto zvuky aj mixovať. Ešte by som sa chcel zmieniť o použití knižnice pod Windowsami. O 2D grafiku sa stará DirectDraw, takže všetko beží ako po masle. S portovaním programov z Linuxu som v kóde musel meniť len nutné minimum, takže to musí potešiť hádam každého.

Čo sa týka dostupnosti dokumentácie, na Internete sú jej doslova tony. Dokonca aj v naších končinách sa niečo nájde. Hlavným zdrojom informácií však zostáva domovská stránka www.libsdl.org. Nájdete tu množstvo príručiek, tutoriálov, doplnkových knižníc a zdrojových kódov. Medzi nimi nájdete zdrojáky na výpis truetype aj rastrových fontov, zaujímavú knižnicu RotoZoom, alebo už naprogramované rôzne herné enginy. Okrem toho by som ešte odporučil knihu Programming Linux Games od spoločnosti Loki Software, ktorá sa stará napr. aj o portovanie komerčných hier z Win32 do Linuxu. Sú v nej popísané takmer všetky (ak nie všetky) grafické rozhrania a dopodrobna práve knižnica SDL na konkrétnych príkladoch, od inicializácie až po samotnú kompiláciu aplikácie. Takže pre začiatočníkov je knižnica SDL ako stvorená a hlavne vďaka dostupnosti informácií, doplnkov a dokumentácie poráža aj jej konkurenta, ClanLib.

Frogs

Túto hru určite všetci poznajú ešte z čias 8bitových počítačov. Ide o jednoduchú arkádu, v ktorej je cieľom dostať žabu z jednej strany cesty na druhú. Vyriešil som to však trochu inak a hlavným cieľom v jednotlivých úrovniach je preniesť tri malé žabky cez cestu. Hru som chcel maximálne zjednodušiť, a preto som vytvoril len jedno pozadie, pričom s postupným prechádzaním úrovní sa zvyšuje rýchlosť. Apropo celková rýchlosť hry, hardwarová podpora grafiky a zobrazenie okna sa nastavuje v nezávislom programíku setup, ktorý nastavenia uloží do súboru frog.ini, z ktorého sa pri inicializácii načítajú. Nastavenie rýchlosti hry sa dalo určite vyriešiť aj elegantnejšie cez systémový časovač a výpočet rýchlosti pohybu, ale ako som už spomenul, hru som chcel maximálne zjednodušiť. Po spustení hry sa objaví asi najskromnejšie Menu, aké sa len dalo spraviť, a potom hurá do hrania.

Menu

Zdrojový kód hry nechcem veľmi obkecávať. Akurát, že som pre hierarchiu áut použil lineárne zreťazený zoznam tvorený štruktúrami. Kolízie som riešil pomocou prekrývania štvoruholníkov, čo pre túto hru bohate stačí, a využil som aj doplnkovú knižnicu SDL_image, pomocou ktorej možno načítavať aj formát jpg. Čo sa týka ozvučenia, inšpiráciu som bral z knihy Programming Linux Games. Bolo by asi vhodnejšie z hľadiska náročnosti použiť ďaľšiu knižnicu SDL_mixer. Na vytvorenie grafiky som využil programy 3DS Max a Photoshop 7. Inak zdrojový kód je aspoň čiastočne okomentovaný, čo môže byť vhodné pre odvážlivcov, ktorí do neho nazrú.

Takže čo dodať? Mnohí určite nájdu kopec vecí, ktoré sa dajú hre vytknúť, ale treba brať ohľad na to, že ani som sa tak nesnažil spraviť plnohodnotnú hru, ako skôr dať dokopy to, čo som sa o SDL naučil. Ako som už povedal, pripomienky posielajte na hudo@centrum.sk.

Ešte pár obrázkov na záver…

Stresová situácia
Toto nepoteší nikoho

Našli jste v článku chybu?

26. 4. 2005 8:53

SPIDEX (neregistrovaný)
nenajde sa tu daky makac co dokaze spravit a naanimovat modely "priser" podla DOOM2 do HL? cheroke sa tomu uz nevenuje, ale ak by su tu niekto nasiel tak ICQ 249370161 alebo www.thelambda.sk a na fore sa dozviete viac

11. 7. 2004 18:45

VencaS (neregistrovaný)

A jeste navic je prakticky pouzitelna pouze na lokalnim X serveru; na vzdalenem displayi prenasi veskerou grafiku po celych framech (bitmapach), i kdyz se treba nic nemeni (stratagus, ktery pouziva SDL, napr. sezral asi 80kbit/s pro 1 display pri 640x480 a asi 20fps). Pro nekoho mozna taky podstatna drobnost.

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Poznáte poctivé suroviny na pečení cukroví?

Poznáte poctivé suroviny na pečení cukroví?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

120na80.cz: Jmelí je více léčivé než jedovaté

Jmelí je více léčivé než jedovaté

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami