Knjige programiranja Java igre: usporedni pregled

Programiranje igara ono je što me uvuklo u računala prije nekih 15 godina. Ako ste uopće poput mene, čarobna animacija jarkih boja koja zrači iz računalnih igara privlači vas poput moljca na svjetlost. Ali biti fascinirani računalnim igrama (i njihovim unutarnjim dijelovima) i moći ih programirati, dvije su različite stvari. Morao sam naučiti zanat na teži način - satima buljeći u igre dok ne vidite kako rade. Ovih dana možete prevariti i krenuti po prečacu: uzmite knjigu i jednostavno se "umom spojite" s iskusnim programerom koji odbacuje sve svoje iskustvo, savjete i trikove.

Imajući na umu da neke knjige o Javi (pogledajte knjigu Laura Lemay dolje navedenu u odjeljku Resursi) žele vas danas povesti različitim putovima, mogli biste učiniti i gore stvari nego vjerovati bivšem (komercijalnom) programeru igara da pregleda trenutno dostupne knjige o programiranju Java igara.

Četiri naslova našla su se na mom pragu za ovu recenziju:

  • Black Art of Java programiranje igara , Joel Fan, Eric Ries i Calin Tenitchi (Waite Group Press)

  • Vrhunsko programiranje Java igara , Neil Bartlett, Steve Simkin i Chris Stranc (Coriolis Group Books)

  • Razvoj apela za zabavu Java , John Withers (Wiley)

  • Naučite sebe programiranje internetskih igara na Javi , Michael Morrison (Sams.net)

Prije nego što detaljno pregledam knjige, započnimo s tablicom koja vam daje ptičji pogled na njihove glavne karakteristike:

Tablica 1: Pregled knjiga programiranja Java igara.

Naslov (izdavač) Cijena (US $) Stranice Poglavlja (Dodaci) CD ROM? Autori Orijentacija prema objektu Umreženi višekorisnički fokus Fokus okvira igre
Black Art of Java programiranje igara (Waite) 49,99 933 20 (5) Da 3 ++

Vrlo

Dobro

Dobro Dobro
Vrhunsko programiranje Java igara (Coriolis) 39,99 523 21 (2) Da 3

Vrlo

Dobro

Vrlo

Dobro

Vrlo

Dobro

Razvoj apela za zabavu Java (Wiley) 29,95 392 10 (0) Ne 1 Jadno Jadno Prosječno
Naučite se programiranju internetskih igara s Javom (Sams.net) 39,99 416 21 (3) Da 1 Prosječno Dobro Nijedna

Da bi opisao naslove tablica, stupac Objektna orijentacija naglašava u kojoj su mjeri autori dotične knjige koristili Javu na način kako je predviđeno: na objektno orijentirani način. Dobre Java knjige, bez obzira na njihov fokus, provode dobre objektno orijentirane prakse. Inferior knjige koriste Javu kao da je C ili Pascal - to jest na proceduralni način. Igre su vrlo dobri kandidatski programi kojima koristi što su dizajnirani i implementirani pomoću objektne orijentacije, tako da dobra knjiga o Java igrama treba biti jaka na OOA / OOD / OOP (OO analiza, dizajn, programiranje).

Stupac Mrežni višekorisnički fokus ističe koliko se knjiga usredotočuje na najjači Java-ov programski potencijal za igre: umrežene, višekorisničke igre.

Stupac Game Framework Focus naglašava u kojoj se mjeri knjiga oslanja na okvir igre kako bi objasnila i razvila programiranje igara. Okviri igara su vrhunski API-ji za igre koji eliminiraju mnoge standardne zadatke koje sve igre moraju izvršiti (upravljanje spritovima, prebojavanje zaslona, ​​vođenje rezultata i tako dalje).

Sada, pogledajte knjige u detalje.

Crna umjetnost Java programiranja igara

Programiranje igara Black Art of Java jedna je od tih knjiga biblijskog tipa - svih 933 stranice. Knjiga je logički strukturirana u tri dijela:

  1. "Osnove razvoja Java igara"
  2. "Napredne tehnike igre i grafike"
  3. "Galerija igara"

Dio 1, koji je u potpunosti napisao glavni autor knjige (Joel Fan), stručno tka tri predmetne niti Jave, objektne orijentacije i osnova programiranja igara u jednu jasnu, osvježavajuću i koherentnu cjelinu.

Dio 2 usredotočen je na umrežavanje i 3D tehnike. Jedno poglavlje razvija sustav upravljanja rezultatima na strani poslužitelja, dok drugo razvija čitav sustav chat soba. Oba ova sustava uključuju programe na strani klijenta i na strani poslužitelja (drugim riječima, aplete i poslužitelje). Jedina dva poglavlja koja se bave 3D-om čitaju se poput knjiga u knjizi: Na preko 110 stranica Calin Tenitchi provlači se kroz sve klasične 3D osnove i, u svom drugom poglavlju, analizira upotrebu velikog, ali vrlo dobro osmišljenog 3D okvira igre tzv. App3DCore. S službenim Java 3D API-jem na pomolu, ovaj će dio knjige uskoro biti djelomično zastario, iako se velik dio okvira bavi aspektima više razine od Java 3D-a, tako da knjizi to nije problem. U svakom slučaju, objašnjenje unutrašnjosti takvog 3D okvira vrlo je prosvjetljujuće.

Dio 3, Galerija igara, sadrži osam poglavlja, od kojih svako razvija cijelu igru. Igre se razlikuju po sofisticiranosti, zbog čega sam stekao dojam da je ovaj dio knjige prilično ishitreno sastavljen. Pojedinačni dizajn i provedba igara je (sveukupno) jednako visoke kvalitete kao i ostatak knjige. Tu su klon Asteroida zasnovani na vektorima, Othello, Mahjong zasnovan na webu, edukativna igra s vodoravnim pomicanjem, pucanjem riječi, dvije različite igre magičnog kvadrata i inkarnacija klasične igre Worm (ili Snake, ako želite) .

Iako knjiga nije bez udjela grešaka, pogrešaka i tako dalje (na primjer, jedna stranica sadrži popis kodova koji je iskrivljen izvan vjerovanja), jako mi se svidjela. Knjiga ima mnogo snaga i slabosti. Snažan je u dobroj analizi i dizajnu programa. (Ah! Mislili ste da biste mogli preskočiti te faze samo zato što su igre? Pogrešno.) Knjiga vrlo učinkovito koristi razne vrste dijagrama (objektni dijagrami, dijagrami klasa, dijagrami toka, dijagrami državnih strojeva, dijagrami prototipa zaslona itd.) , a većina popisa kodova vrlo je čitljiva. (Ovaj aspekt, poput stila pisanja, varira od autora do autora. Ovo je neizbježna naličje knjiga koje je napisalo nekoliko autora.)

Vrhunsko programiranje Java igara

Obično sam vrlo sumnjičav prema naslovima koji počinju s "Advanced", "Cutting Edge" i slično, jednostavno zato što obično nisu! U slučaju Cutting-Edge Java Game programiranja , Coriolisov marketinški odjel nije ništa pretjerao: knjiga definitivno nije za početnike ili Java programere srednje razine. Zapravo su sva poglavlja, osim prvog i posljednjeg, posvećena dubinskoj, besmislenoj analizi dizajna i provedbe dva okvira igre. Prvi okvir udovoljava igrama za jednog korisnika (samostalne), dok je drugi usmjeren prema višekorisničkim igrama utemeljenim na Internetu.

Poglavlje 2 sadrži kompletnu implementaciju cijelog klona Asteroida koji se može igrati, bez treperenja i koristi glatku animaciju i zvuk. I to u samo 250 neparnih redaka koda - ili samo 18 stranica knjiga! Stoga bi ovo poglavlje trebalo uvjeriti bilo koga da je korištenje okvira igara i okvira općenito jedan od najboljih načina za postizanje visoke razine produktivnosti programiranja naglašavanjem ponovne upotrebe dizajna, umjesto ponovne upotrebe koda (ali u tom procesu također ponovne upotrebe planina kodirati).

Ako je poglavlje 2 jasan, obećavajući znak visoke kvalitete ove knjige, onda poglavlje 3 pojačava taj dojam uvodeći nas u temeljnu temu knjige: u dubinsko istraživanje (vrlo) dobro osmišljenog okvira igre. U prolazu, autor objašnjava što su CRC (Class / Responsibilities / Collaborators) kartice, suština dijagrama klase Booch i dijagrami interakcije s objektnim porukama. Inače, ovo nije punjenje stranica jer ostatak knjige koristi ove moćne alate softverskog inženjerstva za poboljšanje teksta!

Okvir igara za jednog korisnika, nazvan GameWorks, zasnovan je na provjerenoj metafori programiranja igara na pozornici koja je naseljena glumcima. Koristeći ovu intuitivnu apstrakciju, možete implementirati bilo koju vrstu igre - od klasičnih društvenih igara do brzih, akcijskih arkadnih igara. Bio sam pomalo razočaran što su autori kao primjer igre odabrali igre s kartama (više volim nešto zbog čega adrenalin teče), iako uspijevaju uplesti sva standardna izdanja i tehnike, i to stručno (između ostalih: obrada slika, upravljanje unosima, spriteovi, optimizirano osvježavanje zaslona, ​​zvuk, slučajnost, umjetna inteligencija).

Iako knjiga nije strukturirana po dijelovima, trebala je biti. Jasan je fokus fokusa od 15. poglavlja nadalje. Poglavlje 15, "Programiranje mrežnih igara", predstavlja definitivan pomak u višu brzinu, a novi autor je napisao. Nakon predstavljanja glavnih problema oko mrežnih igara (topologije povezivanja, latencija, sinkronizacija stanja igre), knjiga razvija klon rizika, klasičnu stratešku društvenu igru ​​(u knjizi nazvanu Dominacija). Dominacija je samo izgovor za razvijanje novog okvira igara koji se bavi generičkom klasom mrežnih višekorisničkih igara. Ovih zadnjih pet poglavlja teško se odvijaju, a ja pretpostavljam da se čitatelji bez neke pozadine za podatkovnu komunikaciju neće osjećati ugodno s više tehničkih argumenata. Ali ne možete preskočiti ova poglavlja:Sadrže vrlo temeljitu obradu kritičnih pitanja deinhronizacije stanja i problema sa kašnjenjem igara, kao i niz sve sofisticiranijih rješenja.

Knjiga završava poglavljem o optimizaciji koda i zanimljivim poglavljem o dizajnu FRED-a, klona "Doom" napisanog na Javi! FRED koristi lijevanje zrakama (da, na Javi) kako bi postigao onaj klasični "Doom" osjećaj, a ova temeljna tehnika detaljno je objašnjena.

Da rezimiramo, vrhunsko programiranje Java igara je izvrsno. Pisanje je lucidno i precizno. Softver koji autori razvijaju vrlo je kvalitetan. Popisi su jasni i čitljivi, a ja ne znam za vas, ali nakon čitanja tuđih programa 15 godina, čitljivost izvornog koda ne smatram luksuzom).

Razvoj Java Entertainment Appleta

Razvoj Java Entertainment Appleta vrlo je razočaravajuća knjiga. Ako vam je izdavač dao 400 stranica na kojima možete strpati sve što znate o programiranju igara na Javi (u redu, u redu, "Java En-ter-tain-ment App-lets"), tada ne započinjete s poglavljem koje ponavlja, ad mučnina, povijest Jave. Ili nastavite s "Osnove Jave" (poglavlje 4), potpuno suvišnim preispitivanjem jezičnih osnova (varijable, Unicode, izrazi, komentari, tijek kontrole, objekti, klase, paketi - samo vi!). Autor još uvijek ne sumnja da se možda usredotočuje na pogrešnu temu, pa u petom poglavlju, "Naprednije tehnike", dronira s nizovima, vektorima, žicama, iznimkama, multitreadingom, apletima. Sve malo vruće postaje poglavlje 6, "Grafika, zvuk i događaji". Ali i ovdje ćete teško pronaći bilo kakve reference na programiranje igara. Umjesto toga, dragocjeno stranica nekretnine posvećen donosimo vam ne manje od 13 na pola stranice screenshot trivijalne rezultate draw3DRect(), drawOval(), drawArc()i slično!

Na pola puta kroz knjigu (poglavlje 7, stranica 219) imamo prvi izgled nekog Java koda igre , u ovom slučaju, pokušaja igre pasijansa Solitaire (sigurno, kartaške igre moraju biti u sezoni). Dizajn igre, implementacija igre i čitljivost popisa toliko su inferiorni u usporedbi s istim aspektima ostalih knjiga u ovom pregledu da je jasno da razvoj Java Entertainment Appleta ima problema.

Neke izvanredne autorove izjave i općenito traljavost ili zlouporaba izraza koji imaju kristalno jasno značenje pomažu samo da se ova knjiga potopi prije nego što bude imala priliku isploviti. Mehanizam upravljanja izgledom AWT-a kritizira se na sljedeći način: "Način na koji se rukuje izgledom prilično je pokvaren. Nije da nema smisla i nije s dobrim razlogom, ali je još uvijek zabrljan." Java-ov API za umrežavanje također nije po volji autora: "Način na koji se Java povezuje s drugim lokacijama na mreži je slomljen i premda nije u potpunosti neupotrebljiv, zasigurno nije previše funkcionalan u svom trenutnom stanju." Čudno, zakleo bih se da drugi i ja uspijevamo stvoriti prilično uzbudljive stvari s istim tim API-jem (web-pretraživač,DAMPP - pogledajte donje resurse za reference na moj prethodni JavaWorldčlanci o tim temama). Posljednji citat izlazi iz poglavlja 8, "Igre za više igrača", gdje nam se ipak pokazuje "glupi mali primjer" (kako bismo citirali knjigu) u obliku aplikacije za chat. (Ostali primjeri jezika koje mi je teško progutati u ovoj knjizi su "zacementirati si to u glavi" (str. 283.), "i pljuvanje stvari u utičnicu" (str. 284.), ako citiram samo dva.)

Zar se o ovoj knjizi ne može reći ništa dobro? Zapravo postoji: Poglavlje 2, "Principi dizajna igara", zanimljiva je analiza onoga što dobru igru ​​čini dobrom. Ovdje autor blista identificirajući nekoliko aspekata koje imaju sve dobre igre, poput dobro dizajniranog sučelja za igre, istinitosti (razina realizma), prilagodljivosti, AI, i tako dalje. Sljedeće poglavlje, "Dizajn igre na djelu", analizira neke stvarne igre i naglašava njihovu upotrebu dobrih elemenata dizajna igara. Zatim postoji jedno veliko poglavlje (poglavlje 9) posvećeno proučavanju i korištenju Gamelet Toolkit-a (okvira igara u javnoj domeni, koji je napisao Mark Tacchi, koji je dobio nagradu JavaCup International). Bojim se da su ova tri poglavlja jedini dijelovi knjige koji vrijede papira na kojem su tiskani.

Naučite se programiranju internetskih igara s Javom

Usporedne kritike su teške jer se rijetko nalaze dvije (ili više) knjiga u potpuno istoj kategoriji. Naučite sebe programiranje internetskih igara s Javom , prema zadnjoj naslovnici, obraća se korisnicima u kategorijama "novo" do "slučajno". Drugim riječima, početnici.