Buku pengaturcaraan permainan Java: Kajian perbandingan

Pengaturcaraan permainan adalah apa yang membuat saya masuk ke komputer sekitar 15 tahun yang lalu. Sekiranya anda sama seperti saya, maka keajaiban, animasi berwarna terang yang memancar dari permainan komputer menarik anda seperti ngengat ke cahaya. Tetapi terpesona dengan permainan komputer (dan dalaman mereka) dan dapat memprogramnya adalah dua perkara yang berbeza sama sekali. Saya harus belajar perdagangan dengan cara yang sukar - dengan menatap permainan berjam-jam sehingga anda dapat melihat bagaimana mereka berjaya. Hari-hari ini anda boleh menipu dan mengambil jalan pintas: Ambil buku dan hanya "mind meld" dengan pengaturcara berpengalaman yang menghilangkan semua pengalaman, petua, dan triknya.

Mengingat bahawa beberapa buku Java (lihat buku Laura Lemay yang disenaraikan di bawah di bahagian Sumber) hari ini ingin membawa anda ke jalan yang berbeza sama sekali, anda boleh melakukan perkara yang lebih buruk daripada mempercayai bekas programmer (komersial) permainan untuk meninjau saat ini buku pengaturcaraan permainan Java yang ada.

Empat tajuk muncul di depan pintu saya untuk ulasan ini:

  • Pengaturcaraan Permainan Seni Hitam dari Java , oleh Joel Fan, Eric Ries, dan Calin Tenitchi (Waite Group Press)

  • Pemrograman Permainan Cutting-Edge Java , oleh Neil Bartlett, Steve Simkin, dan Chris Stranc (Coriolis Group Books)

  • Membangunkan Java Entertainment Applet , oleh John Withers (Wiley)

  • Ajar Diri Pengaturcaraan Permainan Internet dengan Java , oleh Michael Morrison (Sams.net)

Sebelum saya mengkaji buku-buku tersebut secara terperinci, mari kita mulakan dengan jadual yang memberi anda gambaran mengenai ciri-ciri utama mereka:

Jadual 1: Gambaran Keseluruhan Buku Pengaturcaraan Permainan Java.

Tajuk (Penerbit) Harga (US $) Halaman Bab (Lampiran) CD- ROM? Pengarang Objektif - Orientasi Fokus Pelbagai Pengguna Rangkaian Fokus Kerangka Permainan
Pengaturcaraan Permainan Seni Hitam dari Java (Waite) 49.99 933 20 (5) Ya 3 ++

Sangat

Baik

Baik Baik
Pemrograman Permainan Java Cutting-Edge (Coriolis) 39.99 523 21 (2) Ya 3

Sangat

Baik

Sangat

Baik

Sangat

Baik

Membangunkan Applet Hiburan Java (Wiley) 29.95 392 10 (0) Tidak 1 Buruk Buruk Rata-rata
Ajar Diri Pengaturcaraan Permainan Internet dengan Java (Sams.net) 39.99 416 21 (3) Ya 1 Rata-rata Baik Tiada

Untuk menerangkan tajuk jadual, kolom Objek-Orientasi menyoroti sejauh mana pengarang buku masing-masing menggunakan Java dengan cara yang dimaksudkan untuk digunakan: dengan cara berorientasi objek. Buku Java yang baik, apa pun fokusnya, menerapkan amalan berorientasikan objek yang baik. Buku-buku rendah menggunakan Java seolah-olah itu C atau Pascal - yaitu, secara prosedural. Permainan adalah aplikasi calon yang sangat baik yang mendapat keuntungan dari dirancang dan dilaksanakan menggunakan orientasi objek, jadi buku permainan Java yang baik lebih baik kuat pada OOA / OOD / OOP (OO Analysis, Design, Programming).

Lajur Fokus Pelbagai Pengguna Rangkaian menyoroti seberapa banyak buku itu memfokuskan pada potensi pengaturcaraan permainan terkuat Java: permainan rangkaian, berbilang pengguna.

Kolom Fokus Kerangka Permainan menyoroti sejauh mana buku bergantung pada kerangka permainan untuk menjelaskan dan mengembangkan pengaturcaraan permainan. Kerangka permainan adalah API permainan canggih yang menghilangkan banyak tugas standard yang harus dilakukan oleh semua permainan (pengurusan sprite, pengecatan layar, penyimpanan skor, dan sebagainya).

Sekarang, lihat buku secara terperinci.

Pengaturcaraan Permainan Seni Hitam dari Java

Pengaturcaraan Permainan Seni Hitam dari Java adalah salah satu buku jenis Alkitab - semuanya berjumlah 933 halaman. Buku ini disusun secara logik kepada tiga bahagian:

  1. "Asas Pengembangan Permainan Java"
  2. "Teknik Permainan dan Grafik Lanjutan"
  3. "Galeri Permainan"

Bahagian 1, yang ditulis sepenuhnya oleh pengarang utama buku (Joel Fan), dengan mahir menyusun tiga utas subjek Java, orientasi objek, dan asas pengaturcaraan permainan menjadi satu keseluruhan yang jelas, menyegarkan, dan koheren.

Bahagian 2 memberi tumpuan kepada teknik rangkaian dan 3D. Satu bab mengembangkan sistem pengurusan skor tinggi di sisi pelayan sementara yang lain mengembangkan keseluruhan sistem ruang sembang. Kedua-dua sistem ini memerlukan program sisi pelanggan dan pelayan (applet dan pelayan, dengan kata lain). Hanya dua bab yang berurusan dengan 3D yang dibaca seperti buku dalam buku: Dalam lebih dari 110 halaman, Calin Tenitchi merangkumi semua asas 3D klasik dan, dalam bab keduanya, menganalisis penggunaan kerangka permainan 3D yang besar tetapi sangat dirancang dengan baik yang disebut App3DCore. Dengan API Java 3D rasmi di cakrawala, bahagian buku ini tidak lama lagi akan menjadi usang, walaupun sebahagian besar kerangka kerja berkenaan dengan aspek tahap lebih tinggi daripada Java 3D jadi ini tidak menjadi masalah bagi buku ini. Walau bagaimana pun, menerangkan bahagian dalam kerangka 3D seperti itu sangat mencerahkan.

Bahagian 3, Galeri Permainan, berisi lapan bab, yang masing-masing mengembangkan keseluruhan permainan. Permainannya berbeza-beza dengan kecanggihan, yang memberi saya kesan bahawa bahagian buku ini disusun dengan tergesa-gesa. Reka bentuk dan pelaksanaan permainan masing-masing adalah (keseluruhan) dengan kualiti tinggi yang sama dengan buku-buku lain. Terdapat klon Asteroid berasaskan vektor, Othello, Mahjong berasaskan Web, permainan edutainment bergulir mendatar, penggambaran kata, dua permainan persegi-sihir yang berbeza, dan penjelmaan permainan Worm klasik (atau Ular, jika anda suka) .

Walaupun buku ini tidak mengandungi banyak kesalahan, kesalahan, dan lain-lain (sebagai contoh, satu halaman mengandungi senarai kod yang tidak sesuai dengan kepercayaan), saya sangat menyukainya. Buku ini mempunyai banyak kekuatan dan beberapa kelemahan. Ia kuat berdasarkan analisis dan reka bentuk program yang baik. (Ah! Anda fikir anda boleh melangkau tahap itu hanya kerana permainan? Salah. Buku ini menggunakan pelbagai jenis gambar rajah dengan sangat berkesan (diagram objek, diagram kelas, carta alir, diagram mesin keadaan, diagram prototaip skrin, dan sebagainya) , dan kebanyakan senarai kod sangat mudah dibaca. (Aspek ini, seperti gaya penulisan, berubah-ubah dari pengarang ke pengarang. Ini adalah bahagian buku yang tidak dapat dielakkan yang ditulis oleh beberapa pengarang.)

Pengaturcaraan Permainan Java Cutting-Edge

Saya biasanya sangat ragu-ragu dengan tajuk yang bermula dengan "Advanced", "Cutting-Edge" dan seumpamanya, kerana, biasanya tidak! Dalam hal Pemrograman Permainan Java Cutting-Edge , departemen pemasaran Coriolis tidak membuat apa-apa: Buku ini pasti bukan untuk pemula atau pengaturcara Java tingkat menengah. Sebenarnya, semua kecuali bab pertama dan terakhir buku ini dikhaskan untuk analisis mendalam dan tidak masuk akal mengenai reka bentuk dan pelaksanaan dua kerangka permainan. Kerangka pertama memenuhi permainan pengguna tunggal (berdiri sendiri) sementara yang kedua ditujukan untuk permainan berbilang pengguna berasaskan Internet.

Bab 2 merangkumi pelaksanaan keseluruhan klon Asteroid yang dapat dimainkan, bebas kerlipan, dan menggunakan animasi dan suara yang lancar. Dan hanya dalam 250 baris kod ganjil - atau hanya 18 halaman buku! Oleh itu, bab ini harus meyakinkan sesiapa sahaja bahawa menggunakan kerangka permainan, dan kerangka kerja secara umum, adalah salah satu cara terbaik untuk mencapai tahap produktiviti pengaturcaraan yang tinggi dengan menonjolkan penggunaan semula reka bentuk, bukan penggunaan semula kod (tetapi dalam prosesnya juga menggunakan kembali kod).

Sekiranya Bab 2 adalah tanda yang jelas dan menjanjikan tentang kualiti tinggi buku ini, maka Bab 3 akan memperkuat kesan itu dengan memperkenalkan kita pada tema inti buku ini: penerokaan mendalam mengenai (permainan) kerangka permainan yang dirancang dengan baik. Sebagai penerangan, penulis menerangkan apa kad CRC (Kelas / Tanggungjawab / Kolaborator), inti pati diagram kelas Booch, dan gambar rajah interaksi pesanan objek. Ngomong-ngomong, ini bukan sekadar mengisi halaman kerana buku yang lain menggunakan alat kejuruteraan perisian yang hebat ini untuk meningkatkan teks!

Kerangka permainan pengguna tunggal, yang disebut GameWorks, didasarkan pada metafora pengaturcaraan permainan yang dicuba dan diuji dari panggung yang dihuni oleh pelakon. Dengan menggunakan abstraksi intuitif ini, anda dapat menerapkan semua jenis permainan - dari permainan papan klasik hingga permainan arked yang pantas dan penuh aksi. Saya sedikit kecewa kerana penulis memilih permainan kad sebagai gaya permainan contoh (saya lebih suka sesuatu yang membuat adrenalin mengalir), walaupun mereka berjaya menenun semua masalah dan teknik standard, dan pakar (seperti: pemprosesan gambar, pengurusan input, sprite, penyegaran skrin yang dioptimumkan, audio, rawak, kecerdasan buatan).

Walaupun buku ini tidak tersusun di sekitar bahagian, seharusnya buku itu. Terdapat pertukaran fokus yang jelas dari bab 15 dan seterusnya. Bab 15, "Pengaturcaraan Permainan Rangkaian," mewakili peralihan pasti ke roda gigi yang lebih tinggi, dengan pengarang baru melakukan penulisan. Setelah memperkenalkan isu-isu utama seputar permainan berasaskan rangkaian (topologi sambungan, latensi, penyegerakan keadaan permainan), buku ini mengembangkan klon Risk, permainan papan strategi klasik (disebut Dominasi dalam buku). Dominasi hanyalah alasan untuk mengembangkan kerangka permainan baru yang menangani kelas generik permainan berbilang pengguna yang diaktifkan oleh rangkaian. Lima bab terakhir ini sukar dilaksanakan, dan saya sangat mengesyaki pembaca tanpa latar belakang komunikasi data tidak akan merasa selesa dengan hujah yang lebih teknikal. Tetapi tidak mungkin anda boleh melangkau bab-bab ini:Ini mengandungi rawatan yang sangat teliti terhadap masalah-masalah kritikal dari masalah penyahkronan dan latensi keadaan permainan, serta sejumlah penyelesaian yang semakin canggih.

Buku ini berakhir dengan bab mengenai pengoptimuman kod dan bab menarik mengenai reka bentuk FRED, klon "Doom" yang ditulis di Jawa! FRED menggunakan pemutus sinar (ya, di Jawa) untuk mencapai nuansa "Doom" klasik, dan teknik inti ini dijelaskan secara terperinci.

Ringkasnya, Pemrograman Permainan Java Cutting-Edge sangat baik. Penulisannya jelas dan tepat. Perisian yang dikembangkan oleh penulis berkualiti tinggi. Penyenaraiannya jelas dan mudah dibaca, dan saya tidak tahu mengenai anda, tetapi setelah membaca program orang lain selama 15 tahun, saya tidak menganggap pembacaan kod sumber sebagai kemewahan).

Membangunkan Applet Hiburan Java

Membangunkan Java Entertainment Applets adalah buku yang sangat mengecewakan. Sekiranya penerbit memberi anda 400 halaman untuk menjejalkan semua yang anda ketahui mengenai permainan pengaturcaraan di Java (baiklah, oke, "Aplikasi Java-En-ter-tain-ment"), maka anda tidak akan memulakan dengan bab yang mengulangi, mual iklan, sejarah Jawa. Atau teruskan dengan "Java Fundamentals" (Bab 4), pengulangan asas-asas bahasa yang sangat berlebihan (pemboleh ubah, Unicode, ungkapan, komen, aliran kawalan, objek, kelas, pakej - anda namakan!). Penulis masih tidak mengesyaki bahawa dia mungkin memfokuskan diri pada subjek yang salah sepenuhnya, jadi dalam Bab 5, "Teknik Lebih Lanjut," dia menggunakan array, vektor, rentetan, pengecualian, multithreading, applet. Semakin panas sedikit adalah Bab 6, "Grafik, Suara dan Acara." Tetapi anda akan sukar mencari rujukan untuk pengaturcaraan permainan di sini, sama ada. Sebaliknya, berharga estet laman sebenar dikhaskan untuk membawa anda tidak kurang daripada 13 screenshot setengah halaman keputusan remeh draw3DRect(), drawOval(), drawArc()dan sebagainya!

Separuh jalan melalui buku ini (Bab 7, halaman 219) kita memiliki penampilan pertama dari beberapa kod permainan Java , dalam hal ini, percubaan pada permainan kad Solitaire (yang pasti, permainan kad mesti ada di musim). Reka bentuk permainan, pelaksanaan permainan, dan keterbacaan senarai semuanya lebih rendah jika dibandingkan dengan aspek yang sama dari buku-buku lain dalam ulasan ini bahawa jelas Membangunkan Aplikasi Hiburan Java mempunyai masalah.

Beberapa pernyataan luar biasa yang dibuat oleh pengarang, dan kemerosotan umum atau penyalahgunaan istilah yang mempunyai makna yang jernih, hanya membantu menenggelamkan buku ini sebelum berpeluang berlayar. Mekanisme pengurusan susun atur AWT dikritik sebagai berikut: "Cara tata letak ditangani cukup baik. Bukan itu tidak masuk akal dan bukan untuk alasan yang baik, tetapi masih gagal." API rangkaian Java juga tidak sesuai dengan keinginan penulis: "Cara menghubungkan Java ke lokasi lain di Internet rusak, dan sementara itu tidak dapat digunakan sama sekali, ia pasti tidak berfungsi dalam keadaannya sekarang." Anehnya, saya akan bersumpah bahawa orang lain dan saya berjaya membuat perkara yang sangat menarik dengan API yang sama (Crawler Web,DAMPP - lihat Sumber di bawah untuk rujukan ke JavaWorld saya sebelumnyaartikel mengenai topik-topik ini). Petikan terakhir itu keluar dari Bab 8, "Multiplayer Gaming," di mana kita tetap ditunjukkan "contoh kecil yang bodoh" (untuk memetik buku) dalam bentuk aplikasi sembang. (Contoh bahasa lain yang sukar saya telan dalam buku ini adalah "mengikatnya di kepala anda" (hlm. 283), "dan meludahkan sesuatu di atas soket" (hlm. 284), untuk memetik hanya dua.)

Tidak ada yang baik untuk diperkatakan mengenai buku ini? Sebenarnya, ada: Bab 2, "Prinsip-prinsip Reka Bentuk Permainan," adalah analisis yang menarik tentang apa yang menjadikan permainan yang baik menjadi bagus. Di sini penulis bersinar dengan mengenal pasti beberapa aspek yang dimiliki oleh semua permainan yang bagus, seperti antara muka permainan yang dirancang dengan baik, kebenaran (tahap realisme), penyesuaian, AI, dan sebagainya. Bab seterusnya, "Game Design in Action," menganalisis beberapa permainan sebenar dan menyoroti penggunaan elemen reka bentuk permainan yang baik. Kemudian ada satu bab besar (Bab 9) yang dikhaskan untuk kajian dan penggunaan Gamelet Toolkit (kerangka permainan domain publik, yang ditulis oleh Mark Tacchi, yang menerima hadiah JavaCup International). Ketiga bab ini adalah satu-satunya bahagian buku yang bernilai dengan kertas yang dicetak, saya takut.

Ajar Diri Pengaturcaraan Permainan Internet dengan Java

Ulasan perbandingan sukar kerana jarang terdapat dua (atau lebih) buku dalam kategori yang sama. Ajar Diri Pengaturcaraan Permainan Internet dengan Java , menurut sampul belakangnya, menangani pengguna dalam kategori "baru" hingga "kasual". Pemula, dengan kata lain.