Programavimas

„Java“ žaidimų programavimo knygos: palyginamoji apžvalga

Žaidimų programavimas yra tai, kas mane įtraukė į kompiuterius prieš kokius 15 metų. Jei jūs išvis panašus į mane, tai stebuklinga, ryškių spalvų animacija, sklindanti iš kompiuterinių žaidimų, traukia jus kaip kandis į šviesą. Tačiau žavėjimasis kompiuteriniais žaidimais (ir jų vidiniais dalykais) ir galimybė juos programuoti yra du skirtingi dalykai. Aš turėjau išmokti amato sunkiu būdu - valandų valandas žiūrėdamas į žaidimus, kol galėjai matyti kaip jie dirbo. Šiomis dienomis galite apgauti ir pasirinkti nuorodą: pasiimkite knygą ir tiesiog „susimeskite“ su patyrusiu programuotoju, kuris neigia visą savo patirtį, patarimus ir gudrybes.

Turint omenyje, kad kai kurios „Java“ knygos (žr. Laura Lemay knygą, pateiktą žemiau skyriuje „Ištekliai“) šiomis dienomis nori iš viso nukreipti jus skirtingais keliais, galite padaryti blogiau, nei pasitikėti buvusiu (komercinių) žaidimų programuotoju, kad jis peržiūrėtų šiuo metu turimų „Java“ žaidimų programavimo knygų.

Keturi pavadinimai atsidūrė mano slenksčio šioje apžvalgoje:

  • Juodasis „Java“ žaidimų programavimo menas, autoriai Joel Fan, Ericas Riesas ir Calinas Tenitchi („Waite Group Press“)

  • Pažangiausias „Java“ žaidimų programavimas, autoriai Neilas Bartlettas, Steve'as Simkinas ir Chrisas Strancas („Coriolis Group Books“)

  • „Java“ pramogų programėlių kūrimas, Johnas Withersas (Wiley)

  • Išmokite interneto žaidimų programavimą naudodami „Java“, Michaelas Morrisonas (Sams.net)

Prieš pradėdamas išsamiai apžvelgti knygas, pradėkime nuo lentelės, kurioje pateikiamos pagrindinės jų savybės iš paukščio skrydžio:

1 lentelė: „Java“ žaidimų programavimo knygų apžvalga.

Pavadinimas (leidėjas)Kaina (USD)PuslapiaiSkyriai (priedai)CD-ROM?AutoriaiObjektas - orientacijaDaugelio vartotojų dėmesys tinkle„Game Framework Focus“
Juodasis „Java“ žaidimų programavimo menas (Waite)49.9993320 (5)Taip3++

Labai

Gerai

GeraiGerai
Pažangiausias „Java“ žaidimų programavimas (Koriolis)39.9952321 (2)Taip3

Labai

Gerai

Labai

Gerai

Labai

Gerai

„Java“ pramogų programėlių kūrimas (Wiley)29.9539210 (0)Ne1VargšasVargšasVidutinis
Išmokite interneto žaidimų programavimą naudodami „Java“ (Sams.net)39.9941621 (3)Taip1VidutinisGeraiNė vienas

Apibūdinant lentelių antraštes, stulpelyje „Object-Orientation“ pabrėžiama, kiek atitinkamos knygos autorius (-iai) naudojo „Java“ taip, kaip buvo numatyta naudoti: objektu. Geros „Java“ knygos, nepaisant jų dėmesio, užtikrina gerą objektyvią praktiką. Nepilnavertiškose knygose „Java“ naudojama taip, tarsi ji būtų C arba Pascal - tai yra procedūriniu būdu. Žaidimai yra labai geros programos kandidatės, kurioms yra naudinga jas kurti ir įgyvendinti naudojant orientaciją objektuose, todėl gerą „Java“ žaidimų knygą geriau naudoti OOA / OOD / OOP (OO analizė, dizainas, programavimas).

Stulpelyje „Tinklinis daugelio vartotojų dėmesys“ pabrėžiama, kiek knygoje daugiausia dėmesio skiriama stipriausiam „Java“ žaidimų programavimo potencialui: tinkliniams, daugelio vartotojų žaidimams.

„Game Framework Focus“ skiltyje pabrėžiama, kiek knyga remiasi žaidimų sistema paaiškindama ir plėtodama žaidimų programavimą. Žaidimų rėmai yra moderniausios žaidimų API, pašalinančios daugelį standartinių užduočių, kurias turi atlikti visi žaidimai („sprite“ valdymas, ekrano perdažymas, balų išlaikymas ir pan.).

Dabar išsamiai pažvelk į knygas.

Juodasis „Java“ žaidimų programavimo menas

Juodasis „Java“ žaidimų programavimo menas yra viena iš tų Biblijos tipo knygų - visi 933 jos puslapiai. Knyga yra logiškai suskirstyta į tris dalis:

  1. „Java žaidimų kūrimo pagrindai“
  2. „Pažangi žaidimų ir grafikos technika“
  3. „Žaidimų galerija“

Pirmojoje knygos dalyje, kurią visiškai parašė pagrindinis knygos autorius (Joelis Fanas), trys dalykai „Java“, „Orientacija į objektą“ ir „Žaidimų programavimas“ yra meistriškai sujungti į vieną aiškią, gaivią ir vientisą visumą.

2 dalyje pagrindinis dėmesys skiriamas tinklų kūrimui ir 3D technikai. Viename skyriuje sukuriama serverio aukšto įvertinimo valdymo sistema, o kitame - visa pokalbių kambarių sistema. Abi šios sistemos apima kliento ir serverio programas (kitaip tariant, programėles ir serverius). Vieninteliai du skyriai, nagrinėjantys 3D, skaitomi kaip knyga knygoje: per daugiau nei 110 puslapių Calinas Tenitchi peržiūri visus klasikinius 3D pagrindus ir savo antrame skyriuje analizuoja, kaip naudojamas didelis, bet labai gerai sukurtas 3D žaidimų pagrindas, vadinamas „App3DCore“. Žvelgiant į oficialią „Java 3D“ API, ši knygos dalis netrukus bus iš dalies pasenusi, nors didžioji dalis sistemos yra susijusi su aukštesnio lygio aspektais nei „Java 3D“, todėl tai nėra knygos problema. Bet kuriuo atveju paaiškinti tokios 3D struktūros vidų yra labai šviesu.

3 dalyje, „Žaidimų galerijoje“, yra aštuoni skyriai, kurių kiekvienas sukuria visą žaidimą. Žaidimai skiriasi rafinuotumu, todėl man susidarė įspūdis, kad ši knygos dalis buvo gana skubiai sujungta. Vis dėlto individualus žaidimų dizainas ir įgyvendinimas yra (apskritai) tokios pat aukštos kokybės, kaip ir likusioje knygos dalyje. Yra vektorinis „Asteroidų“ klonas, „Othello“, internetinis mažongas, horizontaliai slenkantis, žodžiais šaudantis pramoginis žaidimas, du skirtingi magiško kvadrato žaidimai ir klasikinio „Kirmino“ (arba, jei norite, „Gyvatės“) žaidimas. .

Nors knyga nėra be trikdžių, klaidų ir pan. (Pvz., Viename puslapyje yra kodų sąrašas, kuris yra įtikinamai sumaišytas), man jis labai patiko. Knyga turi daug privalumų ir mažai silpnybių. Tai labai svarbu gerai analizuojant ir kuriant programą. (Ak! Manėte, kad tuos etapus galite praleisti vien todėl, kad jie yra žaidimai? Neteisingai.) Knygoje labai efektyviai naudojamos įvairių tipų diagramos (objektų diagramos, klasių diagramos, schemos, būsenos mašinų diagramos, ekrano prototipų diagramos ir pan.) , ir dauguma kodų sąrašų yra labai lengvai skaitomi. (Šis aspektas, kaip ir rašymo stilius, svyruoja nuo autoriaus iki autoriaus. Tai neišvengiama kelių autorių parašytų knygų pusė.)

Pažangiausias „Java“ žaidimų programavimas

Aš paprastai labai skeptiškai vertinu pavadinimus, prasidedančius raidėmis „Advanced“, „Cutting-Edge“ ir panašiai, paprasčiausiai todėl, kad paprastai jie nėra! Jeigu Pažangiausias „Java“ žaidimų programavimas, „Coriolis“ rinkodaros skyrius nieko nekrėtė: knyga tikrai nėra skirta pradedantiesiems ar vidutinio lygio „Java“ programuotojams. Tiesą sakant, visi, išskyrus pirmąjį ir paskutinį knygos skyrius, yra skirti nuodugniai, nesąmoningai analizuoti dviejų žaidimų struktūrų dizainą ir įgyvendinimą. Pirmoji sistema skirta vieno vartotojo (savarankiškiems) žaidimams, o antroji skirta internetiniams, kelių vartotojų žaidimams.

2 skyriuje pateikiamas visas asteroidų klonas, kurį galima žaisti, be mirgėjimo ir kuriame naudojama sklandi animacija ir garsas. Ir tai tik 250 nelyginių kodo eilučių - arba tik 18 knygų puslapių! Todėl šis skyrius turėtų įtikinti visus, kad žaidimų struktūrų ir apskritai sistemų naudojimas yra vienas iš geriausių būdų pasiekti aukštą programavimo našumą, akcentuojant dizaino pakartotinį naudojimą, o ne kodo pakartotinį naudojimą (bet tuo pačiu metu pakartotinai naudojant kalnus kodas).

Jei 2 skyrius yra aiškus, perspektyvus šios knygos aukštos kokybės ženklas, tai 3 skyrius sustiprina šį įspūdį, supažindindamas mus su pagrindine knygos tema: nuodugniu (labai) gerai sukurto žaidimo pagrindo tyrinėjimu. Praeityje autorius paaiškina, kas yra CRC (klasės / atsakomybės / bendradarbių) kortelės, Boocho klasės diagramų esmė ir objektų pranešimų sąveikos diagramos. Beje, tai nėra toks puslapio užpildymas, nes likusioje knygos dalyje tekstui patobulinti naudojami šie galingi programinės įrangos inžinerijos įrankiai!

Vieno vartotojo žaidimų sistema, vadinama „GameWorks“, yra pagrįsta patikrinta aktorių apgyvendintos scenos žaidimų programavimo metafora. Naudodami šią intuityvią abstrakciją galite įdiegti bet kokio tipo žaidimus - nuo klasikinių stalo žaidimų iki greitų, veiksmo kupinų arkadinių žaidimų. Buvau šiek tiek nusivylęs, kad autoriai pasirinko kortų žaidimus kaip pavyzdinį žaidimo stilių (man labiau patinka kažkas, dėl kurio sklinda adrenalinas), nors jie vis dėlto sugeba įpinti visus standartinius klausimus ir metodus, ir tai meistriškai (be kita ko: vaizdo apdorojimas, įvesties valdymas, įrašai, optimizuotas ekrano atnaujinimas, garsas, atsitiktinumas, dirbtinis intelektas).

Nors knyga nėra sudaryta iš dalių, tačiau taip turėjo būti. Nuo 15 skyriaus yra aiškus fokusavimo perjungimas. 15 skyriuje „Tinklo žaidimų programavimas“ pateikiamas aiškus perjungimas į aukštesnę pavarą, rašant naujam autoriui. Pristačius pagrindines problemas, susijusias su tinkle esančiais žaidimais (ryšio topologijos, delsos laikas, žaidimo būsenos sinchronizavimas), knygoje sukuriamas rizikos klonas - klasikinis strateginis stalo žaidimas (knygoje vadinamas „Domination“). Dominavimas yra tik dingstis kuriant naują žaidimų struktūrą, skirtą bendrai tinklui pritaikytų kelių vartotojų žaidimų klasei. Šie paskutiniai penki skyriai vyksta sunkiai, ir aš labai įtariu, kad skaitytojai, neturintys tam tikro duomenų perdavimo pagrindo, nesijaus patogesni dėl daugiau techninių argumentų. Tačiau niekaip negalite praleisti šių skyrių: juose labai kruopščiai nagrinėjami svarbiausi žaidimo būsenos dinchronizavimo ir delsos problemų klausimai, taip pat daugybė vis sudėtingesnių sprendimų.

Knygos pabaigoje pateikiamas skyrius apie kodo optimizavimą ir įdomus skyrius apie „Java“ parašyto „Doom“ klono FRED dizainą! FRED naudoja spindulių liejimą (taip, „Java“), kad pasiektų tą klasikinį „Doom“ pojūtį, ir ši pagrindinė technika yra išsamiai paaiškinta.

Apibendrinti, Pažangiausias „Java“ žaidimų programavimas yra puikus. Rašymas yra aiškus ir tikslus. Autorių sukurta programinė įranga yra labai aukštos kokybės. Sąrašai yra aiškūs ir įskaitomi, aš nežinau apie jus, bet 15 metų perskaičiusi kitų žmonių programas, nelaikau šaltinio kodo skaitomumo prabanga).

„Java“ pramogų programėlių kūrimas

„Java“ pramogų programėlių kūrimas yra labai nuvilianti knyga. Jei leidėjas jums davė 400 puslapių, kuriuose galite sukrauti viską, ką žinote apie žaidimų programavimą „Java“ (gerai, gerai, „Java En-ter-tain-ment App-lets“), tada nepradėkite nuo skyriaus, kuriame pakartojama, ad nauseam, Java istorija. Arba tęskite „Java pagrindai“ (4 skyrius), visiškai perteklinį kalbos pagrindų (kintamųjų, „Unicode“, išraiškų, komentarų, valdymo srauto, objektų, klasių, paketų - jūs įvardykite!) Perrašymą. Autorius vis dar neįtaria, kad gali sutelkti visą dėmesį į netinkamą objektą, todėl 5 skyriuje „Pažangesnė technika“ jis sklando masyvais, vektoriais, stygomis, išimtimis, daugialypiais siūlais, programėlėmis. Vis karščiau tampa 6 skyrius „Grafika, garsas ir įvykiai“. Bet ir čia bus sunku rasti nuorodų į žaidimų programavimą. Vietoj to, brangus puslapis nekilnojamasis turtas yra skirtas pateikti ne mažiau kaip 13 pusės puslapio nereikalingų rezultatų ekrano kopijų draw3DRect (), drawOval (), drawArc () ir panašiai!

Įpusėjus knygai (7 skyrius, 219 puslapis), mes pirmą kartą pasirodėme su kai kuriomis „Java“ žaidimas kodas, šiuo atveju bandymas žaisti pasjansą (aišku, kortų žaidimai turi būti sezono metu). Žaidimo dizainas, žaidimo įgyvendinimas ir sąrašų skaitomumas yra tiek prastesni, palyginti su tais pačiais kitų šios apžvalgos knygų aspektais, kad yra aišku „Java“ pramogų programėlių kūrimas turi problemų.

Kai kurie nepaprasti autoriaus teiginiai ir visiškas nesąžiningumas ar netinkamas terminų, turinčių aiškią prasmę, vartojimas tik padeda nuskandinti šią knygą, kol ji neturi galimybės išplaukti. AWT maketavimo valdymo mechanizmas kritikuojamas taip: "Tai, kaip tvarkomas maketas, yra gana nevienodas. Ne todėl, kad jis nėra prasmingas ir nėra dėl geros priežasties, bet vis tiek yra sugadintas." „Java“ tinklo API taip pat nepatinka autoriui: „Tai, kad„ Java “prisijungia prie kitų tinklo vietų, yra sugadintas ir, nors jis nėra visiškai netinkamas naudoti, jis tikrai nėra labai funkcionalus dabartinėje būsenoje“. Keista, aš būčiau prisiekęs, kad kitiems ir man pačiam pavyksta sukurti gana įdomių dalykų naudojant tą pačią API (žiniatinklio tikrintuvą, DAMPP - žemiau esančiuose šaltiniuose rasite nuorodas į mano ankstesnes „JavaWorld“ straipsniai šiomis temomis). Paskutinė citata išėjo iš 8 skyriaus „Žaidimai keliais žaidėjais“, kur vis dėlto mums rodomas „kvailas mažas pavyzdys“ (cituojant knygą) pokalbio programos forma. (Kiti kalbos pavyzdžiai, kuriuos man sunku nuryti šioje knygoje, yra „įtvirtinti ją į galvą“ (p. 283), „ir daiktų spjaudymas per lizdą“ (p. 284), cituojant tik du.)

Ar nėra nieko gero pasakyti apie šią knygą? Tiesą sakant, yra: 2 skyrius „Žaidimų kūrimo principai“ yra įdomi analizė to, kuo geras žaidimas yra geras. Čia autorius sužibi nustatydamas keletą aspektų, kuriuos turi visi geri žaidimai, pvz., Gerai suprojektuota žaidimo sąsaja, teisingumas (tikroviškumo lygis), pritaikomumas, dirbtinis intelektas ir kt. Kitame skyriuje „Žaidimo dizainas veikia“ analizuojami tikri žaidimai ir pabrėžiama, kaip jie naudoja gerus žaidimo dizaino elementus. Tada yra vienas didelis skyrius (9 skyrius), skirtas „Gamelet Toolkit“ (viešosios nuosavybės žaidimų sistemai, kurią parašė Markas Tacchi, gavęs „JavaCup International“ prizą), tyrimui ir naudojimui. Šie trys skyriai yra vienintelės knygos dalys, vertos popieriaus, ant kurio jie atspausdinti, bijau.

Išmokite interneto žaidimų programavimą naudodami „Java“

Lyginamosios apžvalgos yra sudėtingos, nes retai dvi (ar daugiau) knygos yra visiškai tos pačios kategorijos. Išmokite interneto žaidimų programavimą naudodami „Java“, pagal jo galinį viršelį, vartotojai kreipiasi į „naujų“ ar „atsitiktinių“ kategorijų vartotojus. Kitaip tariant, pradedantiesiems.