Za jak dlouho se naučíte programovat hry

7.11.2012 by: Aimia

Pokud chcete začít vytvářet hry, toto by měla být jedna z vašich prvních otázek. Budu předpokládat, že programovat vůbec neumíte a nastíním vám možné alternativy.Možná na vás článek bude působit trochu depresivně, že je programování složité apod. A taky že je. Kvalita her se poslední dobou rapidně zvýšila. Hráči jsou už rozmlsaní. Nejradši by chtěli hru zdarma, která bude mít super 3D grafiku, bude mít namakané levelování postavy, spoustu trofejí na získání, možnost pochlubit se přátelům na facebooku apod.

Vývoj her je složitá věc. Neříkám to abych vás odradil, ale abychvás postavil před realitu. I když hra vypadá jednoduše, v pozadí musíte řešit spoustu problémů. Musíte ošětřit všechny možnosti, které můžou ve hře nastat(Co se stane když raketka je na kraji obrazovky, nevyletí pryč? Co se stane když hráč klikne na menu, zrovna když probíhá nějaký efekt? Vleze se text na obrazovku…?) A příklad z praxe? Jádro své hry BubbleDomination jsem měl za 3 dny. To znamená že level šel hrát, fungoval systém hry. A zbytek(dodělat levely, gui, otestování, texty, udělat to user friendly…) zabralo měsíc.

Na druhou stranu je vývoj her krásná věc. Je to tvůrčí činnost, na které se můžete pořádně vyřádit. Můžete si stvořit vlastní svět, s vlastními pravidly. Můžete se pak chlubit, že jste udělali hru. Jó s hrami se dá dělat spousta věcí 🙂

//

O čem vývoj her je
Vypadá to zábavně, dělat hry. Člověk má v hlavě krásnou představu super hry, která předčí všechny současné. Ale pak narazí na různé limity(nejenom limit hardware, ale i váš osobní). Připravte se na dny strávené u počítače, vztekající se, proč to zas nejede, proč to dělá něco jiného než by mělo… Neustále se budete muset učit, sledovat co hráči hrají a chtějí…

Zodpovězte si otázku: „Proč chci dělat hry?“
Pokud chcete hry dělat pro zábavu, je to dobrý důvod. Stejně dobrý je i dělat je pro peníze. Vpodstatě jakýkoliv váš důvod je dobrý, pokud vás bude motivovat projekt dokončit a udělat jej kvalitní. Jen zapomeňte na to, že pokud hra má být úspěšná, že ji uděláte do týdne. Pokud chcete jen udělat hru, na kterou rychle načmáráte grafiku v malování, bude se špatně ovládat apod., tak radši jděte ven – nikdo ji hrát stejně nebude. Zpracování hry musí být alespoň průměrné. Hru tvořte, aby lidi bavila, aby si ji někdo zahrál, ne abyste ji jen dokončili.

Nástroje na tvorbu her
Pokud si chcete udělat nějakou hru a nechcete se učit programovat, můžete použít nějaké nástroj na tvorbu her(Game Maker, Construct, Stencyl, Wintermute engine apod.). Zvládnout i tyto nástroje zabere nějaký čas, ale budete odstíněni od spousty problémů, hry budete tvořit rychleji… Není špatné začít takovým nástrojem, i tady se naučíte postupy, jak hry dělat.

Programování ve vyšším jazyce
Pokud začínáte s programováním, zvolte si nějaký jednodušší jazyk. Zapomeňte na C++(zbytečně složitý, jeho výkon u svých her stejně nevyužijete), zkuste třeba jazyk Java(používá se i v telefonech Android, ale dá se použít i na vývoj PC her), C#, nebo Flash(jazyk Actionscript3).

Základy programování
Programovat se určitě musíte naučit, takže si sežeňte nějakou knihu/najděte online tutoriál, kde vás naučí základy jazyka, který jste si zvolili. Na netu je toho spousta. Pokročilejší programování je o algoritmech. Naučit se postupy, jak se co dělá.
Až se naučíte základy programování, najděte si návody/knihy, jak dělat hry(vygooglit něco ve stylu „java game developement“ apod.) K tvorbě 2D her vám většinou stačí jednoduchá matematika(př. Pohyb raketky doleva/doprava je jen změnou souřadnice x apod.). Na 3D hry rovnou zapomeňte.

Čím začít
Vývoj si ze začátku co nejvíc zjednodušte, i tak budete řešit spoustu problémů. Takže zapomeňte na 3D, podporu multiplayeru, podporu více platforem apod. Úplně bude stačit udělat hru pro jednoho hráče.
Zvolte si velmi jednoduchou hru. Třeba tetris, pexeso, miny apod. Zní to jako klasický ošlehaná rada, ale dokud opravdu nezačnete hry tvořit, neuvědomíte si kolik toho musíte naprogramovat. A výhodou těchto her je že se dají snadno najít i hotové zdrojové kódy, na kterých se můžete učit. Další výhodou těchto her jsou jednoduchá pravida, nemusíte nic vymýšlet, jen to naprogramujete.

Začněte
Jakmile se rozhodnete, co chcete dělat za hru, začněte. Vytvořte si na disku nový projekt a programujte. Teprve teď začíná sranda. Zjistíte že číst tutoriály nebo procházet hotový kód je jasné, vše funguje jak má. Ale ve vašem kódu je divná chyba, chová se to divně apod. Tímhle si budete muset projít. Opravíte desítky až stovky chyb, x-krát přepíšete kód…
A až budete hotovi, hru vydáte, proveďte si rekapitulaci. Jak dlouho vám trvalo vytvořit tuhle „jednoduchou“ hru? Byla to pro vás stále zábava, nebo utrpení? Vyplatí se vám to, obětovat volný čas sezení u počítače? Pokud z toho budete mít pozitivní reakce, vítejte v klubu. Hurá do další hry, držím Vám palce 🙂

Takže za jak dlouho se naučíte programovat hry?
To závisí jen na vás, kolik tomu dáte času. Nečekejte ale, že to bude do měsíce. Základy můžete za měsíc zvládnout, další dovednosti si budete osvojovat průběžně. Ono programování je celkově o neustálém učení/zdokonalování se. Takže pokud se toho nebojíte, jste na dobré cestě tvořit pěkné hry.

Shrnutí „jak začít“
1. Naučte se základy programovacího jazyka(Java,C#,Actionscript…)
2. Naučte se základy tvorby her(herní smyčka, zachytávání vstupů uživatele(myš, klávesnice), zobrazení obrázků…) Učte se z návodů, hotových zdrojových kódů, čtěte fóra o programování her, ptejte se zkušenějších vývojářů…
3. Tvořte

Comments

20 komentářů to “Za jak dlouho se naučíte programovat hry”
  1. guest napsal:

    Zdravím ještě bych doplnil jeden velice důležitý fakt shruntý v tomto článku:
    http://setup.dagobah.cz/docs/21days/21days.html

  2. milan napsal:

    Aimia pomohl bys mi.ja sem to nepochopil
    jestli chces muzes mi to napsat na email milan@kator.cz

  3. tinecko napsal:

    celkem zajimavy blog ale uvital bych jine tutorial treba nakreslete si for cyklus na papir 🙂 a nejake ulohy pro zacinajici programatory (treba udelej funkci ktera ti vrati dlzku pole, nebo udelej funkci ktera urci spravnost zavorek na matematicko priklade(vstup by byl strnig)) a takovy hle veci myslim ze by uzivatelom moc prospeli nez citat tutoriali lebo to ich prejde netreba se divat na tutoriali ale pochopit co pisete a proc to tak pisete 🙂 a ne vysvetleni ze gotoAndStop() vas zastavi na zvolenem snimku 🙂
    treba im popisat jak funguji ve flashi udalost ,pole, vicerozmerna pole,OOP,objekty, pokrocila prace s Objektami – takove veci najdu na internetu tezko vzlast co se tyka OOP a kdyz myslis ze ich to nauci kniha tak se na omylu 🙂

    • Aimia napsal:

      Dík za tip, popřemýšlím o tom. Krátké programátorské úlohy jsou dobrý nápad. Jestli budu popisovat zákady programování už si jistý nejsem, nerad bych se zasekal na úplných základech, které se dají dočíst jinde.

  4. tinecko napsal:

    hlavne odporucim si projit reference jazyka AS3 ktera je primo na strankach adobe je to omnho lepsi nez tutoriali 🙂

    • Aimia napsal:

      Souhlasím že na Adobe je hodně informací, já mám ale radši vygooglení příkladu, je to pro mě lepší vidět celý funkční kód „v akci“

  5. Obloha napsal:

    Celkom pekny clanok, mna by ale zaujimalo preco ma niekto rovno na 3D hry zabudnut?

    • Aimia napsal:

      Článek píšu z pohledu samostatného vývojáře, nebo malého vývojářského týmu, kteří dělají hry „na koleně“. Dělat 3D hru je oproti 2D o dost náročnější – náročnější na kód, grafiku, animace, optimalizace, testování, pohyb v prostoru, detekce kolizí… V této době je ještě možné udělat pěknou 2D hru, s 3D už to tak snadné není(zkus se podívat na nějaké free 3D hry, uvidíš jednoduchý svět, pár objektů špatně animovaných atd.). Neříkám že to je nemožné, určitě se najde i solo vývojář který dokáže pěknou 3D hru, ale podle mě je to zbytečně obtížné.

      • Obloha napsal:

        Aha, no uvidime, ja sa teraz chystam spravit jednu 3D hru, sam. Nie nejak zlozitu, nejaku arkadu s lietajucim plavidlom. Cize animacie mi odpadnu.

        Podla mna ma 3D aj vyhody ak mas uz nejaky 3D engine. Pri 2D animaciach je to by som povedal omnoho zlozitejsie ako pri 3D, kde ked mas niekolko animacii tak ich len nalinkujes a mas vystarane, kde pri 2D musis (ak chces to mat pekne spravene) urobit animacie napr chodzy z roznych pohladov a ked nechces mat animacie v style drevenych panacikov (vystrihnute casti panakov nalinkovane na kosti), tak musis kreslit a farbit kazdy frame zvlast. Ale niekedy sa robi 2D postava tak, ze je vymodelovana 3D a nasledne vyrenderovana (animacia) a pri 3D ti to renderovanie odpadne, cize usetreny cas. Nehovoriac ak robis nejaku hru, kde si moze tvoja postava nieco obliect alebo nieco nosit co bude mat na sebe, to si uz neviem predstavit, lebo som taketo uz neskusal. Pri 3D si to nalinkujem dany predmet na kost a mam vystarane. Co sa tyka grafiky, to uz zavisi od vkusu, napr mne sa 3D paci aj ked je to hranate a animacie nie presne. To je asi tolko k tym vyhodam k 3D.

        • Aimia napsal:

          S animacemi máš pravdu, s 3D modelem máš o dost větší volnost. Některé věci se ani ve 2D dělat pořádně nedají. Ale otázkou je kolik času zabere grafikovi vytvořit 3Dmodel, nalinkovat mu kostru a pořádně rozanimovat. Samozřejmě je nejlepší animace nepoužít žádné, jak to chceš dělat ty. 🙂

          Ale další problém je kód. 3D hra už vyžaduje o dost víc matematiky, optimalizací, detekci kolizí a podobně. Samozřejmě záleží na hře, pokud budeš mít pár objektů, nemusíš optimalizovat apod. Možná pokud použiješ nějaký hotový engine, bude to bez problémů.

          Každopádně do toho jdi. V průběhu sám zjistíš, jestli to pro tebe složité je nebo není, kolik je s tím práce… To nezjistíš pokud na tom opravdu nezačneš dělat. A pošli mi potom link, rád si to zahraji

  6. Barcelona napsal:

    Hej strašně moc díky na tento článek i celý blog. Je mi 25, začínám s programováním, zatím mám za sebou jen knížku „C++ bez předchozích znalostí“ a programování mě zatím baví čím dál víc. Chci programovat hry a díky že jste mi to tímto článkem i plodnou diskusí hezky nastínili 🙂

  7. bara napsal:

    Ahoj, chtěl bych se zeptat jak složité je třeba vytvořit hru jako flappy bird nebo brick breaker ? …a jinak moc pěkné stránky 🙂 –asi nejlepší co jsem na netu našel 🙂

    • Aimia napsal:

      Tyhle hry mají jednoduchou logiku, takže to moc složité není. Ale samozřejmě záleží kolik toho umíš. Myslím že jako první projekty jsou tyhle hry dobré, dají se rychle dokončit a uvidíš jestli tě baví hry dělat. Pokud bys je chtěl ale udělat pořádně, tak ti nejvíc času zabere je udělat pěkné, nastavit dobře hratelnost atd.

  8. Alky napsal:

    Rád bych si naprogramoval něco úplně podle mého názoru primitivního vím jak bych dělal kód a tak.. ale nevím v čem.. jednalo by se o princip nečeho jako je milionář(kvízová hra) 4 možnosti daná otázka a několik set otázek v databázi.. podle mne to vypadá lehce…
    Kde ale začít je mít správný typ programu a správný programovací jazyk, ale právě nevím jaký…
    děkuji za odpověď

    • Aimia napsal:

      Ahoj, taková hra se dá udělat téměř v jakémkoliv jazyce. Ale nejlepší je nějaký který pracuje s databází(MySQL apod). Zaměřil bych se na šířitelnost, takže bych použil HTML5 s javascript nebo tak něco.

  9. petr napsal:

    A co v unitech

  10. TheWein napsal:

    Zdravím , chci se zeptat , nemám vůbec páru jak svět programovaní her funguje, ale chtěl bych časem vytvořit vlastní hru která bude 3D a multiplayer.

    Mám představu jak hra by měla vypadat a co bych chtěl od ní očekávat jako hráč.
    Nebudu lhát když tu napíšu že jsem hral víc jak 4000+ her / ruzných typů

    Nechce se mi začit někde od začátku ,kde bych začal jednoduchou hrou.
    Zkrátka chci už od startu udělat hru která bude hodně naročná.

    Chci se zeptat co pro mě bude lepší.

    Najit si organizaci/firmu která by udělala hru podle mých představ?

    Na toto mám taky otázku: Kde ji najdu/Jak začit/co by se v tu chvili odemně očekávalo/atd..

    Nebo

    Udělat hru (myslím jako sebe samotného)

    Na toto mám taky otázku: V čem/Jak/cena/čím začít/ na co nejvíc davat pozor / ATD

    Představa: Chci udělat náročnou mmorpg (kouzla,akrobatické pohyby, zbraně ) – a hlavně Open World

    • Aimia napsal:

      Ahoj,

      napíšu to věcně, možná trochu tvrději, jen abych ti případně ušetřil hoodně času a peněz.

      Začnu že si hru uděláš sám. Neumíš programovat, nechce se ti učit se na něčem jednodušším = tak to nedělej. Totiž už na jednoduché hře narazíš na spoustu problémů, které budeš googlit, bude dlouho trvat než se i naučíš programovat. Takže i pexeso ti zabere ze startu třeba měsíc.
      3D Multiplayer v životě nedoděláš, maximálně zabiješ nejlepší roky svého života a uškvaříš si mozek 🙂 Chápu že každý chce vytvořit něco unikátního, má plno nápadů… Mám to stejně. Ale to co chceš udělat ty, aby to mělo nějakou kvalitu srovnatelnou s ostatními hrami, sám nedáš. Na takových hrách dělají týmy desítky lidí, od programátorů, grafiků, designerů, testerů… Kdyby tě to přecejen nepřesvědčilo, tak si představ jak budeš jen definovat ten rozsáhlý svět – vytvářet mapy, úkoly, definovat kouzla, artefakty, dialogy, všechno musí být vyvážené. Pak budeš muset mít 3D modely všech kreatur, budov, předmětů… Atd atd.
      Něco menšího bych dělal v Unity, případně Godot, Gamemaker atd. Něco multiplatformního.

      První dotaz, že to někdo udělá za tebe – taky zapomeň. Jak jsem psal, takový projekt dělá tým lidí a třeba dva roky. Tak si představ třeba jen deset lidí, každému průměrně třeba 50.000Kč měsíčně. To máš 12 miliónu na vývoj. Pak přičti náklady na reklamu, propagaci…
      Ale abych odpověděl, pro nějaký menší projekt bych zkusil kontaktovat vývojáře, co už mají nějaké projekty za sebou, a najmout je. Ale počítej s tím že budeš muset mít hotov Design document, v něm nadefinované vše od nějaké NPC babičky až po větvení úkolů, načrtnuté gui, systém levelování, definované potvory, kolik za kterou je xp, popsaný svět ve kterém se to odehrává atd atd…

      No a design document budeš potřebovat i když budeš hru dělat sám, vystříháš se tím spousty předělávek. Tak pokud to myslíš vážně, začni prvně designem, na něm zjistíš jak je náročné jen hru popsat, dostat ji z hlavy a pořádně definovat. Nejspíš DD ani nedopíšeš.

      PS: Nemám čas, tak si to po sobě už nestíhám pročíst, doufám že tam není moc chybek a je to srozmitelné 🙂

Leave a Reply