Programování

Knihy o programování her Java: Srovnávací recenze

Programování her mě dostalo do počítačů asi před 15 lety. Pokud jste vůbec jako já, pak vás magická pestrobarevná animace vyzařující z počítačových her láká jako můra ke světlu. Ale být fascinován počítačovými hrami (a jejich vnitřními částmi) a umět je programovat jsou dvě různé věci dohromady. Musel jsem se obchodu naučit tvrdě - zíral jsem na hry celé hodiny, než jsi mohl vidět jak pracovali. V dnešní době můžete podvádět a vzít si zkratku: Vezměte si knihu a jen „splyněte“ se zkušeným programátorem, který vyvrací všechny své zkušenosti, tipy a triky.

Mějte na paměti, že některé knihy Java (viz kniha Laury Lemayové uvedené níže v sekci Zdroje) vás dnes chtějí vést úplně různými cestami, můžete dělat horší věci, než důvěřovat bývalému (komerčnímu) programátorovi her, aby zkontroloval aktuálně dostupné knihy o programování her Java.

U této recenze mi na prahu přistály čtyři tituly:

  • Black Art of Java Game Programming, Joel Fan, Eric Ries a Calin Tenitchi (Waite Group Press)

  • Špičkové programování her Javaautorů: Neil Bartlett, Steve Simkin a Chris Stranc (Coriolis Group Books)

  • Vývoj appletů Java Entertainmentautor: John Withers (Wiley)

  • Naučte se programování internetových her pomocí Java, Michael Morrison (Sams.net)

Než si knihy podrobně prohlédnu, pojďme začít s tabulkou, která vám poskytne pohled na jejich hlavní vlastnosti z ptačí perspektivy:

Tabulka 1: Přehled knih o programování her v jazyce Java.

Název (vydavatel)Cena (USD)StránkyKapitoly (přílohy)CD ROM?AutořiObjektová orientaceSíťové víceuživatelské zaměřeníZaměření rámce hry
Black Art of Java Game Programming (Waite)49.9993320 (5)Ano3++

Velmi

Dobrý

DobrýDobrý
Špičkové programování her Java (Coriolis)39.9952321 (2)Ano3

Velmi

Dobrý

Velmi

Dobrý

Velmi

Dobrý

Vývoj appletů Java Entertainment (Wiley)29.9539210 (0)Ne1ChudýChudýPrůměrný
Naučte se programování internetových her pomocí Java (Sams.net)39.9941621 (3)Ano1PrůměrnýDobrýŽádný

K popisu záhlaví tabulky sloupec Objektová orientace zdůrazňuje, do jaké míry autor (autoři) příslušné knihy použili Javu tak, jak má být: objektově orientovaným způsobem. Dobré knihy Java bez ohledu na jejich zaměření prosazují dobré objektově orientované postupy. Nižší knihy používají Javu, jako by to byl C nebo Pascal - tedy procedurálním způsobem. Hry jsou velmi dobré kandidátské aplikace, které těží z toho, že jsou navrženy a implementovány pomocí objektové orientace, takže dobrá kniha her Java by měla být silnější na OOA / OOD / OOP (OO analýza, design, programování).

Sloupec Networked Multi-User Focus zdůrazňuje, jak moc se kniha zaměřuje na nejsilnější potenciál programování her v Javě: síťové hry pro více uživatelů.

Sloupec Game Framework Focus zdůrazňuje, do jaké míry se kniha při vysvětlování a vývoji programování her spoléhá na rámec hry. Herní rámce jsou nejmodernější herní API, která eliminují mnoho standardních úkolů, které musí všechny hry provádět (správa sprite, překreslování obrazovky, udržování skóre atd.).

Nyní se podívejte na knihy podrobně.

Black Art of Java Game Programming

Black Art of Java Game Programming je jedna z těch knih biblického typu - všech jejích 933 stran. Kniha je logicky rozdělena do tří částí:

  1. „Základy vývoje her Java“
  2. „Pokročilé herní a grafické techniky“
  3. „Galerie her“

Část 1, kterou zcela napsal hlavní autor knihy (Joel Fan), odborně propojuje tři témata vláken Java, objektové orientace a programování her do jednoho jasného, ​​osvěžujícího a soudržného celku.

Část 2 se zaměřuje na vytváření sítí a 3D techniky. Jedna kapitola vyvíjí systém správy vysokého skóre na straně serveru, zatímco druhá vyvíjí celý systém chatovací místnosti. Oba tyto systémy zahrnují programy na straně klienta i na straně serveru (jinými slovy applety a servery). Jediné dvě kapitoly pojednávající o 3D se čtou jako kniha v knize: Na více než 110 stránkách Calin Tenitchi prochází všemi klasickými základy 3D a ve své druhé kapitole analyzuje použití velkého, ale velmi dobře navrženého rámce 3D hry s názvem App3DCore. S oficiálním Java 3D API na obzoru bude tato část knihy brzy částečně zastaralá, ačkoli většina rámce se zabývá aspekty vyšší úrovně než Java 3D, takže to pro knihu není problém. Vysvětlení vnitřků takového 3D rámce je každopádně velmi poučné.

Část 3, Galerie her, obsahuje osm kapitol, z nichž každá vyvíjí celou hru. Hry se liší v propracovanosti, což ve mně vyvolalo dojem, že tato část knihy byla spěšně sestavena. Individuální design a implementace těchto her je (celkově) stejně vysoké kvality jako zbytek knihy. K dispozici je vektorový klon asteroidů, Othello, webový Mahjong, horizontálně posouvající, zábavná hra na střílení slov, dvě různé hry s magickým čtvercem a inkarnace klasické hry Worm (nebo Snake, pokud dáváte přednost) .

I když kniha není bez podílu závad, chyb atd. (Například jedna stránka obsahuje seznam kódů, který je nečestně rozbitý), moc se mi to líbilo. Kniha má mnoho silných stránek a málo slabin. Je silný na dobrou analýzu a design programu. (Aha! Mysleli jste si, že můžete tyto fáze přeskočit jen proto, že jsou to hry? Špatné.) Kniha velmi efektivně využívá různé typy diagramů (objektové diagramy, diagramy tříd, vývojové diagramy, diagramy stavových strojů, prototypové diagramy obrazovek atd.) a většina výpisů kódů je velmi čitelná. (Tento aspekt, stejně jako styl psaní, kolísá od autora k autorovi. Toto je nevyhnutelná odvrácená strana knih napsaných několika autory.)

Špičkové programování her Java

Jsem obvykle velmi skeptický vůči titulům začínajícím na „Advanced“, „Cutting-Edge“ a podobně, jednoduše proto, že obvykle nejsou! V případě Špičkové programování her Java„Coriolisovo marketingové oddělení nic nepřimluvilo: Kniha rozhodně není pro začátečníky ani středně pokročilé programátory Java. Ve skutečnosti jsou až na první a poslední kapitoly knihy věnovány důkladné a nesmyslné analýze designu a implementace dvou herních rámců. První rámec je určen pro hry pro jednoho uživatele (samostatný), zatímco druhý je zaměřen na internetové hry pro více uživatelů.

Kapitola 2 obsahuje kompletní implementaci celého klonu Asteroids, který je hratelný, bez blikání a využívá plynulé animace a zvuk. A to jen za 250 lichých řádků kódu - nebo jen za 18 stránek knihy! Tato kapitola by proto měla přesvědčit kohokoli, že používání herních rámců a rámců obecně je jedním z nejlepších způsobů, jak dosáhnout vysoké úrovně produktivity programování zdůrazněním opětovného použití designu místo opětovného použití kódu (ale v tomto procesu také opětovné použití hor kód).

Pokud je Kapitola 2 jasným a slibným znamením vysoké kvality této knihy, pak Kapitola 3 tento dojem posiluje tím, že nás seznámí se základním tématem knihy: hloubkovým prozkoumáním (velmi) dobře navrženého herního rámce. Autor mimochodem vysvětlí, co jsou karty CRC (Class / Responsibility / Collaborators), podstata Boochových diagramů tříd a diagramy interakce objektových zpráv. Mimochodem, není to jako vyplňování stránek, protože zbytek knihy používá tyto výkonné nástroje softwarového inženýrství ke zlepšení textu!

Rámec hry pro jednoho uživatele s názvem GameWorks je založen na osvědčené metaforě herního programování scény naplněné herci. Pomocí této intuitivní abstrakce můžete implementovat jakýkoli typ hry - od klasických deskových her až po rychlé akční arkádové hry. Byl jsem trochu zklamaný, že autoři vybrali jako příklad herní styl karetní hry (dávám přednost něčemu, co dostává adrenalin), i když se jim přesto daří proplétat se všemi standardními problémy a technikami, a to odborně (mimo jiné: zpracování obrazu, správa vstupu, skřítci, optimalizovaná obnova obrazovky, zvuk, náhodnost, umělá inteligence).

Ačkoli kniha není strukturována kolem částí, měla být. Od kapitoly 15 je jasná změna zaměření. Kapitola 15, „Programování síťových her“, představuje definitivní posun na vyšší rychlostní stupeň, přičemž psaní píše nový autor. Po představení hlavních problémů souvisejících se síťovými hrami (topologie připojení, latence, synchronizace stavu hry) kniha vyvíjí klon Risk, klasické strategické deskové hry (v knize nazvané Domination). Nadvláda je pouze záminkou k vývoji nového herního rámce, který bude řešit obecnou třídu víceuživatelských her se sítí. Těchto posledních pět kapitol jde těžko a já silně tuším, že čtenáři bez nějakého pozadí datové komunikace se s technickými argumenty nebudou cítit dobře. Nelze však tyto kapitoly přeskočit: Obsahují velmi důkladné zpracování kritických problémů s problémy se synchronizací stavu her a problémy s latencí, stejně jako řadu stále sofistikovanějších řešení.

Kniha končí kapitolou o optimalizaci kódu a zajímavou kapitolou o designu FRED, klonu „Doom“ napsaného v Javě! FRED používá ray casting (ano, v Javě) k dosažení klasického „Doom“ pocitu a tato základní technika je podrobně vysvětlena.

Shrnout, Špičkové programování her Java je vynikající. Psaní je přehledné a věcné. Software, který autoři vyvíjejí, je velmi kvalitní. Výpisy jsou jasné a čitelné a já o vás nevím, ale po 15 letech čtení programů jiných lidí nepovažuji čitelnost zdrojového kódu za luxus).

Vývoj appletů Java Entertainment

Vývoj appletů Java Entertainment je velmi zklamáním kniha. Pokud vám vydavatel poskytl 400 stránek, na kterých můžete nacpat vše, co víte o programování her v Javě (dobře, dobře, „Java En-terainment-App“ umožňuje), pak nezačínáte s kapitolou, která to opakuje, do omrzení, historie Javy. Nebo pokračujte „Základy jazyka Java“ (Kapitola 4), což je naprosto nadbytečné promíchání základních jazyků (proměnné, Unicode, výrazy, komentáře, tok řízení, objekty, třídy, balíčky - pojmenujete to!). Autor stále nemá podezření, že by se mohl plně soustředit na nesprávný předmět, takže v kapitole 5 „Pokročilejší techniky“ se věnuje polím, vektorům, řetězcům, výjimkám, multithreadingu, appletům. Stále o něco teplejší je Kapitola 6, „Grafika, zvuk a události“. Ale také zde budete těžko hledat odkazy na programování her. Místo toho je drahocenná stránka nemovitostí věnována tomu, aby vám přinesla ne méně než 13 půlstránkových screenshotů z triviálních výsledků draw3DRect (), drawOval (), drawArc () a podobně!

V polovině knihy (Kapitola 7, strana 219) máme první vzhled nějaké Javy hra kód, v tomto případě pokus o karetní hru Solitaire (rozhodně karetní hry musí být v sezóně). Design hry, implementace hry a čitelnost výpisů jsou ve srovnání se stejnými aspekty ostatních knih v této recenzi tak horší, že je to jasné Vývoj appletů Java Entertainment má problémy.

Některá pozoruhodná tvrzení autora a obecná nedbalost nebo zneužití výrazů, které mají křišťálově čistý význam, pomohou tuto knihu potopit, než bude mít možnost plout. Mechanismus správy rozvržení AWT je kritizován následovně: "Způsob, jakým je rozvržení zacházeno, je docela zpackaný. Ne že by to nedávalo smysl a není to z dobrého důvodu, ale stále je zpackané." Síťové rozhraní API Java se také autorovi nelíbí: „Způsob, jakým se Java připojuje k jiným místům v síti, je přerušený, a přestože není zcela nepoužitelný, ve svém současném stavu určitě není příliš funkční.“ Zvláštní, přísahal bych, že se ostatním a mně podaří vytvářet docela vzrušující věci se stejným API (webový prohledávač, DAMPP - odkazy na mé předchozí viz níže Zdroje JavaWorld články o těchto tématech). Tato poslední citace vychází z kapitoly 8 „Hra pro více hráčů“, kde se nám nicméně zobrazuje „hloupý malý příklad“ (cituji knihu) ve formě chatovací aplikace. (Další příklady jazyka, který v této knize těžko spolknu, jsou „utěsnit si to do hlavy“ (str. 283), „a plivat věci na soket“ (str. 284), abych citoval jen dva.)

Není k této knize něco dobrého? Ve skutečnosti existuje: Kapitola 2 „Principy herního designu“ představuje zajímavou analýzu toho, co dělá dobrou hru dobrou. Autor zde září tím, že identifikuje několik aspektů, které mají všechny dobré hry, například dobře navržené herní rozhraní, pravdivost (úroveň realismu), přizpůsobitelnost, AI atd. Následující kapitola „Herní design v akci“ analyzuje některé skutečné hry a zdůrazňuje jejich použití dobrých designových prvků hry. Pak je zde jedna velká kapitola (Kapitola 9) věnovaná studiu a použití Gamelet Toolkit (veřejný herní rámec, napsaný Markem Tacchim, který získal mezinárodní cenu JavaCup). Obávám se, že tyto tři kapitoly jsou jediné části knihy, které stojí za papír, na který jsou vytištěny.

Naučte se programování internetových her pomocí Java

Srovnávací recenze jsou těžké, protože jen zřídka jsou dvě (nebo více) knih v přesně stejné kategorii. Naučte se programování internetových her pomocí Java, podle zadní obálky oslovuje uživatele v kategoriích „nový“ až „příležitostný“. Jinými slovy, začátečníci.