Přeskočit na obsah

Tutoriály picogame — uč se tvorbou her

Tutoriály představují jednotlivé skupiny herních mechanismů postupně. Každý krok je úplný, spustitelný program a následující krok na něm staví. Otevři si stepN a stepN+1 vedle sebe; v rozdílu uvidíš kód přidaný pro nový princip.

Výsledkem každého tutoriálu je malá dokončená hra:

Tutoriál Žánr Co učí
01-bounce (zdroj) Breakout / Arkanoid vykreslovací smyčka, ovládání, pohyb s desetinnou přesností, odrazy od stěn a pálky, obdélníkové kolize, cihlová zeď z Tilemap, HUD, částice a zvuk. Tvary i importovaná grafika používají Bitmap na stejném Sprite, takže výměna vzhledu nemění herní logiku.
02-starship (zdroj) vesmírná střílečka s pohledem shora předem připravené snímky rotace, vektorový tah, přechod přes okraj obrazovky, fondy objektů pro střely a nepřátele, kruhové kolize, dělení kamenů, postupné vlny, částice, zvuk a stavový automat titulní obrazovka → hra → konec hry.
03-quest (zdroj) RPG s pohledem shora svět větší než obrazovka, kameru sledující hráče, kolize s tily, animaci chůze, sbírání předmětů, pevný HUD, rozhovor s NPC, souboj a úkol zakončený otevřením dveří a dosažením cíle.

Procházej je popořadě, protože každý navazuje na základy předchozích.

Každý krok můžeš spustit v prohlížeči tlačítkem Vyzkoušet v prohlížeči. Soubor můžeš také spustit lokálně v desktopovém simulátoru. Ten nepotřebuje zařízení a umí uložit výsledný snímek do PNG:

Terminal window
python3 sim/run.py tutorials/01-bounce/step3_ball.py --shot /tmp/out.png

Užitečné přepínače: --frames N určí délku běhu, --hold RIGHT,B drží vybraná tlačítka a --backend pygame otevře interaktivní okno, pokud máš nainstalovaný pygame.

Na PicoPadu (nebo jakékoli podporované desce): zkopíruj soubor kroku plus lib/ helpery, které importuje, na CIRCUITPY/ a pojmenuj jej code.py (nebo jej importuj). Hlavičkový komentář každého souboru vypisuje, co potřebuje.

Jak je strukturován každý krok

Sekce “Jak je strukturován každý krok”
  • Hlavičkový komentář uvádí, co se naučíš, co je nové oproti předchozímu kroku a přesný příkaz pro spuštění.
  • Komentáře v kódu označují nové řádky, takže změnu snadno najdeš.
  • README v každé složce vysvětluje, proč je daný krok užitečný, a navrhne malou úpravu, na které si můžeš jeho chování vyzkoušet.

Části enginu, které potkáš

Sekce “Části enginu, které potkáš”

Všechny pomocné moduly jsou v lib/. Jsou napsané v Pythonu a fungují na zařízení i v simulátoru:

Helper Role
picogame_game.setup() vybere displej a vytvoří Scene; na SPI cíli také strip buffery
picogame (C modul) Sprite, Bitmap, Tilemap, Particles, Canvas, Scene, collide, rgb565
picogame_input tlačítka jako bitová maska, is_pressed / just_pressed
picogame_clock omezení snímkové frekvence a dt; akumulátor pevného časového kroku
picogame_shapes generuje plné/kulaté/polygonové bitmapy (obdélníky, míčky, lodě)
picogame_pool fond spritů pevné velikosti pro střely a nepřátele
sprite.overlaps / sprite.near obdélníkové a kruhové kolize zabudované ve Sprite
picogame_ui SceneLabel (text HUD ve scéně), text box, menu
picogame_font renderuje řetězce do bitmap pomocí přibaleného fontu
picogame_audio pípnutí (tone()) a přehrávání .wav

Po tutoriálech: přejdi na editor scén

Sekce “Po tutoriálech: přejdi na editor scén”

Jakmile rozumíš herním mechanismům, nemusíš každý tile a sprite umisťovat ručně v Pythonu. Editor (editor/) umožňuje kreslit mapu, umisťovat sprity a nastavovat vlastnosti tilů. Vyexportovanou scénu načte picogame_scene a stejná data fungují na zařízení i v simulátoru. Úplný příklad najdeš v examples/picogame_platformer_scene.py; Python v něm řeší herní logiku, zatímco úroveň, kolize, mince, nepřátelé a kamera pocházejí z dat editoru.

Další kroky po tutoriálech

Sekce “Další kroky po tutoriálech”

Po dokončení tutoriálů můžeš pokračovat těmito směry:

  • Herní vzory + Úryvky — znovupoužitelný tvar herní smyčky a objektu State, do kterého každá větší hra doroste, plus kostra hry připravená ke spuštění, ze které rozjedeš vlastní projekt (otevři si ji v Hřišti). Právě teď, když máš tři hry postavené ručně, je to přirozený další krok.
  • Průvodce funkcemi — úkolově zaměřená prohlídka všeho, co engine umí (kterou kreslicí plochu zvolit, transformace spritů, kolize, HUD, zvuk a hospodaření s RAM), a s alternativami. Použij ji, když vybíráš vhodný nástroj.
  • Pomocné moduly (lib/) — čistě pythonové moduly z tutoriálů (picogame_pool, picogame_ui, picogame_clock, picogame_anim, …); průvodce funkcemi u každého odkazuje na jeho použití.
  • Slovníček — krátké, srozumitelné definice jakéhokoli neznámého pojmu, například sprite, tilemapa, dirty region, AABB nebo paralaxa.