Programiranje

Knjige programiranja iger Java: Primerjalni pregled

Programiranje iger je tisto, kar me je v računalnike spravilo pred približno 15 leti. Če ste sploh podobni meni, vas čarobna, živobarvna animacija, ki se širi iz računalniških iger, privlači kot molj na svetlo. Toda navdušenje nad računalniškimi igrami (in njihovimi notranjimi elementi) in njihovo programiranje sta dve različni stvari. Poklica sem se moral naučiti na težji način - tako da sem ure in ure gledal v igre, dokler nisi mogel glej kako so delali. Danes lahko goljufate in se odločite za bližnjico: vzemite knjigo in se preprosto »zmenite« z izkušenim programerjem, ki odvrne vse svoje izkušnje, nasvete in trike.

Upoštevajoč, da vas nekatere knjige o Javi (glejte spodaj navedeno knjigo Laura Lemay v razdelku Viri) dandanes želijo popeljati po različnih poteh, lahko storite še hujše stvari, kot da zaupate nekdanjemu (komercialnemu) programerju iger, da bo pregledal trenutno na voljo knjige za programiranje iger Java.

Štirje naslovi so se znašli pred mojim pragom:

  • Črna umetnost programiranja iger Java, Joel Fan, Eric Ries in Calin Tenitchi (Waite Group Press)

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

  • Razvijanje aplikacij Java Entertainment, John Withers (Wiley)

  • Naučite se programiranja internetnih iger z Javo, Michael Morrison (Sams.net)

Preden podrobno pregledam knjige, začnimo s tabelo, ki vam daje ptičji pogled na njihove glavne značilnosti:

Tabela 1: Pregled knjig za programiranje iger Java.

Naslov (založnik)Cena (USD)StraniPoglavja (dodatki)CD ROM?AvtorjiPredmetna usmerjenostOmrežje za več uporabnikovOsredotočenost na okvir igre
Črna umetnost programiranja iger Java (Počakaj)49.9993320 (5)Da3++

Zelo

Dobro

DobroDobro
Vrhunsko programiranje iger Java (Coriolis)39.9952321 (2)Da3

Zelo

Dobro

Zelo

Dobro

Zelo

Dobro

Razvijanje aplikacij Java Entertainment (Wiley)29.9539210 (0)Ne1SlaboSlaboPovprečno
Naučite se programiranja internetnih iger z Javo (Sams.net)39.9941621 (3)Da1PovprečnoDobroNobenega

Za opis naslovov tabel stolpec Objektna orientacija poudarja, v kolikšni meri so avtorji posamezne knjige uporabili Javo tako, kot naj bi jo uporabljali: na objektno usmerjen način. Dobre knjige Java, ne glede na njihovo usmerjenost, uveljavljajo dobre objektno usmerjene prakse. Slabše knjige uporabljajo Javo, kot da bi bila C ali Pascal - torej na proceduralni način. Igre so zelo dobre kandidatne aplikacije, ki jim koristi, če jih oblikujete in implementirate z uporabo objektno usmerjene orientacije, zato je dobra knjiga o igrah Java boljša na OOA / OOD / OOP (OO Analysis, Design, Programming).

V stolpcu Networked Multi-User Focus je poudarjeno, koliko se knjiga osredotoča na najmočnejši Java-ov potencial za programiranje iger: mrežne igre za več uporabnikov.

Stolpec Game Framework Focus poudarja, v kolikšni meri se knjiga zanaša na okvir igre za razlago in razvoj programiranja iger. Okviri iger so najsodobnejši API-ji za igre, ki odpravljajo številne standardne naloge, ki jih morajo izvajati vse igre (upravljanje s spriteom, prebarvanje zaslona, ​​vodenje rezultatov itd.).

Zdaj pa podrobno poglejte knjige.

Črna umetnost programiranja iger Java

Črna umetnost programiranja iger Java je ena izmed tistih knjig biblijskega tipa - vseh 933 strani. Knjiga je logično strukturirana v tri dele:

  1. "Osnove razvoja iger Java"
  2. "Napredne tehnike iger in grafike"
  3. "Galerija iger"

1. del, ki ga je v celoti napisal glavni avtor knjige (Joel Fan), strokovno tka tri tematske niti Java, objektno usmerjenost in osnove programiranja iger v eno jasno, osvežilno in skladno celoto.

Drugi del se osredotoča na mreženje in 3D tehnike. Eno poglavje razvija sistem za vodenje visokih ocen na strani strežnika, drugo pa celoten sistem klepetalnice. Oba sistema vključujeta programe na strani odjemalca in na strani strežnika (z drugimi besedami, apleti in strežniki). Edini dve poglavji, ki obravnavata 3D, se bereta kot knjiga v knjigi: Calin Tenitchi na več kot 110 straneh prebere vse klasične 3D osnove in v svojem drugem poglavju analizira uporabo velikega, a zelo dobro zasnovanega okvira 3D iger, imenovanega App3DCore. Z uradnim Java 3D API na obzorju bo ta del knjige kmalu delno zastarel, čeprav se večina ogrodja ukvarja z vidiki višje ravni kot Java 3D, zato to za knjigo ne predstavlja težav. Vsekakor je razlagati notranjost takega 3D okvira zelo razsvetljujoče.

Tretji del, Galerija iger, vsebuje osem poglavij, od katerih vsako razvije celotno igro. Igre se razlikujejo po prefinjenosti, zaradi česar sem dobil vtis, da je bil ta del knjige precej naglo sestavljen. Individualna zasnova in izvedba iger je (na splošno) enako kakovostna kot preostali del knjige. Obstaja vektorski klon Asteroidov, Othello, spletni Mahjong, izobraževalna igra z vodoravnim pomikanjem, snemanjem besed, dve različni igri s čarobnim kvadratom in utelešenje klasične igre Worm (ali Snake, če želite) .

Čeprav knjiga nima svojega deleža napak, napak itd. (Na primer ena stran vsebuje šifrant, ki je izkrivljen neverjetno), mi je bil zelo všeč. Knjiga ima veliko prednosti in slabosti. Močan je pri dobri analizi in oblikovanju programov. (Ah! Mislili ste, da lahko te faze preskočite samo zato, ker gre za igre? Napačno.) Knjiga zelo učinkovito uporablja različne vrste diagramov (diagrami predmetov, diagrami razredov, diagrami poteka, diagrami državnega stroja, diagrami prototipov zaslona itd.) in večina šifrantov je zelo berljivih. (Ta vidik, tako kot slog pisanja, niha od avtorja do avtorja. To je neizogibna stran knjig več avtorjev.)

Vrhunsko programiranje iger Java

Običajno sem zelo skeptičen do naslovov, ki se začnejo z "Advanced", "Cutting Edge" in podobnim, preprosto zato, ker običajno niso! V primeru Vrhunsko programiranje iger Java, Coriolisov oddelek za trženje ni ničesar razkril: knjiga zagotovo ni namenjena začetnikom ali programerjem Java na srednji ravni. Pravzaprav so vsa poglavja, razen prvega in zadnjega, namenjena poglobljeni analizi zasnove in izvedbe dveh igralnih okvirov, ki ni neumna. Prvi okvir je namenjen igram za enega uporabnika (samostojne), drugi pa je namenjen igram z več uporabniki, ki temeljijo na internetu.

Poglavje 2 vsebuje popolno izvedbo celotnega klona Asteroidov, ki ga je mogoče predvajati, brez utripanja in uporablja gladko animacijo in zvok. In to v samo 250 nenavadnih vrsticah kode - ali samo 18 straneh knjig! To poglavje bi zato moralo prepričati vsakogar, da je uporaba okvirov iger in okvirov na splošno eden najboljših načinov za doseganje visoke ravni produktivnosti programiranja s poudarkom na ponovni uporabi zasnove in ne na ponovni uporabi kode (vendar v tem procesu tudi ponovna uporaba gora Koda).

Če je poglavje 2 jasen, obetaven znak visoke kakovosti te knjige, potem poglavje 3 ta vtis okrepi z uvedbo temeljne teme knjige: poglobljenega raziskovanja (zelo) dobro zasnovanega okvira igre. Avtor mimogrede razloži, kaj so kartice CRC (Class / Responsibilities / Collaborants), bistvo diagramov razreda Booch in diagrami interakcije s sporočili objekta. Mimogrede, to ni tako polnjenje strani, ker preostanek knjige uporablja ta močna orodja programskega inženiringa za izboljšanje besedila!

Igre za enega uporabnika, imenovano GameWorks, temeljijo na preizkušeni metafori za programiranje iger na odru, naseljenem z igralci. S to intuitivno abstrakcijo lahko izvajate vse vrste iger - od klasičnih družabnih iger do hitrih, akcijskih arkadnih iger. Rahlo sem bil razočaran, da so avtorji za zgled igre izbrali igre s kartami (raje imam nekaj, kar sproži adrenalin), čeprav jim kljub temu uspe vplesti vse standardne izdaje in tehnike, in to strokovno (med drugim: obdelava slik, upravljanje vhodov, sprite, optimizirana osvežitev zaslona, ​​zvok, naključnost, umetna inteligenca).

Čeprav knjiga ni strukturirana po delih, bi morala biti. Jasno je, da se fokus osredotoča od 15. poglavja naprej. Poglavje 15, "Programiranje mrežnih iger", predstavlja odločen premik v višjo prestavo, pri čemer piše nov avtor. Po predstavitvi glavnih vprašanj, povezanih z mrežnimi igrami (topologije povezav, zakasnitev, sinhronizacija stanja iger), knjiga razvije klon tveganja, klasično strateško družabno igro (v knjigi imenovano Dominacija). Dominacija je le izgovor za razvoj novega okvira iger, ki obravnava generični razred omrežnih večnamenskih iger. Teh zadnjih pet poglavij je težko in močno sumim, da bralci, ki nimajo nekega ozadja podatkovne komunikacije, ne bodo zadovoljni z bolj tehničnimi argumenti. Toda teh poglavij nikakor ne morete preskočiti: vsebujejo zelo temeljito obravnavo kritičnih vprašanj, povezanih s sinhronizacijo stanja latenc in zakasnitvami, ter številne vse bolj dovršene rešitve.

Knjiga se zaključi s poglavjem o optimizaciji kode in zanimivim poglavjem o oblikovanju FRED, klona "Doom", napisanega v Javi! FRED uporablja litje žarkov (da, v Javi), da doseže tisti klasični občutek "Doom", ta temeljna tehnika pa je podrobno razložena.

Povzeti, Vrhunsko programiranje iger Java je odlična. Pisanje je lucidno in natančno. Programska oprema, ki jo avtorji razvijajo, je zelo kakovostna. Navedbe so jasne in berljive in ne vem za vas, toda po branju programov drugih 15 let berljivosti izvorne kode ne razumem kot razkošje).

Razvijanje aplikacij Java Entertainment

Razvijanje aplikacij Java Entertainment je zelo razočarajoča knjiga. Če vam je založnik dal 400 strani, v katere lahko strnete vse, kar veste o programiranju iger v Javi (v redu, v redu, "Java En-ter-tain-ment App-lets"), potem ne začnete s poglavjem, ki ponavlja, slabost, zgodovina Jave. Ali pa nadaljujte z "Osnovami Java" (poglavje 4), popolnoma odveč preoblikovanjem jezikovnih osnov (spremenljivke, Unicode, izrazi, komentarji, tok nadzora, predmeti, razredi, paketi - vi sami!). Avtor še vedno ne sumi, da se morda v celoti osredotoča na napačno temo, zato v 5. poglavju, "Naprednejše tehnike", brezglavo piha z nizi, vektorji, nizi, izjemami, večnitnostjo, apleti. Vse bolj vroče je poglavje 6, "Grafika, zvok in dogodki." Toda tudi tukaj boste težko našli sklice na programiranje iger. Namesto tega je dragocena stran nepremičnin namenjena temu, da vam prinese najmanj 13 posnetkov zaslona tri strani na pol strani draw3DRect (), drawOval (), drawArc () in podobni!

Na polovici knjige (poglavje 7, stran 219) je prvič videti nekaj Jave igra koda, v tem primeru poskus igre s kartami Solitaire (nedvomno morajo biti igre s kartami v sezoni). Zasnova igre, izvedba igre in berljivost uvrstitev so tako slabši v primerjavi z enakimi vidiki drugih knjig v tem pregledu, da je jasno Razvijanje aplikacij Java Entertainment ima težave.

Nekatere izjemne izjave avtorja in splošna površnost ali zloraba izrazov, ki imajo kristalno jasen pomen, samo pomagajo, da se knjiga potopi, preden ima priložnost, da zapluje. Mehanizem upravljanja postavitve AWT je kritiziran na naslednji način: "Način ravnanja s postavitvijo je precej zapleten. Saj ne, da nima smisla in ni z dobrim razlogom, vendar je vseeno zapleten." Tudi Java-ov API za mreženje ni všeč avtorju: "Način, kako se Java poveže z drugimi lokacijami v omrežju, je prekinjen in čeprav ni povsem neuporaben, v svojem trenutnem stanju zagotovo ni zelo funkcionalen." Nenavadno, prisegel bi, da drugi in jaz z istim API-jem lahko ustvarjamo precej vznemirljive stvari (spletni pajek, DAMPP - glej vire spodaj za sklice na moj prejšnji JavaWorld članki o teh temah). Zadnji citat izhaja iz 8. poglavja, "Več igralcev", kjer smo kljub temu prikazali "neumen majhen primer" (če citiram knjigo) v obliki aplikacije za klepet. (Drugi primeri jezika, ki jih v tej knjigi težko požiram, so "zacementirati si to v glavi" (str. 283), "in pljuvati stvari v vtičnico" (str. 284), če citiram samo dva.)

Ali o tej knjigi ni kaj dobrega povedati? Pravzaprav obstaja: 2. poglavje, "Načela oblikovanja iger", je zanimiva analiza, kaj dobro igro naredi dobro. Tu avtor zasije tako, da prepozna več vidikov, ki jih imajo vse dobre igre, na primer dobro zasnovan igralni vmesnik, verodostojnost (raven realizma), prilagodljivost, umetno inteligenco itd. Naslednje poglavje "Game Design in Action" analizira nekaj resničnih iger in poudarja njihovo uporabo dobrih elementov oblikovanja iger. Potem je eno veliko poglavje (poglavje 9), ki je namenjeno proučevanju in uporabi Gamelet Toolkit-a (ogrodja iger v javni domeni, ki ga je napisal Mark Tacchi in je prejel nagrado JavaCup International). Bojim se, da so ta tri poglavja edini deli knjige, ki so vredni papirja, na katerega so natisnjeni.

Naučite se programiranja internetnih iger z Javo

Primerjalni pregledi so težki, saj sta dve (ali več) knjig redko v popolnoma isti kategoriji. Naučite se programiranja internetnih iger z Javo, glede na zadnjo platnico, naslavlja uporabnike v kategorijah "od novega" do "priložnostnega". Začetniki, z drugimi besedami.

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