Programovanie

Knihy o programovaní hier v jazyku Java: porovnávacia recenzia

Programovanie hier je to, čo ma pred 15 rokmi dostalo do počítačov. Ak ste vôbec ako ja, potom vás magická pestrofarebná animácia vyžarujúca z počítačových hier láka ako mole na svetlo. Ale byť fascinovaný počítačovými hrami (a ich vnútornými priestormi) a vedieť ich programovať sú dve rôzne veci dohromady. Musel som sa tomuto remeslu naučiť ťažko - pozeraním sa na hry celé hodiny, kým ste nemohli viď ako fungovali. V dnešnej dobe môžete podvádzať a ísť skratkou: Zoberte si knihu a len „splynite“ so skúseným programátorom, ktorý vyvracia všetky svoje skúsenosti, tipy a triky.

Nezabúdajte, že niektoré knihy v jazyku Java (pozrite si knihu Laury Lemayovej, ktorá je uvedená nižšie v časti Zdroje), vás dnes chcú úplne viesť rôznymi cestami, mohli by ste robiť aj horšie veci, ako dôverovať bývalému (komerčnému) programátorovi hier, ktorý skontroluje aktuálne dostupné knihy o programovaní hier v jazyku Java.

Pri mojej recenzii mi na prahu pristáli štyri tituly:

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

  • Špičkové programovanie Java hier, autori: Neil Bartlett, Steve Simkin a Chris Stranc (Coriolis Group Books)

  • Vývoj appletov Java Entertainmentod Johna Withersa (Wiley)

  • Naučte sa programovanie internetových hier pomocou Javaautor: Michael Morrison (Sams.net)

Predtým, ako si knihy podrobne preštudujem, začnime tabuľkou, ktorá poskytuje pohľad na ich hlavné charakteristiky z vtáčej perspektívy:

Tabuľka 1: Prehľad kníh o programovaní hier v jazyku Java.

Názov (vydavateľ)Cena (USD)StránkyKapitoly (prílohy)CD-ROM?AutoriObjektová orientáciaSieťové zameranie na viacerých používateľovZameranie rámca hry
Black Art of Java Game Programming (Waite)49.9993320 (5)Áno3++

Veľmi

Dobre

DobreDobre
Špičkové programovanie Java hier (Coriolis)39.9952321 (2)Áno3

Veľmi

Dobre

Veľmi

Dobre

Veľmi

Dobre

Vývoj appletov Java Entertainment (Wiley)29.9539210 (0)Nie1ChudobnýChudobnýPriemerná
Naučte sa programovanie internetových hier pomocou Java (Sams.net)39.9941621 (3)Áno1PriemernáDobreŽiadne

Pri popise nadpisov tabuľky stĺpec Objektová orientácia zdôrazňuje, do akej miery autor (autori) príslušnej knihy použili jazyk Java tak, ako sa to má: objektovo orientovaným spôsobom. Dobré knihy Java bez ohľadu na ich zameranie presadzujú dobré objektovo orientované postupy. Horšie knihy používajú Javu, akoby to bol C alebo Pascal - teda procedurálnym spôsobom. Hry sú veľmi dobré kandidátske aplikácie, ktoré ťaží z toho, že sú navrhnuté a implementované pomocou objektovej orientácie, takže dobrá kniha hier Java by mala byť silnejšia v oblasti OOA / OOD / OOP (analýza OO, dizajn, programovanie).

Stĺpec Sieťové zameranie na viacerých používateľov zdôrazňuje, koľko sa kniha zameriava na najsilnejší potenciál programovania hier v Jave: sieťové hry pre viacerých používateľov.

Stĺpec Game Framework Focus zdôrazňuje, do akej miery sa kniha pri vysvetľovaní a vývoji programovania hier spolieha na rámec hry. Herné rámce sú najmodernejšie herné rozhrania API, ktoré eliminujú množstvo štandardných úloh, ktoré musia všetky hry vykonávať (správa škriatkov, prefarbenie obrazovky, udržiavanie skóre atď.).

Teraz sa pozrite na knihy podrobne.

Black Art of Java Game Programming

Black Art of Java Game Programming je jednou z tých kníh biblického typu - má všetkých 933 strán. Kniha je logicky rozdelená do troch častí:

  1. „Základy vývoja hier Java“
  2. „Pokročilé herné a grafické techniky“
  3. „Galéria hier“

1. časť, ktorú úplne napísal hlavný autor knihy (Joel Fan), odborne spája tri základné témy Java, objektovej orientácie a základov programovania hier do jedného jasného, ​​osviežujúceho a súvislého celku.

2. časť sa zameriava na vytváranie sietí a 3D techniky. Jedna kapitola vyvíja systém riadenia vysokého skóre na strane servera, zatiaľ čo iná vyvíja celý systém chatovacích miestností. Oba tieto systémy zahŕňajú programy na strane klienta a na strane servera (inými slovami applety a servery). Jediné dve kapitoly zaoberajúce sa 3D sa čítajú ako kniha v knihe: Na viac ako 110 stranách Calin Tenitchi prelomí všetky klasické základy 3D a vo svojej druhej kapitole analyzuje použitie veľkého, ale veľmi dobre navrhnutého rámca 3D hry tzv. App3DCore. S oficiálnym Java 3D API na obzore bude táto časť knihy čoskoro čiastočne zastaraná, aj keď veľká časť rámca sa zaoberá aspektmi vyššej úrovne ako Java 3D, takže to pre knihu nie je problém. V každom prípade je vysvetlenie vnútorných častí takého 3D rámca veľmi poučné.

Časť 3, Galéria hier, obsahuje osem kapitol, z ktorých každá rozvíja celú hru. Hry sa líšia sofistikovanosťou, čo vo mne vyvolalo dojem, že táto časť knihy bola zostavená dosť narýchlo. Individuálny dizajn a implementácia týchto hier je však (celkovo) rovnako vysokej kvality ako zvyšok knihy. K dispozícii je klon asteroidov založený na vektoroch, Othello, webový Mahjong, hra s horizontálnym posúvaním a úpravou slovných spojení, dve rôzne hry s magickým štvorcom a inkarnácia klasickej hry Worm (alebo Snake, ak chcete). .

Aj keď kniha nie je bez podielu závad, chýb a podobne (napríklad jedna stránka obsahuje zoznam kódov, ktorý je nedôverčivo zmanipulovaný), veľmi sa mi páčil. Kniha má veľa silných a málo slabých stránok. Je kladený na dobrú analýzu a dizajn programu. (Aha! Mysleli ste si, že môžete tieto fázy preskočiť len preto, že sú to hry? Nesprávne.) Kniha veľmi efektívne využíva rôzne typy diagramov (objektové diagramy, diagramy tried, vývojové diagramy, diagramy stavových strojov, diagramy prototypov obrazoviek atď.) a väčšina zoznamov kódov je veľmi dobre čitateľná. (Tento aspekt, rovnako ako štýl písania, kolíše od autora k autorovi. Toto je nevyhnutná odvrátená strana kníh napísaných niekoľkými autormi.)

Špičkové programovanie Java hier

Obyčajne som veľmi skeptický voči titulom začínajúcim na slovo „Advanced“, „Cutting-Edge“ a podobne, jednoducho preto, že zvyčajne nie sú! V prípade Špičkové programovanie Java hier„Coriolisovo marketingové oddelenie nič neurobilo: Kniha určite nie je pre začiatočníkov ani pre stredne pokročilých programátorov Java. V skutočnosti sú až na prvú a poslednú kapitolu knihy venované podrobnej a nezmyselnej analýze návrhu a implementácie dvoch herných rámcov. Prvý rámec je určený pre hry pre jedného používateľa (samostatný) a druhý je zameraný na internetové hry pre viacerých používateľov.

Kapitola 2 obsahuje kompletnú implementáciu celého klonu Asteroids, ktorý je hrateľný, bez blikania a ktorý využíva plynulú animáciu a zvuk. A to iba v 250 nepárnych riadkoch kódu - alebo iba na 18 stránkach kníh! Táto kapitola by preto mala presvedčiť kohokoľvek, že používanie herných rámcov a rámcov všeobecne je jedným z najlepších spôsobov, ako dosiahnuť vysokú úroveň produktivity programovania zvýraznením opätovného použitia návrhu namiesto opätovného použitia kódu (ale v tomto procese tiež opätovným využitím hôr kód).

Ak je kapitola 2 jasným, sľubným znakom vysokej kvality tejto knihy, potom kapitola 3 posilňuje tento dojem tým, že nás predstavuje základnou témou knihy: hĺbkovým skúmaním (veľmi) dobre navrhnutého herného rámca. Autor na záver vysvetlí, čo sú karty CRC (Class / Responsibility / Collaborators), podstata Boochových diagramov tried a diagramy interakcie objektových správ. Mimochodom, nejde o plné vyplnenie stránky, pretože zvyšok knihy využíva tieto výkonné nástroje softvérového inžinierstva na vylepšenie textu!

Rámec hry pre jedného používateľa s názvom GameWorks je založený na osvedčenej metafore herného programovania javiska obývaného hercami. Pomocou tejto intuitívnej abstrakcie môžete implementovať akýkoľvek typ hry - od klasických stolových hier až po rýchle arkádové hry plné akcií. Mierne ma sklamalo, že autori vybrali ako príklad herného štýlu kartové hry (preferujem niečo, z čoho prúdi adrenalín), aj keď sa im napriek tomu darí pretkávať všetky štandardné problémy a techniky, a to odborne (okrem iného: spracovanie obrazu, správa vstupu, skřítci, optimalizované obnovenie obrazovky, zvuk, náhodnosť, umelá inteligencia).

Aj keď kniha nie je štruktúrovaná po častiach, mala byť. Od 15. kapitoly je jasná zmena zamerania. Kapitola 15, „Programovanie sieťových hier“, predstavuje definitívny posun na vyšší prevodový stupeň, pričom do činnosti sa zapojil nový autor. Po predstavení hlavných problémov týkajúcich sa sieťových hier (topológie pripojenia, latencia, synchronizácia stavu hry) kniha vyvíja klon Rizika, klasickej strategickej stolovej hry (v knihe nazývanej Dominácia). Nadvláda je iba výhovorkou pre vývoj nového herného rámca zameraného na všeobecnú triedu hier pre viacerých používateľov zapojených do siete. Týchto posledných päť kapitol je náročných a pevne verím, že čitatelia bez znalostí dátovej komunikácie sa nebudú cítiť spokojnejší s technickými argumentmi. Neexistuje však spôsob, ako môžete tieto kapitoly preskočiť: Obsahujú veľmi dôkladné riešenie kritických problémov s problémami s synchronizáciou stavu a latencie stavu hry, ako aj s radom čoraz sofistikovanejších riešení.

Kniha končí kapitolou o optimalizácii kódu a zaujímavou kapitolou o dizajne FRED, klonu „Doom“ napísaného v Jave! FRED používa na odlievanie lúčov lúčov (áno, v Jave), aby dosiahol klasický pocit „Doom“, a táto základná technika je podrobne vysvetlená.

Zhrnúť, Špičkové programovanie Java hier je vynikajúci. Písanie je prehľadné a vecné. Softvér, ktorý autori vyvíjajú, je veľmi kvalitný. Výpisy sú jasné a čitateľné a neviem o vás, ale po 15 rokoch čítania programov iných ľudí nepovažujem čitateľnosť zdrojového kódu za luxus).

Vývoj appletov Java Entertainment

Vývoj appletov Java Entertainment je veľmi sklamanou knihou. Ak vám vydavateľ dal 400 stránok, na ktorých môžete napchať všetko, čo viete o programovaní hier v jazyku Java (v poriadku, v poriadku „Java En-tain-ment App umožňuje“), potom nezačínajte kapitolou, ktorá to opakuje, ad nauseam, história Javy. Alebo pokračujte časťou „Java Fundamentals“ (Kapitola 4), úplne nadbytočným prepracovaním jazykových základov (premenné, Unicode, výrazy, komentáre, tok riadenia, objekty, triedy, balíčky - čo si len spomeniete!). Autor stále nemá podozrenie, že by sa mohol úplne sústrediť na nesprávny predmet, a preto v kapitole 5 „Pokročilejšie techniky“ pokračuje s poľami, vektormi, reťazcami, výnimkami, multithreadingom, appletmi. Stále mierne ohrievané je Kapitola 6, „Grafika, zvuk a udalosti“. Ale tiež tu budete ťažko hľadať akékoľvek odkazy na programovanie hier. Namiesto toho sa drahocenná stránka nehnuteľností zameriava na to, aby vám priniesla najmenej 13 polstránkových snímok obrazovky z triviálnych výsledkov draw3DRect (), drawOval (), drawArc () a podobne!

V polovici knihy (kapitola 7, strana 219) máme prvé vystúpenie nejakej Javy hra kód, v tomto prípade pokus o kartovú hru Solitaire (kartové hry musia byť určite v sezóne). Dizajn hry, implementácia hry a čitateľnosť záznamov sú v porovnaní s rovnakými aspektmi ostatných kníh v tejto recenzii tak horšie, že je zrejmé Vývoj appletov Java Entertainment má problémy.

Niektoré pozoruhodné autorove výroky a všeobecná nedbalosť alebo zneužitie výrazov, ktoré majú krištáľovo čistý význam, iba pomôžu potopiť túto knihu skôr, ako bude mať šancu vyplávať. Mechanizmus riadenia rozloženia AWT je kritizovaný nasledovne: "Spôsob, akým je rozloženie spracované, je dosť chybné. Nie, že by to nemalo zmysel a nie je to z dobrého dôvodu, ale stále je chybné." Sieťové rozhranie API spoločnosti Java sa tiež nepáči autorovi: „Spôsob, akým sa Java pripája na iné miesta v sieti, je zlomený, a hoci nie je úplne nepoužiteľný, v súčasnom stave nie je veľmi funkčný.“ Zvláštne, bol by som prisahal, že ostatní a ja dokážeme pomocou toho istého API vytvoriť celkom zaujímavé veci (webový prehľadávač, DAMPP - odkazy na moje predchádzajúce nájdete v nižšie uvedených zdrojoch. JavaWorld články na tieto témy). Táto posledná citácia vychádza z kapitoly 8 „Hra viacerých hráčov“, kde sa nám však zobrazuje „malý hlúpy príklad“ (citujem knihu) vo forme chatovacej aplikácie. (Ďalšími príkladmi jazyka, ktorý v tejto knihe ťažko prehltávam, sú „cementovanie do tvojej hlavy“ (s. 283), „a pľuvanie vecí cez soket“ (s. 284), citujem iba dva.)

Nie je možné k tejto knihe povedať niečo dobré? V skutočnosti je tu: Kapitola 2 „Princípy herného dizajnu“ predstavuje zaujímavú analýzu toho, čo robí dobrú hru dobrou. Autor tu žiari identifikáciou niekoľkých aspektov, ktoré majú všetky dobré hry, ako napríklad dobre navrhnuté herné rozhranie, pravdivosť (úroveň realizmu), prispôsobiteľnosť, AI atď. Ďalšia kapitola „Herný dizajn v akcii“ analyzuje niektoré skutočné hry a zdôrazňuje ich použitie dobrých prvkov herného dizajnu. Potom je tu jedna veľká kapitola (kapitola 9) venovaná štúdiu a použitiu Gamelet Toolkit (verejný herný rámec, ktorý napísal Mark Tacchi, ktorý získal cenu JavaCup International). Obávam sa, že tieto tri kapitoly sú jediné časti knihy, ktoré stoja za papier, na ktorý sú vytlačené.

Naučte sa programovanie internetových hier pomocou Java

Porovnávacie recenzie sú náročné, pretože zriedka sú dve (alebo viac) kníh presne v tej istej kategórii. Naučte sa programovanie internetových hier pomocou Java, podľa zadnej strany obálky oslovuje používateľov v kategóriách „nový“ až „príležitostný“. Inými slovami, začiatočníci.

$config[zx-auto] not found$config[zx-overlay] not found