Úvod do programování her
Z CHWiki
| Tato stránka slouží jako rozcestník pro nováčky v programování her. |
Jelikož máme omezené možnosti, články na výuku programování jako takového zde momentálně nejsou. Naštěstí na internetu, v literatuře a nakonec i na školách je více než dost možností, jak se programování naučit. Zde naleznete především informace specifické pro programování počítačových her.
Obsah |
[editovat] Jak se naučit programovat
[editovat] Obecné řeči o programátorské profesi
Programování je činnost, která je zároveň technická a i trochu kreativní. Vyžaduje některé osobnostní vlastnosti, které každý nemá a proto se každý nemůže stát programátorem. Že tyto vlohy nemáte poznáte jednoduše - nepůjde vám to, nebude vás to bavit a případě vás to bude štvát. Těm, kteří na to vlohy mají, tato činnost přináší zábavu na dlouhé večery a někdy dokonce i odměnu v podobě dobrého pocitu z dobře odvedené práce, případně radosti, že člověk něco vytvořil a ono to funguje. Některé programátory to tak baví, že tím tráví všechen svůj volný čas, což má samozřemě negativní dopad na jejich sociální schopnosti, na jejich záda a zdraví celkově.
[editovat] Jak začít
Pokud se programování neučí ve vaší škole, jedinou další možností je sehnat si výukovou literaturu ať už na internetu, nebo v tištěné podobě. Každá knížka nebo internetová stránka se typicky zaměřuje na jeden konkrétní jazyk a výuku vede v něm. Knížka by vás měla provést naprostými základy a předvést použití alespoň základních konstrukcí daného jazyka. Po absolvování výukového materiálu si můžete buď sehnat pokročilejší literaturu (nejlépe pro stejný jazyk) nebo začít zkoušet programovat na vlastní pěst. Nejlepší je stanovit si nějaký jednoduchý program (jednoduchý, takže žádný remake DOOMA 3!!) jako cíl a snažit se ho naprogramovat. U toho můžete hledat další potřebné informace na internetu nebo v knihách. Ta fáze, kdy už programujete to, co chcete, je zábavnější než fáze, kdy postupujete podle knihy, proto bych každému doporučoval vydržet alespoň sem.
Zde už máte v dalším vzdělávání jistou volnost. Nemá moc cenu doporučovat konkrétní témata k naučení, to si vyberete sami podle toho, co vás bude zajímat a o čem uslyšíte. Podobné je to s programovacími jazyky. Typicky budete mít neustále alespoň jeden rozdělaný projekt, takže bude stále co dělat a na čem si zdokonalovat svoje schopnosti. Čím více času programováním a učením se strávíte, tím budete samozřejmě lepší a zkušenější.
Pokud chcete programováním strávit svoji profesionální kariéru, asi byste měli absolvovat nějakou vysokou školu. Tam dostanete formální vzdělání v oblasti algoritmů, datových struktur, grafů, formálních jazyků a podobně. To jsou všechno znalosti, které by měl každý profesionál mít. Další důležitou oblastí jsou dobré programátorské praktiky. To jsou pravidla, která sice nejsou většinou formální, ale pomáhají udržovat v rozsáhlých projektech pořádek, což je zásadní pro jejich funkčnost a schopnost programátorů na tom projektu vůbec něco dělat. Koneckonců, to si sami vyzkoušíte, že když je ve větším programu nepořádek, těžko se s ním pracuje.
[editovat] Zdroje v češtině
Tady je krátký seznam odkazů na zdroje, které vyučují programování v češtině.
- http://www.skil.cz/python/ Toto je překlad knihy, která vyučuje programování v jazyce Python. Byla trochu aktualizována a byly přidány i příklady v JavaScriptu a VBScriptu (to je fajn, protože člověk aspoň vidí, jak jsou základní principy všude stejné).
- Kniha Algoritmy a programovací techniky Tato kniha se používá jako učebnice na některých školách.
- http://geon.wz.cz/livewires/index.html Další učebnice, která používá Python.
- http://howto.py.cz/index.htm Další webová učebnice, jazyk Python.
- A další, stačí googlit, případně procházet stránky věnující se jazykům jako Python, C#, Ruby atd.
[editovat] Relevantní články na naší wiki
[editovat] Ostatní
- http://scratch.mit.edu/ Grafické vývojové prostředí, ve kterém se neprogramuje psaním kódu, ale klikáním.
- http://alice.org Pravděpodobně něco podobného, tentokrát 3D.
- Další najdete na stránce Herní tvořítka
[editovat] Programování her
V této sekci budeme předpokládat, že jste absolvovali základní kurz programování, dobře jste si to procvičili a máte to zažité. Konkrétně byste měli bez problémů umět používat cykly (for[each], while, do-while), funkce a ideálně i základy objektově orientovaného programování. Měli byste zvládnout bez zaváhání naprogramovat třeba anglicko-český slovník, který čte slovíčka z externího souboru.
[editovat] Z čeho se hra skládá?
Většinu součástí nemusíme programovat sami, protože jsou už hotovy v knihovnách nebo enginech.
- Správa okna
- V současných operačních systémech musíme obvykle vytvořit okno, ve kterém naše hra poběží. Toto okno představuje vstupní bránu do naší hry. Okno vytváříme i když hra poběží přes celou obrazovku (fullscreen). V rámci správy okna máme obvykle i herní smyčku, která aktivuje zbývající části hry.
- Zpracování vstupu
- Tato část přebírá od příslušné knihovny informace o vstupu od uživatele (stisknuté klávesy, hýbání myší, joystickem, ...) a předává je těm částem hry, které je potřebují.
- Grafický subsystém
- Samotné vykreslování obvykle provádí grafická karta nebo příslušná knihovna. Naše hra musí spravovat svoje grafická data a ovládat grafickou kartu podle svých potřeb (u 2D her s tím typicky moc práce není, naopak u 3D her je s tím díky složitosti 3D grafiky práce relativně dost).
- Zvukový subsystém
- A poslední externí zařízení, se kterým hra komunikuje je zvukový výstup. Je třeba spravovat zvuková data a případně kontinuálně přehrávat hudbu.
- Herní kód
- Do této části spadá kód herních pravidla a herních objektů.
- Menu
- Hry většinou mají grafické menu, některé mají i poměrně složité uživatelské rozhraní.
- Umělá inteligence (AI)
- Pokud máme ve hře samostatné postavy, je třeba jejich chování naprogramovat. Umělou inteligenci bereme jako část herního kódu.
- Práce s daty
- Potřebujeme načítat a někdy i ukládat různé druhy dat - 3D modely, textury, shadery, herní prostředí, informace o herních objektech a další. Dále potřebujeme umět uložit o opětovně načíst rozehranou hru.
- Pohyb objektů
- Objekty se ve hrách obvykle pohybují, chovají se podle fyzikálních zákonů a obvykle skrz sebe neprocházejí. Musíme naprogramovat pravidla pro pohyb a také detekci a reakci na kolize. Případně můžeme použít nějaký fyzikální engine.
[editovat] Jaké jsou pro vývoj her knihovny?
. Naštěstí je k dispozici mnoho knihoven, ve kterých jsou potřebné funkce už naprogramované. Podle účelu existuje několik druhů knihoven:
- Grafické API
- Sem patří OpenGL a Direct3D. Pokud chcete tvořit hry s použitím 3D akcelerace, jednu z těchto knihoven musíte použít. A obvykle je použijete i při programování 2D her. Poskytují nízkoúrovňový přístup ke grafické kartě. V jazycích C a C++ je lze použít přímo, pro ostatní jazyky jsou k dispozici wrappery.
- Engine
- Zajišťuje všechny technické záležitosti ve hře, takže ve většině případů stačí v podstatě naprogramovat jen herní kód.
- Fyzikální engine
- Počítá realistické chování objektů podle fyzikálních zákonů. Navíc mohou využívat i HW akcelerace.
- Ostatní
- Například knihovny na načítání rozšířených formátů 3D modelů, obrázků, zvuků, knihovny pro GUI ve hře a další.
[editovat] Obvyklá řešení
[editovat] Základní struktura hry
Ve většině her se používá tzv. herní smyčka. To je nekonečný cyklus, který opakovaně aktualizuje herní objekty a poté vykresluje grafiku. Více informací najdete na Herní návrhový vzor Herní smyčka.
šipky
[editovat] Ostatní
Další často používané postupy najdete na portálu Návrhové vzory.
Jak se Vám líbí obsah na této stránce? Uvítáme Vaše podněty na Diskuse:Úvod do programování her anebo úpravy přímo v textu.
