Buku pemrograman game Java: Tinjauan komparatif

Pemrograman game adalah hal yang membuat saya terbiasa dengan komputer sekitar 15 tahun yang lalu. Jika Anda sama sekali seperti saya, maka keajaiban, animasi berwarna cerah yang memancar dari permainan komputer menarik Anda seperti ngengat menuju cahaya. Tetapi terpesona oleh permainan komputer (dan bagian dalamnya) dan mampu memprogramnya adalah dua hal yang berbeda. Saya harus mempelajari perdagangan dengan cara yang sulit - dengan menatap game selama berjam-jam sampai Anda dapat melihat cara kerjanya. Hari-hari ini Anda dapat menipu dan mengambil jalan pintas: Ambil buku dan hanya "berbaur dengan pikiran" dengan programmer berpengalaman yang mencurahkan semua pengalaman, tip, dan triknya.

Mengingat bahwa beberapa buku Java (lihat buku Laura Lemay yang tercantum di bawah ini di bagian Sumber) akhir-akhir ini ingin menuntun Anda ke jalur yang berbeda sama sekali, Anda dapat melakukan hal yang lebih buruk daripada memercayai mantan programmer game (komersial) untuk mengulas tersedia buku pemrograman game java.

Empat judul mendarat di depan pintu saya untuk ulasan ini:

  • Black Art of Java Game Programming , oleh Joel Fan, Eric Ries, dan Calin Tenitchi (Waite Group Press)

  • Pemrograman Game Java Mutakhir , oleh Neil Bartlett, Steve Simkin, dan Chris Stranc (Buku Grup Coriolis)

  • Mengembangkan Applet Hiburan Java , oleh John Withers (Wiley)

  • Ajari Diri Anda Pemrograman Game Internet dengan Java , oleh Michael Morrison (Sams.net)

Sebelum saya meninjau buku secara mendetail, mari kita mulai dengan tabel yang memberi Anda gambaran menyeluruh tentang karakteristik utamanya:

Tabel 1: Ringkasan Buku Pemrograman Game Java.

Judul (Penerbit) Harga (US $) Halaman Bab (Lampiran) CD ROM? Penulis Objek- Orientasi Fokus Multi-Pengguna Jaringan Fokus Kerangka Game
Seni Hitam Pemrograman Game Java (Waite) 49.99 933 20 (5) Iya 3 ++

Sangat

Baik

Baik Baik
Pemrograman Game Java Mutakhir (Coriolis) 39.99 523 21 (2) Iya 3

Sangat

Baik

Sangat

Baik

Sangat

Baik

Mengembangkan Java Entertainment Applet (Wiley) 29.95 392 10 (0) Tidak 1 Miskin Miskin Rata-rata
Ajari Diri Anda Pemrograman Game Internet dengan Java (Sams.net) 39.99 416 21 (3) Iya 1 Rata-rata Baik Tidak ada

Untuk mendeskripsikan judul tabel, kolom Object-Orientation menyoroti sejauh mana penulis dari masing-masing buku menggunakan Java seperti yang dimaksudkan untuk digunakan: dengan cara berorientasi objek. Buku Java yang baik, apa pun fokusnya, menerapkan praktik berorientasi objek yang baik. Buku-buku inferior menggunakan Java seolah-olah itu adalah C atau Pascal - yaitu, secara prosedural. Game adalah aplikasi kandidat yang sangat bagus yang diuntungkan karena dirancang dan diimplementasikan menggunakan orientasi objek, jadi buku game Java yang baik sebaiknya kuat pada OOA / OOD / OOP (Analisis OO, Desain, Pemrograman).

Kolom Fokus Multi-Pengguna Berjaringan menyoroti seberapa besar fokus buku ini pada potensi pemrograman game terkuat Java: game berjaringan dan multi-pengguna.

Kolom Fokus Kerangka Game menyoroti sejauh mana buku tersebut bergantung pada kerangka kerja game untuk menjelaskan dan mengembangkan pemrograman game. Kerangka kerja game adalah API game canggih yang menghilangkan banyak tugas standar yang harus dilakukan semua game (manajemen sprite, pengecatan ulang layar, menjaga skor, dan sebagainya).

Sekarang, lihat buku-bukunya secara detail.

Seni Hitam Pemrograman Game Java

Black Art of Java Game Programming adalah salah satu dari buku-buku jenis Alkitab itu - semuanya 933 halaman. Buku ini secara logis disusun menjadi tiga bagian:

  1. "Dasar-dasar Pengembangan Game Java"
  2. "Game Tingkat Lanjut dan Teknik Grafik"
  3. "Galeri Game"

Bagian 1, yang seluruhnya ditulis oleh penulis utama buku (Joel Fan), dengan ahli merangkai tiga topik utama Java, orientasi objek, dan dasar-dasar pemrograman game menjadi satu kesatuan yang jelas, menyegarkan, dan koheren.

Bagian 2 berfokus pada jaringan dan teknik 3D. Satu bab mengembangkan sistem manajemen skor tinggi sisi server sementara yang lain mengembangkan seluruh sistem ruang obrolan. Kedua sistem ini memerlukan program sisi klien dan sisi server (applet dan server, dengan kata lain). Dua bab yang berhubungan dengan bacaan 3D seperti buku di dalam buku: Di lebih dari 110 halaman, Calin Tenitchi membahas semua dasar-dasar 3D klasik dan, di bab kedua, menganalisis penggunaan kerangka permainan 3D yang besar namun dirancang dengan sangat baik yang disebut App3DCore. Dengan Java 3D API resmi di depan mata, bagian dari buku ini akan segera menjadi usang, meskipun sebagian besar kerangka kerja berkaitan dengan aspek tingkat yang lebih tinggi daripada Java 3D jadi ini bukan masalah bagi buku tersebut. Bagaimanapun, memiliki bagian dalam kerangka 3D seperti itu dijelaskan sangat mencerahkan.

Bagian 3, Galeri Game, berisi delapan bab, yang masing-masing mengembangkan keseluruhan game. Permainannya berbeda-beda dalam hal kecanggihan, yang memberi saya kesan bahwa bagian dari buku ini dibuat dengan terburu-buru. Desain individu dan implementasi dari game-game tersebut (secara keseluruhan) memiliki kualitas yang sama dengan bagian buku lainnya. Ada klon Asteroid berbasis vektor, Othello, Mahjong berbasis web, permainan edutainment penembakan kata yang bergulir secara horizontal, dua permainan kotak ajaib yang berbeda, dan inkarnasi dari permainan Worm klasik (atau Snake, jika Anda lebih suka) .

Meskipun buku ini bukannya tanpa bagian dari gangguan, kesalahan, dan sebagainya (misalnya, satu halaman berisi daftar kode yang hancur tak bisa dipercaya), saya sangat menyukainya. Buku ini memiliki banyak kekuatan dan sedikit kelemahan. Ini kuat dalam analisis dan desain program yang baik. (Ah! Anda pikir Anda bisa melewati tahapan itu hanya karena itu permainan? Salah.) Buku ini menggunakan berbagai jenis diagram dengan sangat efektif (diagram objek, diagram kelas, diagram alir, diagram mesin status, diagram prototipe layar, dan sebagainya) , dan sebagian besar daftar kode sangat mudah dibaca. (Aspek ini, seperti gaya penulisan, memang berfluktuasi dari penulis ke penulis. Ini adalah sisi lain dari buku yang ditulis oleh beberapa penulis.)

Pemrograman Game Java Mutakhir

Saya biasanya sangat skeptis dengan judul yang dimulai dengan "Advanced", "Cutting-Edge", dan sejenisnya, hanya karena, biasanya tidak! Dalam kasus Pemrograman Java Game Mutakhir , departemen pemasaran Coriolis tidak membesar-besarkan apa pun: Buku ini jelas bukan untuk pemula atau programmer Java tingkat menengah. Faktanya, semua kecuali bab pertama dan terakhir dari buku ini dikhususkan untuk analisis mendalam dan tanpa basa-basi tentang desain dan implementasi dua framework game. Kerangka kerja pertama melayani game pengguna tunggal (berdiri sendiri) sementara yang kedua ditujukan untuk game multi-pengguna berbasis Internet.

Bab 2 mengemas implementasi lengkap dari seluruh klon Asteroid yang dapat dimainkan, bebas flicker, dan menggunakan animasi dan suara yang halus. Dan itu hanya dalam 250 baris kode ganjil - atau hanya 18 halaman buku! Oleh karena itu, bab ini harus meyakinkan siapa pun bahwa menggunakan framework game, dan framework secara umum, adalah salah satu cara terbaik untuk mencapai produktivitas pemrograman tingkat tinggi dengan menonjolkan penggunaan kembali desain, daripada penggunaan ulang kode (tetapi dalam prosesnya juga menggunakan kembali pegunungan kode).

Jika Bab 2 adalah tanda yang jelas dan menjanjikan dari kualitas tinggi buku ini, Bab 3 memperkuat kesan itu dengan memperkenalkan kita pada tema inti buku: eksplorasi mendalam tentang kerangka kerja game yang (sangat) dirancang dengan baik. Secara sepintas, penulis menjelaskan apa itu kartu CRC (Kelas / Tanggung Jawab / Kolaborator), inti dari diagram kelas Booch, dan diagram interaksi pesan objek. Ngomong-ngomong, ini bukan sebagai pengisian halaman karena bagian lain dari buku ini menggunakan alat rekayasa perangkat lunak yang hebat ini untuk menyempurnakan teks!

Kerangka game pengguna tunggal, yang disebut GameWorks, didasarkan pada metafora pemrograman game yang telah dicoba dan diuji dari sebuah panggung yang diisi oleh para aktor. Dengan menggunakan abstraksi intuitif ini, Anda dapat menerapkan semua jenis game - dari game papan klasik hingga game arcade yang cepat dan penuh aksi. Saya sedikit kecewa karena penulis memilih permainan kartu sebagai contoh gaya permainan (saya lebih suka sesuatu yang membuat adrenalin mengalir), meskipun mereka berhasil merangkai semua masalah standar dan teknik, dan ahli melakukannya (antara lain: pemrosesan gambar, manajemen input, sprite, penyegaran layar yang dioptimalkan, audio, keacakan, kecerdasan buatan).

Meskipun buku tidak terstruktur di sekitar bagian, seharusnya begitu. Ada peralihan fokus yang jelas dari bab 15 dan seterusnya. Bab 15, "Pemrograman Permainan Jaringan", mewakili pergeseran pasti ke tingkat yang lebih tinggi, dengan penulis baru yang menulis. Setelah memperkenalkan masalah utama seputar game berbasis jaringan (topologi koneksi, latensi, sinkronisasi status game), buku tersebut mengembangkan tiruan Risiko, game papan strategi klasik (disebut Dominasi dalam buku). Dominasi hanyalah alasan untuk mengembangkan kerangka kerja game baru yang menangani kelas umum game multi-pengguna yang mendukung jaringan. Lima bab terakhir ini cukup sulit, dan saya sangat curiga pembaca tanpa latar belakang komunikasi data tidak akan merasa nyaman dengan argumen yang lebih teknis. Tetapi tidak mungkin Anda bisa melewati bab-bab ini:Mereka berisi penanganan yang sangat menyeluruh terhadap masalah kritis de-sinkronisasi status game dan masalah latensi, serta sejumlah solusi yang semakin canggih.

Buku ini diakhiri dengan bab tentang optimasi kode dan bab yang menarik tentang desain FRED, klon "Doom" yang ditulis dalam Java! FRED menggunakan ray casting (ya, di Jawa) untuk mencapai nuansa klasik "Doom", dan teknik inti ini dijelaskan secara mendetail.

Singkatnya, Pemrograman Game Java Mutakhir sangat baik. Tulisannya jelas dan langsung ke sasaran. Perangkat lunak yang penulis kembangkan memiliki kualitas yang sangat tinggi. Daftarnya jelas dan dapat dibaca, dan saya tidak tahu tentang Anda, tetapi setelah membaca program orang lain selama 15 tahun, saya tidak menganggap keterbacaan kode sumber sebagai barang mewah).

Mengembangkan Applet Hiburan Java

Mengembangkan Applet Hiburan Java adalah buku yang sangat mengecewakan. Jika penerbit memberi Anda 400 halaman untuk menjejalkan semua yang Anda ketahui tentang pemrograman game di Java (oke, oke, "Java En-ter-tain-ment App-lets"), maka Anda tidak memulai dengan bab yang mengulangi, sampai membosankan, Sejarah Jawa. Atau lanjutkan dengan "Java Fundamentals" (Bab 4), pengulangan yang benar-benar berlebihan dari dasar-dasar bahasa (variabel, Unicode, ekspresi, komentar, aliran kontrol, objek, kelas, paket - sebut saja!). Penulis masih tidak curiga bahwa dia mungkin berfokus pada subjek yang salah sepenuhnya, jadi di Bab 5, "Teknik Lebih Lanjut," dia menjelaskan dengan array, vektor, string, pengecualian, multithreading, applet. Menjadi sedikit lebih panas adalah Bab 6, "Grafik, Suara, dan Acara." Tetapi Anda juga akan kesulitan menemukan referensi untuk pemrograman game di sini. Sebaliknya, berharga halaman real estate dikhususkan untuk membawa Anda tidak kurang dari 13 screenshot setengah halaman dari hasil sepele draw3DRect(), drawOval(), drawArc()dan sejenisnya!

Di tengah-tengah buku (Bab 7, halaman 219) kami memiliki tampilan pertama dari beberapa kode permainan Java , dalam hal ini, percobaan pada permainan kartu Solitaire (jelas, permainan kartu harus sesuai musim). Desain game, implementasi game, dan keterbacaan daftar semuanya sangat rendah dibandingkan dengan aspek yang sama dari buku lain dalam ulasan ini sehingga jelas bahwa Developing Java Entertainment Applet memiliki masalah.

Beberapa pernyataan luar biasa yang dibuat oleh penulis, dan kecerobohan umum atau penyalahgunaan istilah yang memiliki arti sejernih kristal, hanya membantu menenggelamkan buku ini sebelum sempat berlayar. Mekanisme manajemen tata letak AWT dikritik sebagai berikut: "Cara penanganan tata letak cukup gagal. Bukan karena tidak masuk akal dan bukan untuk alasan yang baik, tetapi masih gagal." API jaringan Java juga tidak sesuai dengan keinginan penulis: "Cara Java menghubungkan ke lokasi lain di Internet rusak, dan meskipun tidak sepenuhnya tidak dapat digunakan, ia pasti tidak berfungsi dengan baik dalam keadaannya saat ini." Aneh, saya akan bersumpah bahwa orang lain dan saya sendiri berhasil membuat hal-hal yang cukup menarik dengan API yang sama (Penjelajah web,DAMPP - lihat Sumberdaya di bawah untuk referensi ke JavaWorld saya sebelumnyaartikel tentang topik ini). Kutipan terakhir itu keluar dari Bab 8, "Multiplayer Gaming," di mana kita tetap diperlihatkan "contoh kecil yang bodoh" (mengutip buku) dalam bentuk aplikasi obrolan. (Contoh lain dari bahasa yang sulit saya telan dalam buku ini adalah "melekatkan di kepala Anda" (hlm. 283), "dan meludahi sesuatu di atas soket" (hlm. 284), mengutip hanya dua.)

Apakah tidak ada hal baik yang bisa dikatakan tentang buku ini? Sebenarnya, ada: Bab 2, "Prinsip Desain Game", adalah analisis menarik tentang apa yang membuat game bagus menjadi bagus. Di sini penulis bersinar dengan mengidentifikasi beberapa aspek yang dimiliki semua game bagus, seperti antarmuka game yang dirancang dengan baik, kejujuran (level realisme), kemampuan penyesuaian, AI, dan sebagainya. Bab berikutnya, "Desain Game Beraksi", menganalisis beberapa game nyata dan menyoroti penggunaan elemen desain game yang baik. Kemudian ada satu bab besar (Bab 9) yang dikhususkan untuk studi dan penggunaan Gamelet Toolkit (kerangka permainan domain publik, yang ditulis oleh Mark Tacchi, yang menerima hadiah JavaCup International). Tiga bab ini adalah satu-satunya bagian dari buku yang bernilai kertas tempat mereka dicetak, saya khawatir.

Ajari Diri Anda Pemrograman Game Internet dengan Java

Ulasan komparatif itu sulit karena jarang ada dua (atau lebih) buku dalam kategori yang persis sama. Ajari Diri Anda Pemrograman Game Internet dengan Java , menurut sampul belakangnya, ditujukan kepada pengguna dalam kategori "baru" hingga "biasa". Pemula, dengan kata lain.