Lekce 1 - Programujeme Android hru - Poznáváme LIBGDX
Vítejte! Společně vytvoříme jednoduchou hru na mobilní telefony s OS Android, protože se jedná o nejrozšířenější systém, který má z ekonomického hlediska velmi přívětivé vývojové prostředí (za vývojářský účet jsem zaplatil pouze $25) a mnoho dostupné dokumentace, zaměříme se právě na něj.
Nejdříve je nutné, abyste měli konkrétní představu, jakou hru můžeme vytvořit, proto si hru můžete stáhnout v Google play na adrese https://play.google.com/…apps/details?… a vyzkoušet. Osobně jsem přesvědčen, že někteří tady vytvoří daleko lepší hru, než jsem udělal já. O grafice toho totiž tolik nevím a nemám umělecký cit. Myslím si, že při tvorbě hry je daleko důležitější umělecká složka než samotné programování.
K naší práci budeme používat multi-platformní herní knihovnu LIBGDX, takže samozřejmě kdo bude chtít, si bude moci hru přizpůsobit pro další operační systémy.
Předem sděluji, že nejsem profesionál a programování mám opravdu jen
jako hobby, takže až mě tady budete "grilovat", mohli byste být trošku
shovívavější . Osobně se
považuji za velkého pragmatika, rád si dělám věci po svém a proto někdy
úmyslně nedodržím zavedené konvence (na toto upozorním), někdy naopak
budu mít nedostatek o kterém ani nebudu vědět. Nicméně proto jsme
komunita, abychom spolupracovali a tím se i novému naučili a případné
chyby odstranili. Nepochybuji, že na ITnetwork jsou velcí borci, takže to
společně doladíme a prokousáme se tím.
Jen doufám, že po zveřejnění nevzniknou v Google play pouze pozměněné kopie hry, kterou si tady vytvoříme, ale že budete originální a vytvoříte hry vlastní. Kdo ví, třeba tímto seminářem zasejeme semínko nějakého společného herního projektu? Nebo budete vytvářet hry např. pro svého člena rodiny či známého...?
PRO KOHO JE SEMINÁŘ URČEN?
Velmi nerad dělám z věcí vědu, proto budu prezentovat velmi prakticky, srozumitelně a jednoduše tak, aby seminář byl opravdu pro každého, kdo si chce zkusit jednoduchou hru udělat. Navíc zde máme opravdu velkou podporu schopných programátorů, takže si shrňme, co je opravdu potřeba:
- Mít silnou motivaci pro vytvoření vlastní hry na android a když ihned něco nefunguje tak, jak by mělo, nevzdávat se, ale lámat si hlavu a hledat řešení
- Přívětivý vztah k angličtině - opět může splnit
každý, kdo chce, třeba i se slovníkem
- PC splňující systémové požadavky vývojového prostředí Eclipse
- Přístup k internetu (to samozřejmě máte, jinak byste tohle nečetli
)
- Základy objektového jazyka (JAVA, C++, C#, ...) a opravdu pouze základy. Jde jen o to, abyste věděli, co je to proměnná, metoda a měli základní povědomí o objektovém programování. Tento bod kladu až na spodek hierarchie důležitosti, protože seminář je i pro začínající programátory a je od toho, abychom si zde jazyk Java procvičili, či se jí naučili. Vynikající učebnici základů Javy, kde můžete odbornost čerpat již David vytvořil tady a učebnici objektového programování tady.
CO JE TO LIBGDX A CO UMÍ?
LIBGDX je multi-platformní Java herní knihovna založená na OpenGL, licencována pod Apache licencí (open-source), vyvíjena a zlepšována rozsáhlou komunitou vývojářů. Obsahuje mnoho užitečných komponent. Představuji si ji jako takovou "překladatelku", která mi poskytuje rozsáhlé API (soubor procedur, funkcí, tříd a protokolů nějaké knihovny), které pak překládá do ostatních platforem jako Android, OS X, Java applet.
Pro naše účely v LIBGDX spatřuji největší výhodu v tom, že nebudeme muset spouštět žádné hardwarově náročné virtuální zařízení, na kterém bychom naší hru spouštěli, velmi rychle a bez problémů ji spustíme přímo z IDE jako Java aplikaci. LIBGDX nám dále nabízí:
Zmíněnou použitelnost na vícero platformách pouze s jedním API a to na
- Windows
- Linux
- Mac OS X
- Android (2.2+)
- BlackBerry
- iOS
- Java Applet (vyžaduje nainstalovanou JVM)
- Javascript/WebGL (Chrome, Safari, Opera, Firefox, IE přes Google Chrome Frame
Audio
- Přehrávání hudby a zvukových efektů ve formátech WAV, MP3 a OGG
Uživatelský vstup
- podpora myši a klávesnice
- podpora dotyku na obrazovku
- podpora měřiče zrychlení (accelerometer) a kompasu
- rozpoznání jednoduchých gest
Matematiku a fyziku
- třídy pro matice,vektory a kvaterniony
- třídy pro vymezování tvarů jako kruh,obdélník,mnohoúhelník aj.
- testování protínání a překrývání tvarů
Práci se soubory
- čtení/zápis ze/do souboru
- kopírování, přesouvání a mazání souboru
- výpis souborů a adresářů
- kontrola zda soubor/adresář existuje
- funkce preferences pro snadné uložení nějakého nastavení
Každá z platforem se v libgdx obsluhuje trošičku jinak, u OS Androidu máme v podstatě 3 možnosti, jak soubory ukládat, buď přímo do naší aplikace jako zdroje (pak jsou tyto soubory jen pro čtení), nebo do interního úložiště mobilu/tabletu (tyto soubory jsou jak pro čtení, tak pro zápis), anebo do externího úložiště.
Grafiku, která nabízí tři stupně vyspělosti
- Low-Level OpenGL helpers: textury,odstíny, jednoduché renderování jednoduchých tvarů jako kruhu,obdélníku, přímky...
- High-level 2D APIs: Ortho kamera, třída SpriteBatch pro vykreslování obrázků, písma
- High-Level 3D APIs: Perspective kamera
Samozřejmě to není vše, pro kompletní popis knihovny odkazuji na oficiální stránky knihovny https://libgdx.badlogicgames.com/
PROBLÉM VÝVOJOVÉHO PROSTŘEDÍ A KNIHOVNY LIBGDX
Již před samotným stažením IDE nám vzniká problém. Máme dvě možnosti výběru vývojového prostředí:
- Eclipse - je starší vývojové prostředí, avšak neustále vyvíjeno a se silnou uživatelskou podporou, problém je v tom, že Eclipse již není oficiálním vývojovým prostředím pro Android. Na webových stránkách http://developer.android.com/ se dozvíte, že v Eclipse již programovat nemáte a že máte migrovat do Android Studia
- Android studio - je v současné době nové oficiální vývojové prostředí pro operační systém Android, ale tady je zase problém v tom, že Android studio není zatím oficiálně podporováno naší knihovnou LIBGDX.
Z výše řečeného vyplývá, že máme smůlu a celý projekt, který
ještě ani nezačal, tak padá a končíme . Nezbývá nic jiného, než
trošku přimhouřit oko a malinko porušit pravidla, po malé úpravě projektu
můžete pracovat na Android studiu, nebo podle mého návodu pracovat pod
Eclipse. Sám jsem si zvolil Eclipse, protože má nižší systémové
požadavky, než Android studio a to se mi velmi hodí, protože můžu vyvíjet
i na tabletu třeba ve vlaku cestou do práce.
Prvním předpokladem toho, aby vše fungovalo, je, že máte nainstalovanou Javu. Toto pokládám za naprostou samozřejmost a nebudu se tudíž tady instalací Javy zabývat.
Pro dnešní den toho bylo řečeno až moc.
Příště, Programujeme Android hru - Stažení potřebného software, si stáhneme IDE a další potřebný software a pokusíme se vše rozjet.