Programmēšana

Java spēļu programmēšanas grāmatas: salīdzinošs pārskats

Spēļu programmēšana ir tas, kas mani ieviesa datoros pirms kādiem 15 gadiem. Ja jūs vispār esat līdzīgs man, tad burvīgā, košo krāsu animācija, kas izstaro no datorspēlēm, piesaista jūs kā kodi gaismā. Bet tas, ka aizrauj datorspēles (un to iekšējie piederumi) un spēja tās ieprogrammēt, ir divas dažādas lietas. Man nācās apgūt amatu cietā veidā - stundām ilgi skatoties uz spēlēm, līdz jūs to varējāt redzēt kā viņi strādāja. Šajās dienās jūs varat krāpties un veikt saīsni: Paņemiet grāmatu un vienkārši "saplūstiet" ar pieredzējušo programmētāju, kurš neatbalsta visu savu pieredzi, padomus un trikus.

Paturot prātā, ka dažas Java grāmatas (skat. Laura Lemay grāmatu, kas uzskaitīta zemāk sadaļā Resursi) šajās dienās vēlas jūs novirzīt pa dažādiem ceļiem, jūs varētu darīt sliktāk, nekā uzticēties kādam bijušam (komerciālam) spēļu programmētājam, lai pārskatītu pašreizējo pieejamās Java spēļu programmēšanas grāmatas.

Četri nosaukumi nokļuva manā slieksnī šai pārskatīšanai:

  • Java spēļu programmēšanas melnā māksla, Džoels Fans, Ēriks Rīss un Kalins Teniči (Waite Group Press)

  • Jaunāko Java spēļu programmēšana, autori Nils Bartlets, Stīvs Simkins un Kriss Strāns (Coriolis Group Books)

  • Java izklaides sīklietotņu izstrāde, Džons Viterss (Vilija)

  • Iemāciet sev interneta spēļu programmēšanu, izmantojot Java, autors Maikls Morisons (Sams.net)

Pirms es detalizēti pārskatīšu grāmatas, sāksim ar tabulu, kurā sniegts putnu acu skatījums uz to galvenajām īpašībām:

1. tabula: Java spēļu programmēšanas grāmatu pārskats.

Nosaukums (izdevējs)Cena (ASV dolāri)LapasNodaļas (pielikumi)CD ROM?AutoriObjekta orientācijaTīkla tīkla vairāku lietotāju fokussSpēļu ietvara fokuss
Java spēļu programmēšanas melnā māksla (Waite)49.9993320 (5)3++

Ļoti

Labi

LabiLabi
Jaunāko Java spēļu programmēšana (Koriolisa)39.9952321 (2)3

Ļoti

Labi

Ļoti

Labi

Ļoti

Labi

Java izklaides sīklietotņu izstrāde (Vilija)29.9539210 (0)1NabadzīgsNabadzīgsVidēji
Iemāciet sev interneta spēļu programmēšanu, izmantojot Java (Sams.net)39.9941621 (3)1VidējiLabiNav

Lai aprakstītu tabulas virsrakstus, kolonnā Objekta orientācija ir uzsvērts, cik lielā mērā attiecīgās grāmatas autors (-i) izmantoja Java tā, kā tas ir paredzēts: objektorientētā veidā. Labās Java grāmatas neatkarīgi no to fokusa ievieš labu objektorientētu praksi. Zemākas klases grāmatās Java tiek izmantota tā, it kā tā būtu C vai Pascal - tas ir, procesuālā veidā. Spēles ir ļoti labas kandidātu lietojumprogrammas, kurām ir labums, ja tās tiek izstrādātas un ieviestas, izmantojot objektorientāciju, tāpēc laba Java spēļu grāmata labāk būtu spēcīga OOA / OOD / OOP (OO analīze, dizains, programmēšana).

Slejā Networked Multi-User Focus tiek uzsvērts, cik daudz grāmata koncentrējas uz Java spēcīgāko spēļu programmēšanas potenciālu: tīkla, daudzlietotāju spēles.

Slejā Game Framework Focus tiek uzsvērts, cik lielā mērā grāmata paļaujas uz spēles ietvaru, lai izskaidrotu un attīstītu spēļu programmēšanu. Spēļu ietvari ir vismodernākie spēļu API, kas novērš daudzus standarta uzdevumus, kas jāveic visām spēlēm (sprite vadība, ekrāna pārkrāsošana, rezultātu saglabāšana utt.).

Tagad sīkāk apskatiet grāmatas.

Java spēļu programmēšanas melnā māksla

Java spēļu programmēšanas melnā māksla ir viena no šīm Bībeles tipa grāmatām - tās visas 933 lappuses. Grāmata ir loģiski strukturēta trīs daļās:

  1. "Java spēļu izstrādes pamati"
  2. "Uzlabotas spēļu un grafikas metodes"
  3. "Spēļu galerija"

1. daļa, kuru pilnībā rakstījis grāmatas galvenais autors (Džoels Fans), prasmīgi ieaudzina trīs priekšmetiskos Java, objekta orientācijas un spēļu programmēšanas pamatus, vienā skaidrā, atsvaidzinošā un sakarīgā veselumā.

2. daļa koncentrējas uz tīklu veidošanu un 3D paņēmieniem. Vienā nodaļā tiek izstrādāta servera puses augsto punktu pārvaldības sistēma, bet otrā - visa tērzēšanas telpu sistēma. Abas šīs sistēmas ietver klienta un servera puses programmas (citiem vārdiem sakot, sīklietotnes un serverus). Vienīgās divas nodaļas, kas attiecas uz 3D, grāmatā lasāmas kā grāmata: vairāk nekā 110 lappusēs Kalins Teniči pārlasa visus klasiskos 3D pamatus un savā otrajā nodaļā analizē liela, bet ļoti labi izstrādāta 3D spēles ietvara izmantošanu. App3DCore. Kad pie redzesloka ir oficiālā Java 3D API, šī grāmatas daļa drīz būs daļēji novecojusi, lai gan liela daļa ietvarstruktūras attiecas uz augstāka līmeņa aspektiem nekā Java 3D, tāpēc grāmatai tā nav problēma. Jebkurā gadījumā šāda 3D ietvara izskaidrošana ir ļoti izglītojoša.

Spēļu galerijas 3. daļā ir astoņas nodaļas, no kurām katra izstrādā visu spēli. Spēles atšķiras pēc izsmalcinātības, kas man radīja iespaidu, ka šī grāmatas daļa ir diezgan steigā salikta. Spēļu individuālais noformējums un ieviešana (kopumā) ir tikpat kvalitatīva kā pārējā grāmata. Ir vektoru balstīts asteroīdu klons, Othello, tīmekļa madžongs, horizontāli ritinoša, vārdu šaušanas spēle, divas dažādas burvju kvadrātveida spēles un klasiskās Worm (vai Snake, ja vēlaties) spēles iemiesojums .

Lai arī grāmata neiztiek bez kļūdām, kļūdām un tā tālāk (piemēram, vienā lappusē ir kodu saraksts, kas tiek sajaukts ārpus pārliecības), man tas ļoti patika. Grāmatai ir daudz stiprās puses un maz vājumu. Tas ir ļoti labs programmas analīzei un projektēšanai. (Ah! Jūs domājāt, ka varat izlaist šos posmus tikai tāpēc, ka tās ir spēles? Nepareizi.) Grāmatā ļoti efektīvi tiek izmantotas dažāda veida diagrammas (objektu diagrammas, klases diagrammas, blokshēmas, štata mašīnu diagrammas, ekrāna prototipa diagrammas utt.) , un lielākā daļa kodu sarakstu ir ļoti lasāmi. (Šis aspekts, tāpat kā rakstīšanas stils, svārstās no autora uz autoru. Šī ir neizbēgama vairāku autoru grāmatu otrā puse.)

Jaunāko Java spēļu programmēšana

Es parasti esmu ļoti skeptisks attiecībā uz nosaukumiem, kas sākas ar “Advanced”, “Cutting-Edge” un tamlīdzīgiem, vienkārši tāpēc, ka parasti tie nav! Gadījumā, ja Jaunāko Java spēļu programmēšana, Koriolisa mārketinga nodaļa neko nepacēla: Grāmata noteikti nav paredzēta iesācējiem vai vidēja līmeņa Java programmētājiem. Faktiski visas grāmatas nodaļas, izņemot pirmo un pēdējo, ir veltītas divu spēļu struktūru dizaina un ieviešanas padziļinātai, bezjēdzīgai analīzei. Pirmais ietvars paredzēts viena lietotāja (atsevišķām) spēlēm, bet otrais ir paredzēts interneta, daudzu lietotāju spēlēm.

2. nodaļā ir pilnībā ieviests viss asteroīdu klons, kas ir atskaņojams, bez mirgošanas un izmanto vienmērīgu animāciju un skaņu. Un tikai 250 nepāra koda rindiņās - vai tikai 18 grāmatu lappusēs! Tāpēc šai nodaļai vajadzētu pārliecināt ikvienu, ka spēļu ietvaru un vispārīgu sistēmu izmantošana ir viens no labākajiem veidiem, kā sasniegt augstu programmēšanas produktivitātes līmeni, akcentējot dizaina atkārtotu izmantošanu, nevis koda atkārtotu izmantošanu (bet tajā pašā laikā atkārtoti izmantojot arī kods).

Ja 2. nodaļa ir skaidra, daudzsološa šīs grāmatas augstās kvalitātes pazīme, tad 3. nodaļa pastiprina šo iespaidu, iepazīstinot mūs ar grāmatas pamattēmu: padziļinātu (ļoti) labi izstrādāta spēles ietvara izpēti. Īsumā autors paskaidro, kas ir CRC (klases / atbildības / līdzstrādnieku) kartes, Boka klases diagrammu būtība un objektu ziņojumu mijiedarbības diagrammas. Starp citu, tas nav kā lapas aizpildīšana, jo pārējā grāmatā teksta uzlabošanai tiek izmantoti šie spēcīgie programmatūras inženierijas rīki!

Viena lietotāja spēļu ietvars, ko sauc par GameWorks, ir balstīts uz pārbaudītu spēļu programmēšanas metaforu par skatuves, kurā dzīvo aktieri. Izmantojot šo intuitīvo abstrakciju, jūs varat ieviest jebkura veida spēles - sākot no klasiskām galda spēlēm līdz ātrām, ar darbībām bagātām arkādes spēlēm. Biju nedaudz vīlusies, ka autori izvēlējās kāršu spēles kā piemēru spēles stilam (es dodu priekšroku kaut kam, kas izplūst adrenalīnam), kaut arī viņiem tomēr izdodas ieaust visus standarta jautājumus un paņēmienus, kā arī prasmīgi (cita starpā: attēlu apstrāde, ievades pārvaldība, sprites, optimizēta ekrāna atsvaidzināšana, audio, nejaušība, mākslīgais intelekts).

Lai gan grāmata nav veidota pa daļām, tai vajadzēja būt. Sākot ar 15. nodaļu, ir skaidri mainīts fokuss. 15. nodaļā "Tīkla spēļu programmēšana" ir noteikta pāreja uz augstāku pārnesumu, rakstot jaunu autoru. Iepazīstinot ar galvenajām problēmām, kas saistītas ar tīklā balstītām spēlēm (savienojuma topoloģijas, latentums, spēļu stāvokļa sinhronizācija), grāmatā tiek izstrādāts Riska klons, klasiskā stratēģiskā galda spēle (grāmatā dēvēta par Domination). Dominēšana ir tikai attaisnojums, lai izstrādātu jaunu spēļu ietvaru, kas pievēršas tīkla daudzfunkcionālo spēļu vispārējai klasei. Šīs pēdējās piecas nodaļas ir grūtas, un es ļoti aizdomājos, ka lasītāji bez zināma datu komunikācijas fona nejutīsies ērti ar tehniskākiem argumentiem. Bet jūs nevarat izlaist šīs nodaļas: tajās ir ļoti rūpīga attieksme pret kritiskajiem jautājumiem par spēļu stāvokļa dezinhronizāciju un latentuma problēmām, kā arī vairāki arvien sarežģītāki risinājumi.

Grāmatas noslēgumā ir sadaļa par koda optimizāciju un interesanta nodaļa par Java rakstītā "Doom" klona FRED dizainu! FRED izmanto staru liešanu (jā, Java valodā), lai sasniegtu šo klasisko "Doom" sajūtu, un šī pamattehnika ir detalizēti izskaidrota.

Apkopot, Jaunāko Java spēļu programmēšana ir izcils. Rakstīšana ir gaiša un aktuāla. Autoru izstrādātā programmatūra ir ļoti kvalitatīva. Saraksti ir skaidri un lasāmi, un es nezinu par jums, bet, lasot citu cilvēku programmas 15 gadus, avota koda lasāmību neuzskatu par greznību).

Java izklaides sīklietotņu izstrāde

Java izklaides sīklietotņu izstrāde ir ļoti sarūgtinoša grāmata. Ja izdevējs jums iedeva 400 lappuses, kurās visu, kas jums zināms par spēļu programmu programmēšanu Java, nosēdināt (labi, labi, "Java En-ter-tain-ment App-lets"), tad jūs nesākat ar nodaļu, kas atkārto ad nauseam, Java vēsture. Vai arī turpiniet ar "Java Fundamentals" (4. nodaļa), kas ir pilnīgi lieka valodas pamati (mainīgie, Unicode, izteicieni, komentāri, vadības plūsma, objekti, klases, paketes - jūs to nosaucat!). Autorei joprojām nav aizdomas, ka viņš, iespējams, pilnībā koncentrējas uz nepareizo tēmu, tāpēc 5. nodaļā "Uzlabotāki paņēmieni" viņš dronē ar masīviem, vektoriem, virknēm, izņēmumiem, daudzsavienojumu, sīklietotnēm. Kļūst arvien tik karsts ir 6. nodaļa "Grafika, skaņa un notikumi". Bet arī šeit jums būs grūti atrast atsauces uz spēļu programmēšanu. Tā vietā dārgo lapu nekustamais īpašums ir veltīts tam, lai jums tiktu parādīti ne mazāk kā 13 puslapu ekrānuzņēmumi ar triviāliem rezultātiem draw3DRect (), drawOval (), drawArc () un tamlīdzīgi!

Grāmatas pusceļā (7. nodaļa, 219. lpp.) Mēs pirmo reizi parādījāmies kādu Java spēle kods, šajā gadījumā mēģinājums pasjansu kāršu spēlē (noteikti kāršu spēlēm jābūt sezonā). Spēles noformējums, spēles ieviešana un sarakstu lasāmība ir tik zemāka, salīdzinot ar pārējo šī pārskata grāmatu tiem pašiem aspektiem, ka ir skaidrs Java izklaides sīklietotņu izstrāde ir problēmas.

Daži ievērības cienīgi autora izteikumi un vispārēja paviršība vai tādu vārdu nepareiza lietošana, kuriem ir kristāldzidra nozīme, tikai palīdz šo grāmatu nogremdēt, pirms tai ir iespēja braukt. AWT izkārtojuma pārvaldības mehānisms tiek kritizēts šādi: "Veids, kādā tiek apstrādāts ar izkārtojumu, ir diezgan atšķirīgs. Ne tas, ka tam nav jēgas un tas nav laba iemesla dēļ, taču tas joprojām ir saīsināts." Arī Java tīkla API autoram nepatīk: "Tas, kā Java piesaista citas tīkla vietas, ir salauzts, un, lai arī tas nav pilnībā izmantojams, tas, protams, pašreizējā stāvoklī nav ļoti funkcionāls." Dīvaini, es būtu zvērējis, ka citiem un man pašam izdodas radīt diezgan aizraujošas lietas ar to pašu API (Web rāpuļprogramma, DAMPP - zemāk esošajos resursos skatiet atsauces uz manu iepriekšējo JavaWorld raksti par šīm tēmām). Šis pēdējais citāts nāk no 8. nodaļas "Multiplayer Gaming", kur mums tomēr tiek parādīts "stulbs mazais piemērs" (lai citētu grāmatu) tērzēšanas lietojumprogrammas veidā. (Citi valodas piemēri, kurus man šajā grāmatā ir grūti norīt, ir "nostiprināt to galvā" (283. lpp.), "Un lietu spļaušana pāri kontaktligzdai" (284. lpp.), Citējot tikai divas.)

Vai par šo grāmatu nav nekā laba, ko teikt? Patiesībā ir: 2. nodaļa "Spēļu dizaina principi" ir interesanta analīze par to, kas padara labu spēli labu. Šeit autors spīd, nosakot vairākus aspektus, kas piemīt visām labajām spēlēm, piemēram, labi izstrādāts spēles interfeiss, patiesums (reālisma līmenis), pielāgojamība, AI un tā tālāk. Nākamajā nodaļā "Spēļu dizains darbībā" tiek analizētas dažas reālas spēles un uzsvērts, kā tajās tiek izmantoti labi spēļu dizaina elementi. Tad ir viena liela nodaļa (9. nodaļa), kas veltīta Gamelet Toolkit (publiski pieejamu spēļu ietvara, kuras autors ir Marks Tacchi, kurš saņēma JavaCup International balvu) izpētei un izmantošanai. Baidos, ka šīs trīs nodaļas ir vienīgās grāmatas daļas, kas ir papīra vērtas.

Iemāciet sev interneta spēļu programmēšanu, izmantojot Java

Salīdzinošās atsauksmes ir grūtas, jo reti ir divas (vai vairāk) grāmatas tieši vienā kategorijā. Iemāciet sev interneta spēļu programmēšanu, izmantojot Java, saskaņā ar tā aizmugurējo vāku, lietotāji tiek uzrunāti kategorijās "jaunais" vai "gadījuma rakstura". Citiem vārdiem sakot, iesācējiem.

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