6. diel - Skákačka v pygame - Engine a asset
V posledných pár lekciách sme si vyskúšali, ako urobiť nejaké tie menšie hry. Pravdepodobne ste si všimli, že ak by sme chceli robiť niečo väčšieho, bol by náš kód priamo obrovský a tiež obrovsky komplikovaný. Ako teda vytvoriť nejakú hru bez toho, aby sme sa sami utopili v jej kóde?
Herný engine vs. kód hry
Prehľadnejšie a kratšie kód hry získame, ak ho rozdelíme na kód pre engine a kód samotnej hry.
Herný engine
Herný engine je tá časť hry, ktorá nie je špecifická pre danú hru. Pravdepodobne ste niekedy už o nejakom hernom engine počuli, veľmi známe sú Unity, Unreal engine, ale aj napr. Môj obľúbený Game Maker, alebo Simplex Game Studio vytvorený tu na ITnetwork. Všetky tieto softvéry nám určitým spôsobom uľahčujú tvorbu hry - pomáhajú nám odpútať sa od nízkoúrovňových operácií a pomocou abstrakcie sa sústrediť na pokročilejšie pochody v hre.
Herný engine je to, čomu povieme "pohni objektom o 20 pixelov doprava" alebo "zobraz okienko so správou". Samotná pygame sa sama predstavuje ako sada modulov, je teda skôr frameworkom uľahčujúcim kreslenie spritov a podobne, ale neposkytuje nám predpripravené herné mechaniky.
Vďaka tomu, že sú enginy tak všeobecné, tak je možné ich použiť u ďalších hier, čím značne zrýchľujú a uľahčujú vývoj.
Kód hry
Naopak do kódu hry patria všetky veci špecifické pre danú hru. To sú akcie typu "nastav ikonku hráča na vesmírnu postavičku" alebo "ak sa auto dotkne s helikoptérou, zobraz čiernu obrazovku".
Space Ground Adventure
Teraz sa teda, keď už poznáme základy pygame, môžeme pustiť do tvorby niečoho väčšieho, čo nebude zložené iba zo štvorcov a kruhov. Namiesto toho by sme radi mali peknú grafiku, hudbu a zvukové efekty. A pretože mierime ešte vyššie, rovno si k tomu môžeme pridať základné fyziku a kameru. Čo by niečo také mohlo spĺňať?
Áno, správne! Je to štandardná plošinovka!
Funkčnosti
Poďme si teda rovno rozvrhnúť, čo by naša hra mala obsahovať:
- postavičku hráča, ktorá vie skákať a pohybovať sa
- gravitáciu
- objekty, po ktorých môže postavička chodiť (platformy)
- objekty, s ktorými môže postavička interagovať (kľúče, vlajky, diamanty)
- nepriateľov, ktorí pôjdu zabiť skokom na hlavu, ale iná interakcie hráčov zabije
- dekoratívne objekty (stromy)
- niekoľko levelov
- jednoduchý level builder
- hudbu
- peknú grafiku
- kameru, ktorá nasleduje hráča
To, čo sme si práve popísali (až na obsah zátvoriek), sú všetko všeobecné kategórie, ktoré sa môžu vyskytovať v akejkoľvek plošinovke, ktorú by sme si prípadne priali urobiť. Z toho dôvodu budú všetky patriť do herného enginu.
Naopak položky v zátvorkách (tj. Tie, ktoré sú konkrétne pre našu hru - postavička, včeličky, diamanty, zámky, tráva) budú patriť až do samotného kódu hry. A máme dokonca aj rozdelené, čo kam patrí!
ASSET
Ešte než sa ale pustíme do samotnej hry, musíme zhodnotiť naše schopnosti. Zvládneme si sami nakresliť všetky obrázky (v hernej terminológii sprity, j. Č. Sprite)? A tiež zložiť vlastný hudobný doprovod? Ak nie sme úplne všestranní ľudia, tak je dosť možné, že aspoň na jednu otázku odpovieme nie. Čo ale v takomto prípade robiť? Našťastie pre nás, vývojárov, existujú na internete miesta, kde môžeme zohnať podklady do našej hry. Uveďme si teda nejaké príklady.
Grafika
Pripravená herný grafika zadarmo na použitie sa dá samozrejme nájsť na internete, najlepšie v balíkoch a na weboch k tomu priamo určených. Treba však dávať pozor, aby k sebe obrázky štýlovo sedeli. A samozrejme si vždy overiť licenciu, ako možno danú grafiku použiť. To napokon platí aj pre ďalšie podklady.
Kenney.nl
Kenney je tím ľudí, ktorí tvoria úžasnú grafiku do hier zdarma, väčšinou pod veľmi voľnú licenciou, ktorá po nás, vývojároch, nevyžaduje ani uvedenia zdroja. Na ich stránkach si stačí vybrať typ a žáner hry, načo je nám obratom vydaný zips, v ktorom máme všetky potrebné veci. Môže obsahovať od niekoľkých typov postavičiek, cez rôzne typy krajiny, rieky, budov atď. Ako na striebornom podnose, v niekoľkých formátoch a veľkostiach.
Platformačného Deluxe
Ich skvelých grafik zadarmo budeme využívať aj pri tvorení našej hry, konkrétne ich Platformer Art Deluxe a Platformer Art: Extended Enemies:
OpenGameArt.org
Ak hľadáme skôr než celý set niečo konkrétne, môžeme sa pozrieť na stránky OpenGameArt.org, kde si môžeme vybrať z nepreberného množstva grafiky, hudby atď. Hodiť sa určite bude aj možnosť filtrovať podľa typu obsahu a licencie.
Pixabay.com
. <> Na obrázku je výsledok vyhľadávania "cool cat" na Pixabay
Pixabay.com nie je priamym zdrojom grafiky do hier, avšak pri správne zadanom vyhľadávacom výraze pomôže nájsť to, čo hľadáme. Všetky obrázky na sieti sú pod Pixabay licenciou, ktorá je prakticky to isté ako CC0 - Public domain.
Hudba
A podobné weby máme aj na hudbu a zvuky.
Soundimage.org
Soundimage.org je projektom jedného skladateľa, ktorý má na svojich stránkach nepreberné množstvo kvalitnej hudby zadarmo v mnohých rôznych žánroch. Jediné, čo autor na oplátku vyžaduje, je uvedenie svojho mena a odkazu. Aj jeho dielo budeme v našej hre využívať.
Freesound.org a soundbible.com
FreeSound.org a SoundBible.com sú veľmi podobné servery, oba ponúkajú vyhľadávanie rôznych útržkov zvukov a zvukových efektov. Freesound dovoľuje vyhľadávanie filtrovať aj podľa licencie. Kvalita zvukov na týchto serveroch je často nedostatočná a je potrebné ich vyskúšať veľa, než nájdeme ten správny, však ak by sme chceli profesionálnu kvalitu efektov, hľadali by sme skôr na platených serveroch.
Motivácia na koniec
Keď už teraz vieme, čo chceme robiť a kde k tomu hľadať potrebné podklady, môžeme sa v ďalšom článku rovno pustiť do tvorenia. Čo ale urobíme ako posledný, je motivácia vo forme gameplaye nášho finálneho produktu. Spojler alert, samozrejme:
V ďalšej lekcii Skákačka v Pygame - Logging zistíme, ako si udržať prehľad o priebehu
projektu našej Skákačky pomocou knižnice logging
.